Primeiramente, precisamos prefixar /sys
no caminho retornado por udev
, para que o caminho se torne algo como: /sys/devices/pci0000:00/0000:00:1d.0/usb5/5-2
. Então vá para este diretório, e haverá vários arquivos nele. Entre outros, há busnum
e devnum
arquivos, eles contêm esses números "lógicos". Então, no script bash, podemos recuperá-los assim:
devpath='/devices/pci0000:00/0000:00:1d.0/usb5/5-2'
busnum='cat "/sys/$devpath/busnum"'
devnum='cat "/sys/$devpath/devnum"'
# we might want to make busnum and devnum have leading zeros
# (say, "003" instead of "3", and "012" instead of "12")
busnum='printf %03d $busnum'
devnum='printf %03d $devnum'
# now, we can retrieve device data by lsusb -D /dev/bus/usb/$busnum/$devnum
echo "busnum=$busnum, devnum=$devnum"
Observe também que udev
pode retornar esses busnum
e devnum
diretamente: em RUN+="..."
podemos usar as substituições $attr{busnum}
e $attr{devnum}
respectivamente.