我有一台装有 Ubuntu 的计算机,它连接了多个 USB 声卡。我可以通过编写以下命令在其中之一中播放声音:
aplay -D plughw:1,0 sound.mp3
aplay -D plughw:2,0 sound.mp3
问题是“1,0”值会根据 USB 声卡插入的顺序而变化。例如,我需要永久地将某个 USB 声卡分配给插头 3,0。即使只连接了一个声卡。
我一直遵循这个指南: http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/
在这里:/etc/udev/rules.d/99-vmware-scsi-udev.rules
我有
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="0102", SYMLINK+="ardu"
而且它似乎有效,因为如果我输入:
ls -l /dev/ardu
我得到:
lrwxrwxrwx 1 root root 12 sep 5 01:32 /dev/ardu -> input/event5
并且仅当插入特定声卡时才会返回此消息。
现在,如果我输入:
aplay -D /dev/ardu sound.mp3
未找到声卡。我做错了什么?
答案1
已在 CL 的评论中解决。
基本上,按照这个网址教程的说明进行操作,只需按照相应的章节(编写 udev 规则 -识别两个相同的音频设备):http://alsa.opensrc.org/Udev
最后,我将每个 USB 永久分配给一个 USB 声卡,并且 USB 不会随着重置而改变。
我可以这样做:
$ aplay -D hw:Room1 something.wav
$ aplay -D hw:Room2 something.wav
Room1 是永久连接到 usb1 的 USB 声卡,Room2 与另一个 usb 相同。
使用时-D default:Room1
环绕声出现问题,但-D hw:Room1
没有,可能是由于我的个人.asoundrc
文件。
让它与集线器一起工作是一件非常痛苦的事情。我最终从指南中更改了 2 件事:我确实将文件设置/etc/udev/rules.d/85-my-usb-audio.rules
为比当前 .rules 文件更高的数字(当前 .rules 文件就像99-something.rules
,所以我这样做了100-my-usb-audio.rules
)。
每次在 .rules 文件中发生更改后,我都会重新设置:
sudo udevadm control --reload-rules
其余部分与指南完全一样。