如何优雅地应对 Alsa 卡在重新启动时移动插槽的问题

如何优雅地应对 Alsa 卡在重新启动时移动插槽的问题

我有一个运行 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 ...行,则必须将它们合并。)

相关内容