Stingray's ブログ

米作りと趣味の電子工作

RaspbianとDAC

2014-11-29 20:36:42 | Linux

Raspbian でも「Raspberry Pi model A/B 用 DAC カード」を使うことが出来ないかと考え始めた。
Volumio でも十分(と言うか至れり尽くせり)なのだが、自分でプログラムを書いてみたくなるのだ。

Volumioの設定ファイルを参考に、DACカードのkernelモジュールが組み込まれるように設定する。


pi@raspberrypi ~ $ sudo vi /etc/modules


# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

#snd-bcm2835   ← コメントアウト
snd_soc_bcm2708  ← 以下5行追加
snd_soc_bcm2708_i2s
bcm2708_dmaengine
snd_soc_pcm5102a
snd_soc_hifiberry_dac

「:wq」で書き込み。再起動する。

pi@raspberrypi ~ $ sudo shutdown -r now

再起動後、sshで再接続する。
接続する時に Xのポートフォワード設定をしておくと後で役に立つ。


isih@ishi-Pri-Ser:~$ ssh -X pi@192.168.11.201  ← 「-X」はフォワード設定
pi@192.168.11.201's password:
Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
pi@raspberrypi ~ $

kernelモジュールを確認してみる。

pi@raspberrypi ~ $ lsmod
Module Size Used by
snd_soc_hifiberry_dac 2075 0    ← 組み込まれた
snd_soc_pcm5102a 1378 1     ← 組み込まれた
bcm2708_dmaengine 5108 1     ← 組み込まれた
virt_dma 2273 1 bcm2708_dmaengine
arc4 1683 2
rt2800usb 16720 0
rt2800lib 67495 1 rt2800usb
crc_ccitt 1529 1 rt2800lib
rt2x00usb 11492 1 rt2800usb
rt2x00lib 44267 3 rt2x00usb,rt2800lib,rt2800usb
mac80211 315594 3 rt2x00lib,rt2x00usb,rt2800lib
cfg80211 209273 2 mac80211,rt2x00lib
snd_soc_bcm2708_i2s 5474 2     ← 組み込まれた
regmap_mmio 2806 1 snd_soc_bcm2708_i2s
rfkill 19138 2 cfg80211
snd_soc_core 131268 3 snd_soc_hifiberry_dac,snd_soc_pcm5102a,snd_soc_bcm2708_i2s
regmap_spi 1897 1 snd_soc_core
snd_pcm 81593 2 snd_soc_core,snd_soc_hifiberry_dac
snd_page_alloc 5156 1 snd_pcm
regmap_i2c 1645 1 snd_soc_core
snd_compress 8076 1 snd_soc_core
snd_seq 53769 0
snd_timer 20133 2 snd_pcm,snd_seq
snd_seq_device 6473 1 snd_seq
leds_gpio 2059 0
led_class 3688 2 leds_gpio,rt2x00lib
snd 61291 6 snd_soc_core,snd_timer,snd_pcm,snd_seq,snd_seq_device,snd_compress


「snd_soc_bcm2708」がないようだが先へ進む。
デバイスファイルを確認してみる。


pi@raspberrypi ~ $ ls -l /dev/snd/
合計 0
drwxr-xr-x 2 root root 60 11月 29 02:04 by-path
crw-rw---T 1 root audio 116, 0 11月 29 02:04 controlC0
crw-rw---T 1 root audio 116, 16 11月 29 02:04 pcmC0D0p  ← PCMデバイスができている。
crw-rw---T 1 root audio 116, 1 1月 1 1970 seq
crw-rw---T 1 root audio 116, 33 1月 1 1970 timer
pi@raspberrypi ~ $


音楽を聴くために何を使うかだが、「rhythmbox」をインストールする。

pi@raspberrypi ~ $ sudo apt-get install rhythmbox
  略
http://mirrordirector.raspbian.org/raspbian/pool/main/r/rhythmbox/rhythmbox-plugins_2.97-2.1_armhf.deb の取得に失敗しました 404 Not Found
E: いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してみてください。

アップデートしろと怒られたので。。。

pi@raspberrypi ~ $ sudo apt-get update
  略
無視 http://mirrordirector.raspbian.org wheezy/rpi Translation-ja
無視 http://mirrordirector.raspbian.org wheezy/rpi Translation-en
7,102 kB を 1分 13秒 で取得しました (96.0 kB/s)
パッケージリストを読み込んでいます... 完了

再度、「rhythmbox」のインストールにチャレンジする。

pi@raspberrypi ~ $ sudo apt-get install rhythmbox
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libelf1 libgail-3-0
これを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
at-spi2-core avahi-daemon bind9-host freepats gcc-4.8-base geoip-database gir1.2-atk-1.0 gir1.2-clutter-1.0 gir1.2-cogl-1.0
gir1.2-coglpango-1.0 gir1.2-freedesktop gir1.2-gconf-2.0 gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gnomekeyring-1.0
gir1.2-gst-plugins-base-0.10 gir1.2-gstreamer-0.10 gir1.2-gtk-3.0 gir1.2-javascriptcoregtk-3.0 gir1.2-json-1.0

  略

rhythmbox-data (2.97-2.1) を設定しています ...
rhythmbox (2.97-2.1+b1) を設定しています ...
gir1.2-peas-1.0 (1.4.0-2) を設定しています ...
zeitgeist-core (0.9.0.1-1) を設定しています ...
rhythmbox-plugins (2.97-2.1+b1) を設定しています ...
menu のトリガを処理しています ...
python-support のトリガを処理しています ...
pi@raspberrypi ~ $
pi@raspberrypi ~ $ rhythmbox &  ← 「rhythmbox」をコンカレント起動。
(UbuntuなどのLinuxを使用していれば「rhythmbox」が画面上に現れる)


  
しかし、実際に再生しようとすると Segmentation fault してしまう。困ったものだ。
しかたないので、aplay にて再生してみる。


pi@raspberrypi ~ $ aplay 12\ -\ SYMPHONY\ NO9\ \"GO\ IN\'\ HOME\".wav  ← 「\」はエスケープシーケンス
再生中 WAVE '12 - SYMPHONY NO9 "GO IN' HOME".wav' : Signed 16 bit Little Endian, レート 44100 Hz, ステレオ
pi@raspberrypi ~ $

これは再生された。それではと、24Bit 96kHzのファイルを試してみると再生されない。

pi@raspberrypi ~ $ aplay 1-0002691665.wav
再生中 WAVE '1-0002691665.wav' : Signed 24 bit Little Endian in 3bytes, レート 96000 Hz, ステレオ
aplay: set_params:1145: hw params のインストールに失敗しました:
ACCESS: RW_INTERLEAVED
FORMAT: S24_3LE
SUBFORMAT: STD
SAMPLE_BITS: 24
FRAME_BITS: 48
CHANNELS: 2
RATE: 96000
PERIOD_TIME: 125000
PERIOD_SIZE: 12000
PERIOD_BYTES: 72000
PERIODS: 4
BUFFER_TIME: 500000
BUFFER_SIZE: 48000
BUFFER_BYTES: 288000
TICK_TIME: 0
pi@raspberrypi ~ $

取りあえず 16Bit 44.1kHzのファイルは再生することができた。
今日はここまでか。。。
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« イチョウ | トップ | RaspbianとDAC2 »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Linux」カテゴリの最新記事