Foi assim que acabei por isolar o problema. O Udev verifica a especificação da regra em relação a uma hierarquia de atributos do dispositivo, desde o controlador host USB até o próprio dispositivo. Esses nós diferentes têm uma coleção de atributos que podem ser especificados na regra do udev.
Observe que atributos inválidos ou incorretos são silenciosamente ignorados .
Para ver esses atributos, use o seguinte comando:
udevadm info -q all -a /dev/input/by-id/my-usb-device
Você verá uma série de blocos de atributos, como os seguintes
looking at device '/devices/...':
KERNEL=="event3"
SUBSYSTEM=="input"
DRIVER==""
looking at parent device '/devices/...':
KERNELS=="input23"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="Speed Dragon USB Advanced Audio Device"
ATTRS{phys}=="usb-0000:00:14.0-5/input3"
ATTRS{properties}=="0"
ATTRS{uniq}==""
looking at parent device '/devices/...':
KERNELS=="1-5"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="16"
ATTRS{bMaxPower}=="100mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 4"
ATTRS{bcdDevice}=="0100"
ATTRS{bmAttributes}=="80"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="11"
ATTRS{devpath}=="5"
ATTRS{idProduct}=="8808"
ATTRS{idVendor}=="0d8c"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Speed Dragon"
ATTRS{maxchild}=="0"
ATTRS{product}=="USB Advanced Audio Device"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="removable"
ATTRS{speed}=="12"
ATTRS{urbnum}=="7861"
ATTRS{version}==" 2.00"
Correspondendo meu dispositivo ao último bloco, percebi que minha regra do udev deveria ter especificado SUBSYSTEMS=="usb"
em vez de SUBSYSTEM=="usb"
. O que é uma triste descoberta para fazer: (
Quando a regra correta for especificada:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="8808", MODE="0666"
E o Udev foi recarregado por meio de:
sudo udevadm control --reload-rules
E o dispositivo foi desconectado / conectado, as permissões corretas foram registradas.