chiark / gitweb /
sound: include ALSA sound card id in /dev/snd/by-id/ links
authorLennart Poettering <lennart@poettering.net>
Mon, 9 Nov 2009 21:11:29 +0000 (22:11 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 9 Nov 2009 21:11:29 +0000 (22:11 +0100)
If two USB sound cards that have the same serial number are plugged in
make sure the by-id/ device node symlink is unique at least during
runtime, by including the ALSA card id in the symlink name.

This is a followup to ed1b2d9fc7.

rules/rules.d/60-persistent-alsa.rules

index a5206fdbb15a1b794dde55774390793e8c8362d3..624f57adec09b22ca0db5924975b668c17cb0bdd 100644 (file)
@@ -5,9 +5,9 @@ SUBSYSTEM!="sound", GOTO="persistent_alsa_end"
 KERNEL!="controlC[0-9]*", GOTO="persistent_alsa_end"
 
 SUBSYSTEMS=="usb", ENV{ID_MODEL}=="", IMPORT{program}="usb_id --export %p"
-SUBSYSTEMS=="usb", ENV{ID_IFACE}="$attr{bInterfaceNumber}"
-ENV{ID_SERIAL}=="?*", ENV{ID_IFACE}=="?*", SYMLINK+="snd/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_IFACE}"
-ENV{ID_SERIAL}=="?*", ENV{ID_IFACE}=="", SYMLINK+="snd/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}!="", ENV{ID_IFACE}="$attr{bInterfaceNumber}"
+ENV{ID_SERIAL}=="?*", ENV{ID_IFACE}=="?*", SYMLINK+="snd/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_IFACE}-$attr{../id}"
+ENV{ID_SERIAL}=="?*", ENV{ID_IFACE}=="", SYMLINK+="snd/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$attr{../id}"
 
 ENV{ID_PATH}=="", IMPORT{program}="path_id %p"
 ENV{ID_PATH}=="?*", SYMLINK+="snd/by-path/$env{ID_PATH}"