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でシェアする

イチョウ

2014-11-22 21:18:25 | 日記
資源ごみを捨てに出たのだが、自治会館のイチョウが鮮やかだった。朝のゴミ出しも悪くない。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RaspberryとDAC 8

2014-11-19 23:15:57 | Linux

やっとできた。Volumioに wifi-USB を付けようと2~3日試行錯誤中だったのだ。使ったwifiモジュールはバッファローのWLI-UC-GNと言うもの。

Volumioが立ち上がった状態でWLI-UC-GNを挿しても、何故かなにも起こらない。kernelモジュールがロードされないのだ。仕方ないので、挿した状態で再起動してみると「rt2800usb」とこれに付随するモジュールがロードされる。これなら使えるはずだと試行錯誤を開始したが上手く行かないのだ。


上手く行かない例
root@volumio:~# iwconfig wlan0 essid 106F3F3C800C key s:XXXXXXXXXXXXX(暗号化キー)
root@volumio:~# ip link set wlan0 up
root@volumio:~# ifconfig wlan0 192.168.11.201 up

あれこれ考えたあげく、「Raspbian」OS を入れたSDカードがあることを思い出した。(早く思い出せばよいのだが..)RaspbianではX-windowの起動が可能なのでGUIでwifiの設定ができるし、確か使っていた。
なのでSDカードをUbuntuにマウントして、/etc 以下の設定ファイルを調べることにした。

その結果、次の2ファイルに設定を追加すれば良さそうだと分かった。

ファイル名:/etc/network/interfaces

auto lo
iface lo inet loopback

#auto eth0  ← 起動が遅くなるのでコメントアウトした。
#iface eth0 inet dhcp  ← 同上。

allow-hotplug wlan0  ← ここから追加した。
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet static
address 192.168.11.201
network 192.168.11.0
netmask 255.255.255.0
broadcast 192.168.11.255
gateway 192.168.11.1
dns-nameserver 218.153.1.1


ファイル名:/etc/wpa_supplicant/wpa_supplicant.conf (新規作成)

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="106F3F3C800C"  ← SSID
psk="XXXXXXXXXXXXX"  ← 暗号化キー
proto=RSN
key_mgmt=WPA-PSK  ← 認証方式
pairwise=TKIP    ← 暗号化モード
auth_alg=OPEN
}

これらのファイルを修正・追加後、再起動するとwifiリンクされる。ケーブルが一本減るので使いやすくなる。

volumio@volumio:~$ sudo ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:63932 errors:0 dropped:0 overruns:0 frame:0
TX packets:63932 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8917063 (8.5 MiB) TX bytes:8917063 (8.5 MiB)

wlan0 Link encap:Ethernet HWaddr 00:24:a5:76:d4:b2
inet addr:192.168.11.201 Bcast:192.168.11.255 Mask:255.255.255.0
inet6 addr: 2408:c0:7fff:64d:224:a5ff:fe76:d4b2/64 Scope:Global
inet6 addr: fe80::224:a5ff:fe76:d4b2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8498 errors:0 dropped:1 overruns:0 frame:0
TX packets:1541 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1325302 (1.2 MiB) TX bytes:464285 (453.4 KiB)

volumio@volumio:~$ sudo iwconfig wlan0
wlan0 IEEE 802.11bgn ESSID:"106F3F3C800C"
Mode:Managed Frequency:2.412 GHz Access Point: 16:6F:3F:3C:80:0C
Bit Rate=54 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Link Quality=47/70 Signal level=-63 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:1 Invalid misc:304 Missed beacon:0

volumio@volumio:~$ lsmod
Module Size Used by
nfsd 243497 2
ipv6 304050 32
snd_soc_hifiberry_dac 2075 0
snd_soc_pcm5102a 1378 1
bcm2708_dmaengine 5108 1
virt_dma 2273 1 bcm2708_dmaengine
snd_soc_pcm512x 8913 0
snd_soc_wm8804 7821 0
arc4 1683 2
snd_soc_bcm2708_i2s 5474 2
regmap_mmio 2806 1 snd_soc_bcm2708_i2s
rt2800usb 16832 0
snd_soc_core 131292 5 snd_soc_pcm512x,snd_soc_wm8804,snd_soc_hifiberry_dac,snd_soc_pcm5102a,snd_soc_bcm2708_i2s
rt2800lib 67495 1 rt2800usb
snd_compress 8060 1 snd_soc_core
rt2x00usb 11488 1 rt2800usb
regmap_i2c 1645 3 snd_soc_pcm512x,snd_soc_wm8804,snd_soc_core
regmap_spi 1897 3 snd_soc_pcm512x,snd_soc_wm8804,snd_soc_core
rt2x00lib 44267 3 rt2x00usb,rt2800lib,rt2800usb
snd_pcm 81593 3 snd_soc_core,snd_soc_hifiberry_dac
snd_page_alloc 5156 1 snd_pcm
snd_seq 53769 0
snd_seq_device 6473 1 snd_seq
snd_timer 20133 2 snd_pcm,snd_seq
mac80211 315860 3 rt2x00lib,rt2x00usb,rt2800lib
cfg80211 209281 2 mac80211,rt2x00lib
leds_gpio 2059 0
crc_ccitt 1529 1 rt2800lib
led_class 3688 2 leds_gpio,rt2x00lib
rfkill 19134 2 cfg80211
snd 61291 7 snd_soc_core,snd_timer,snd_pcm,snd_seq,snd_seq_device,snd_compress
spi_bcm2708 4728 0
i2c_bcm2708 3997 0
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

田耕転

2014-11-16 10:41:22 | 水田
田んぼを耡っている。1枚目終了。今日は、後2枚の予定。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ミーコ 日向ぼっこ

2014-11-15 08:20:34 | ペット
何処に隠れたの?と思ったら、カーランの裏側でした。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする