使用 udev 规则的 USB 串行设备的持久名称不起作用

使用 udev 规则的 USB 串行设备的持久名称不起作用

我有一台装有 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

其余部分与指南完全一样。

相关内容