Raspi3で内蔵USB Audioを無効にしてみたが...
とても遠回りな話になるので、結果だけ知りたい人は一番最後をどうぞ。
Raspi3のイヤホンジャックでもノイズは乗るので、内蔵USB-AudioをRaspi1と同じように止める。
pi@raspberrypi:~ $ cat /etc/modprobe.d/blacklist-snd_bcm2835.conf blacklist snd_bcm2835 pi@raspberrypi:~ $ sudo reboot
後刺ししたUSB Audioだけを認識するようになったのだけど...
pi@raspberrypi:~ $ cat /proc/asound/cards 1 [Xmod ]: USB-Audio - Creative Xmod Creative Technology Ltd Creative Xmod at usb-3f980000.usb-1.4, full speed
alsaがダメっぽい。
pi@raspberrypi:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこ とを書いてみようと思います。 | aplay ALSA lib confmisc.c:768:(parse_card) cannot find card '0' ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default aplay: main:722: audio open error: No such file or directory
Card0を見に行ったけどないという言い分。
なるほどUSB AudioはCard1になっている。
pi@raspberrypi:~ $ cat /proc/asound/modules 1 snd_usb_audio
Card 0は予約になっているのかな?
設定を変更しようにも起動しない。
pi@raspberrypi:~ $ sudo amixer controls amixer: Control default open error: No such file or directory
これはできる。
pi@raspberrypi:~ $ aplay -L null Discard all samples (playback) or generate zero samples (capture) default:CARD=Xmod Creative Xmod, USB Audio Default Audio Device sysdefault:CARD=Xmod Creative Xmod, USB Audio Default Audio Device front:CARD=Xmod,DEV=0 Creative Xmod, USB Audio Front speakers surround21:CARD=Xmod,DEV=0 Creative Xmod, USB Audio 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=Xmod,DEV=0 Creative Xmod, USB Audio 4.0 Surround output to Front and Rear speakers surround41:CARD=Xmod,DEV=0 Creative Xmod, USB Audio 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=Xmod,DEV=0 Creative Xmod, USB Audio 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=Xmod,DEV=0 Creative Xmod, USB Audio 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=Xmod,DEV=0 Creative Xmod, USB Audio 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=Xmod,DEV=0 Creative Xmod, USB Audio IEC958 (S/PDIF) Digital Audio Output dmix:CARD=Xmod,DEV=0 Creative Xmod, USB Audio Direct sample mixing device dsnoop:CARD=Xmod,DEV=0 Creative Xmod, USB Audio Direct sample snooping device hw:CARD=Xmod,DEV=0 Creative Xmod, USB Audio Direct hardware device without any conversions plughw:CARD=Xmod,DEV=0 Creative Xmod, USB Audio Hardware device with all software conversions
優先度設定だけか。
ここじゃなさそう。
pi@raspberrypi:~ $ cat /lib/modprobe.d/aliases.conf # These are the standard aliases and dependencies. # This file does not need to be modified. # prevent unusual drivers from appearing as the first sound device ########### options snd-pcsp index=-2 options snd-usb-audio index=-2 options cx88_alsa index=-2 options snd-atiixp-modem index=-2 options snd-intel8x0m index=-2 options snd-via82xx-modem index=-2 # work around other kernel issues ############################################ # The EHCI driver should be loaded before the ones for low speed controllers # or some devices may be confused when they are disconnected and reconnected. softdep uhci-hcd pre: ehci-hcd softdep ohci-hcd pre: ehci-hcd
書き換えてみる。
pi@raspberrypi:~ $ sudo vi /lib/modprobe.d/aliases.conf #options snd-usb-audio index=-2 options snd-usb-audio index=1 pi@raspberrypi:~ $ sudo reboot pi@raspberrypi:~ $ cat /proc/asound/modules 1 snd_usb_audio pi@raspberrypi:~ $ cat /proc/asound/cards 1 [Xmod ]: USB-Audio - Creative Xmod Creative Technology Ltd Creative Xmod at usb-3f980000.usb-1.4, full speed
番号は1のまま。
追っかけたい病になりかかるが、こんなとこで時間使ってもしょうがないので、内蔵ドライバ有効にして設定したら何か吐かれるんじゃないかと再起動。
pi@raspberrypi:~ $ sudo vi /etc/modprobe.d/blacklist-snd_bcm2835.conf pi@raspberrypi:~ $ sudo reboot
pi@raspberrypi:~ $ cat /proc/asound/modules 0 snd_bcm2835 1 snd_usb_audio
pi@raspberrypi:~ $ amixer controls numid=3,iface=MIXER,name='PCM Playback Route' numid=2,iface=MIXER,name='PCM Playback Switch' numid=1,iface=MIXER,name='PCM Playback Volume' numid=5,iface=PCM,name='IEC958 Playback Con Mask' numid=4,iface=PCM,name='IEC958 Playback Default' pi@raspberrypi:~ $ amixer cget numid=3 numid=3,iface=MIXER,name='PCM Playback Route' ; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0 : values=1
アナログ固定になっている。
自動にしたらいいのかな?
pi@raspberrypi:~ $ amixer cset numid=3 0 numid=3,iface=MIXER,name='PCM Playback Route' ; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0 : values=0 pi@raspberrypi:~ $ sudo vi /etc/modprobe.d/blacklist-snd_bcm2835.conf pi@raspberrypi:~ $ sudo reboot
だめ。
ブート時に無効にする。
pi@raspberrypi:~ $ sudo vi /boot/config.txt # Enable audio (loads snd_bcm2835) dtparam=audio=on
にはなっている。
コメントアウトして再起動。
pi@raspberrypi:~ $ cat /proc/asound/modules 1 snd_usb_audio pi@raspberrypi:~ $ amixer controls amixer: Control default open error: No such file or directory
変わらず。
アプローチを変える。Card1はどうなっているのか。
pi@raspberrypi:~ $ ls -l /proc/asound/card0 ls: cannot access /proc/asound/card0: No such file or directory pi@raspberrypi:~ $ ls -l /proc/asound/card1 total 0 -r--r--r-- 1 root root 0 Jun 27 04:05 id dr-xr-xr-x 3 root root 0 Jun 27 04:05 pcm0c dr-xr-xr-x 3 root root 0 Jun 27 04:05 pcm0p -r--r--r-- 1 root root 0 Jun 27 04:05 stream0 -r--r--r-- 1 root root 0 Jun 27 04:05 usbbus -r--r--r-- 1 root root 0 Jun 27 04:05 usbid -r--r--r-- 1 root root 0 Jun 27 04:05 usbmixer pi@raspberrypi:~ $ amixer -c 1 controls numid=4,iface=MIXER,name='PCM Playback Switch' numid=5,iface=MIXER,name='PCM Playback Volume' numid=9,iface=MIXER,name='PCM Capture Source' numid=6,iface=MIXER,name='Line Capture Volume' numid=7,iface=MIXER,name='Mic Capture Volume' numid=8,iface=MIXER,name='Auto Gain Control' numid=3,iface=MIXER,name='Up Down Switch' numid=2,iface=PCM,name='Capture Channel Map' numid=1,iface=PCM,name='Playback Channel Map'
Playback Routeがないな?そんなもの?
pi@raspberrypi:~ $ cat /proc/asound/devices 32: [ 1] : control 33: : timer 48: [ 1- 0]: digital audio playback 56: [ 1- 0]: digital audio capture pi@raspberrypi:~ $ cat /proc/asound/modules 1 snd_usb_audio pi@raspberrypi:~ $ cat /proc/asound/cards 1 [Xmod ]: USB-Audio - Creative Xmod Creative Technology Ltd Creative Xmod at usb-3f980000.usb-1.4, full speed pi@raspberrypi:~ $ cat /proc/asound/pcm 01-00: USB Audio : USB Audio : playback 1 : capture 1
普通に見える。
設定はできる?
pi@raspberrypi:~ $ amixer -c 1 cset numid=3 numid=3,iface=MIXER,name='Up Down Switch' ; type=BOOLEAN,access=rw------,values=1 : values=off pi@raspberrypi:~ $ amixer -c 1 cset numid=3 1 numid=3,iface=MIXER,name='Up Down Switch' ; type=BOOLEAN,access=rw------,values=1 : values=on pi@raspberrypi:~ $ amixer -c 1 cset numid=1 amixer: Control hw:1 element write error: Operation not permitted
こっち方面からじゃないか。
asound.confを作るしかない?
pcm.!default {
type hw
card 1
}ctl.!default {
type hw
card 1
}
なんかイヤだな。
ソースのデフォルト0を書き換えてビルドした人の例。
https://www.crifan.com/resolved_amixer_control_default_open_error_no_such_file_or_directory/
さすがにこれはないか。
お作法的に問題ないalsaのデフォルトを変更する設定ファイルを探す。
pi@raspberrypi:~ $ grep "defaults.pcm.card " -R /usr/share/alsa/alsa.conf defaults.pcm.card 0 pi@raspberrypi:~ $ grep "defaults.pcm.device " -R /usr/share/alsa/alsa.conf defaults.pcm.device 0 pi@raspberrypi:~ $ grep cards.pcm.default /usr/share/alsa/alsa.conf pcm.default cards.pcm.default pcm.sysdefault cards.pcm.default
これを1にしてしまうか、それともUSB Audioロードの番号を1にするか。
USB-Audioのほうには、それっぽいのはなさそう。
pi@raspberrypi:~ $ grep pcm.default -R /usr/share/alsa/cards/USB-Audio.conf USB-Audio."AudioPhile".pcm.default "cards.USB-Audio.Audiophile USB (tm).pcm.default" USB-Audio."Audiophile USB (tm)".pcm.default { USB-Audio.pcm.default { "cards.USB-Audio.pcm.default_playback_dmix_" USB-Audio.pcm.default_playback_dmix_yes { USB-Audio.pcm.default_playback_dmix_no {
書き換える。
pi@raspberrypi:~ $ sudo vi /usr/share/alsa/alsa.conf defaults.ctl.card 1 defaults.pcm.card 1 defaults.pcm.device 1 pi@raspi09:~ $ sudo reboot
来た!
pi@raspberrypi:~ $ amixer controls numid=4,iface=MIXER,name='PCM Playback Switch' numid=5,iface=MIXER,name='PCM Playback Volume' numid=9,iface=MIXER,name='PCM Capture Source' numid=6,iface=MIXER,name='Line Capture Volume' numid=7,iface=MIXER,name='Mic Capture Volume' numid=8,iface=MIXER,name='Auto Gain Control' numid=3,iface=MIXER,name='Up Down Switch' numid=2,iface=PCM,name='Capture Channel Map' numid=1,iface=PCM,name='Playback Channel Map' pi@raspi09:~ $ amixer cset numid=3 numid=3,iface=MIXER,name='Up Down Switch' ; type=BOOLEAN,access=rw------,values=1 : values=on
再生してみる。
pi@raspberrypi:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこ とを書いてみようと思います。 | aplay ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave aplay: main:722: audio open error: No such file or directory
ダメ。
dmixの設定を変えてないかな?
pi@raspberrypi:~ $ cat /usr/share/alsa/alsa.conf | grep dmix defaults.pcm.dmix.max_periods 0 defaults.pcm.dmix.rate 48000 defaults.pcm.dmix.format "unchanged" defaults.pcm.dmix.card defaults.pcm.card defaults.pcm.dmix.device defaults.pcm.device pcm.dmix cards.pcm.dmix pi@raspberrypi:~ $ cat /usr/share/alsa/alsa.conf | grep cards.pcm.dmix pcm.dmix cards.pcm.dmix
関係ない感じ。
再度方針転換。
オーディオデバイスのストリームを直接指定してみる。
pi@raspberrypi:~ $ aplay -l **** List of PLAYBACK Hardware Devices **** card 1: Xmod [Creative Xmod], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 pi@raspberrypi:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこ とを書いてみようと思います。 | aplay -Dhw:1,0 Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono aplay: set_params:1239: Channels count non available
ダメだな。
pi@raspberrypi:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこ とを書いてみようと思います。 | aplay -D plughw:1,0 Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
出た!
最初から、-D plughw:1,1とかにしておけばよかったってことか...
/boot/config.txtとalsa.conf戻してrebootする。
再生。
pi@raspi09:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこを書 いてみようと思います。 | aplay -D plughw:1,0 Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
できんじゃん... orz