Target:
Create a new udev rule which will:
Stop the Jack Daemon if DAC power off
Start the Jack Daemon if DAC power on
Identify USB DAC Card:
Power on USB DAC
Check the name of USB DAC
ls -l /proc/asound/
lrwxrwxrwx 1 root root 5 11月 22 17:55 AUDIO -> card2
dr-xr-xr-x 3 root root 0 11月 16 18:43 card0
dr-xr-xr-x 4 root root 0 11月 16 18:43 card1
dr-xr-xr-x 4 root root 0 11月 22 17:55 card2
-r–r–r– 1 root root 0 11月 16 16:36 cards
-r–r–r– 1 root root 0 11月 16 18:43 devices
lrwxrwxrwx 1 root root 5 11月 16 18:43 Generic -> card0
-r–r–r– 1 root root 0 11月 16 18:43 hwdep
-r–r–r– 1 root root 0 11月 16 18:43 modules
dr-xr-xr-x 2 root root 0 11月 16 18:43 oss
-r–r–r– 1 root root 0 11月 16 18:43 pcm
card2 is the name of DAC Card
ls /sys/class/sound
card0 card2 controlC1 hwC0D0 pcmC0D3p pcmC1D0p pcmC2D0p
card1 controlC0 controlC2 hwC1D0 pcmC1D0c pcmC2D0c timer
Get the Attr List of card2
udevadm info /sys/class/sound/card2
P: /devices/pci0000:00/0000:00:12.0/usb2/2-4/2-4:1.0/sound/card2
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:12.0/usb2/2-4/2-4:1.0/sound/card2
E: SUBSYSTEM=sound
E: USEC_INITIALIZED=523137960408
E: ID_PATH=pci-0000:00:12.0-usb-0:4:1.0
E: ID_PATH_TAG=pci-0000_00_12_0-usb-0_4_1_0
E: ID_FOR_SEAT=sound-pci-0000_00_12_0-usb-0_4_1_0
E: SOUND_INITIALIZED=1
E: ID_VENDOR_FROM_DATABASE=Actions Semiconductor Co., Ltd
E: ID_VENDOR=ACTIONS
E: ID_VENDOR_ENC=ACTIONS
E: ID_VENDOR_ID=10d6
E: ID_MODEL=USB_AUDIO
E: ID_MODEL_ENC=USB\x20AUDIO
E: ID_MODEL_ID=dd01
E: ID_REVISION=0100
E: ID_SERIAL=ACTIONS_USB_AUDIO_4512482ADF0FEEEE
E: ID_SERIAL_SHORT=4512482ADF0FEEEE
E: ID_TYPE=audio
E: ID_BUS=usb
E: ID_USB_INTERFACES=:010100:010200:030000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=snd-usb-audio
E: ID_ID=usb-ACTIONS_USB_AUDIO_4512482ADF0FEEEE-00
E: SYSTEMD_WANTS=sound.target
E: TAGS=:systemd:seat:
udevadm info --path=/sys/class/sound/card2 --attribute-walk
looking at device '/devices/pci0000:00/0000:00:12.0/usb2/2-4/2-4:1.0/sound/card2':
KERNEL=="card2"
SUBSYSTEM=="sound"
DRIVER==""
ATTR{number}=="2"
ATTR{id}=="AUDIO"
looking at parent device '/devices/pci0000:00/0000:00:12.0/usb2/2-4/2-4:1.0':
KERNELS=="2-4:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="snd-usb-audio"
ATTRS{supports_autosuspend}=="1"
ATTRS{bInterfaceProtocol}=="00"
ATTRS{authorized}=="1"
ATTRS{bNumEndpoints}=="00"
ATTRS{bInterfaceClass}=="01"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bAlternateSetting}==" 0"
looking at parent device '/devices/pci0000:00/0000:00:12.0/usb2/2-4':
KERNELS=="2-4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{devpath}=="4"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bmAttributes}=="c0"
ATTRS{quirks}=="0x0"
ATTRS{tx_lanes}=="1"
ATTRS{product}=="USB AUDIO"
ATTRS{busnum}=="2"
ATTRS{bcdDevice}=="0100"
ATTRS{bNumConfigurations}=="1"
ATTRS{manufacturer}=="ACTIONS"
ATTRS{bNumInterfaces}==" 4"
ATTRS{bDeviceClass}=="00"
ATTRS{configuration}==""
ATTRS{maxchild}=="0"
ATTRS{devnum}=="20"
ATTRS{serial}=="4512482ADF0FEEEE"
ATTRS{bMaxPower}=="300mA"
ATTRS{idVendor}=="10d6"
ATTRS{bDeviceSubClass}=="00"
ATTRS{urbnum}=="25748"
ATTRS{idProduct}=="dd01"
ATTRS{version}==" 1.00"
ATTRS{removable}=="unknown"
ATTRS{authorized}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="12"
ATTRS{rx_lanes}=="1"
ATTRS{lATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
looking at parent device '/devices/pci0000:00/0000:00:12.0/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{idProduct}=="0001"
ATTRS{version}==" 1.10"
ATTRS{tx_lanes}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bDeviceClass}=="09"
ATTRS{removable}=="unknown"
ATTRS{authorized_default}=="1"
ATTRS{bDeviceSubClass}=="00"
ATTRS{interface_authorized_default}=="1"
ATTRS{busnum}=="2"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bMaxPower}=="0mA"
ATTRS{quirks}=="0x0"
ATTRS{speed}=="12"
ATTRS{bcdDevice}=="0419"
ATTRS{maxchild}=="5"
ATTRS{idVendor}=="1d6b"
ATTRS{devpath}=="0"
ATTRS{manufacturer}=="Linux 4.19.0-9-amd64 ohci_hcd"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{rx_lanes}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{urbnum}=="511"
ATTRS{bNumConfigurations}=="1"
ATTRS{product}=="OHCI PCI host controller"
ATTRS{serial}=="0000:00:12.0"
ATTRS{bConfigurationValue}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{devnum}=="1"
ATTRS{authorized}=="1"
# Get kernel prop
udevadm monitor --kernel --property --subsystem-match=usb
monitor will print the received events for:
KERNEL - the kernel uevent
KERNEL[1083.319560] add /devices/pci0000:00/0000:00:12.0/usb2/2-4 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:12.0/usb2/2-4
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/002/002
DEVTYPE=usb_device
PRODUCT=10d6/dd01/100
TYPE=0/0/0
BUSNUM=002
DEVNUM=002
SEQNUM=2112
MAJOR=189
MINOR=129
Write your udev rule based on selected attrs
cat /opt/local/libexec/udev/rules.d/99-AD-86d.rules
ACTION=="add",SUBSYSTEM=="sound",ATTR{id}=="AUDIO",RUN+="/opt/local/bin/add_ad_86d.sh"
ACTION=="remove",SUBSYSTEM=="usb",ATTRS{idVendor}=="10d6",ATTRS{idProduct}=="dd01",RUN+="/opt/local/bin/remove_ad_86d.sh"