我有一个运行 Raspbian 的 Raspberry Pi 4 Model B Rev 1.1USB卡/扬声器连接的。问题是它会在重新启动时移动插槽。在这里,它出现在槽 #3 中:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: UACDemoV10 [UACDemoV1.0], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
然而,之前的重新启动是在插槽 #2 中报告的。
这是一个问题,因为/usr/share/alsa/alsa.conf
包含这些行:
defaults.ctl.card 2
defaults.pcm.card 2
这意味着当前播放例如 mp3 文件mpg123
会失败,直到配置更改为止。
我想可能会引入一个 systemd 服务,它会在重新启动后检查 Alsa 插槽并进行alsa.conf
相应的更改,但是我想知道是否有更优雅的方法来处理重新启动后卡移动(Alsa)插槽?
答案1
要允许声音驱动程序仅在特定索引处加载,请将以下内容添加到/etc/modprobe.d/alsa-base.conf
(或其中的任何其他 .conf 文件):
options snd slots=snd-bcm2835,vc4,vc4,snd-usb-audio
(如果还有另一options snd ...
行,则必须将它们合并。)