Переменные udev $attr возвращаются пустыми
Итак, я пытаюсь запустить скрипт bash после подключения контроллера DS4 через Bluetooth. В этом сценарии я использую MAC-адрес контроллера, чтобы проверить срок службы батареи. Я запускаю команду ниже, чтобы получить информацию об устройстве:
udevadm info --name=/dev/input/js0 --attribute-walk
Тогда я получаю соответствующую информацию ниже:
looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/bluetooth/hci0/hci0:70/0005:054C:05C4.0001/input/input0/js0':
KERNEL=="js0"
SUBSYSTEM=="input"
DRIVER==""
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/bluetooth/hci0/hci0:70/0005:054C:05C4.0001/input/input0':
KERNELS=="input0"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="Wireless Controller"
ATTRS{phys}=="00:1a:7d:da:71:13"
ATTRS{properties}=="0"
ATTRS{uniq}=="1c:66:6d:c7:b6:06"
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/bluetooth/hci0/hci0:70/0005:054C:05C4.0001':
KERNELS=="0005:054C:05C4.0001"
SUBSYSTEMS=="hid"
DRIVERS=="sony"
ATTRS{bt_poll_interval}=="4"
ATTRS{country}=="00"
Затем я создал следующее правило, пытаясь передать ATTRS{uniq}
в качестве параметра команды RUN:
ACTION=="add", KERNEL=="js*", ATTRS{name}=="Wireless Controller" RUN+="/usr/local/bin/ds4improve '%p' 000a0a '$attr{uniq}'"
Но $attr{uniq}
возвращается пустым. Я тоже пробовал со значениями name
а также phys
с такими же результатами. Также попытался с помощью %s{uniq}
синтаксис, всегда возвращает пустой, как в примере ниже:
run: '/usr/local/bin/ds4improve '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/bluetooth/hci0/hci0:70/0005:054C:05C4.0001/input/input0/js0' 000a0a '''
Выше приведен фрагмент результатов теста udevadm:
udevadm test -a add $(udevadm info -q path -n /dev/input/js0)
Я понятия не имею, что происходит. Я не думаю, что я использую переменную неправильно, так как я много искал, и примеры показали, что это правильно. Я все еще делаю что-то не так?