На примере моего блутус адаптера:
1) результат udevadm monitor:
1
2
3
4
5
6
|
KERNEL[1266423519.390024] add /devices/pci0000:00/0000:00:1d.0/usb6/6-1 (usb)
KERNEL[1266423519.393739] add /devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0 (usb)
KERNEL[1266423519.393794] add /devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/bluetooth/hci0 (bluetooth)
KERNEL[1266423519.393839] add /devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/usb_endpoint/usbdev6.3_ep81 (usb_endpoint)
|
Выдираю устройство /devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/bluetooth/hci0.
udevadm info --query=all --attribute-walk --path=/devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/bluetooth/hci0
looking at device '/devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/bluetooth/hci0':
KERNEL=="hci0"
SUBSYSTEM=="bluetooth"
DRIVER==""
ATTR{type}=="USB"
ATTR{name}=="whitebook-0"
ATTR{class}=="0x5a010c"
ATTR{address}=="00:aa:bb:cc:dd:ee"
ATTR{features}=="0xffff8ffe9bf90080"
ATTR{manufacturer}=="10"
ATTR{hci_version}=="3"
ATTR{hci_revision}=="3164"
ATTR{inquiry_cache}==""
ATTR{idle_timeout}=="0"
ATTR{sniff_max_interval}=="800"
ATTR{sniff_min_interval}=="80"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0':
KERNELS=="6-1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="btusb"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="03"
ATTRS{bInterfaceClass}=="e0"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{modalias}=="usb:v0A12p0001d3164dcE0dsc01dp01icE0isc01ip01"
ATTRS{supports_autosuspend}=="0"
...
Смотрим, что более менее уникально для этого устройства:
SUBSYSTEM=="bluetooth", DRIVERS=="btusb", ATTR{address}=="00:aa:bb:cc:dd:ee"
(можно было обойтись только ATTR{address}, т.к. он точно уникален для этого девайса, но для примера я взял ещё атрибутов родителей).
Пишем правило /etc/udev/rules.d/z99-my-bluetooth-adapter.rules:
ACTION=="add", SUBSYSTEM=="bluetooth", DRIVERS=="btusb", ATTR{address}=="00:aa:bb:cc:dd:ee", SYMLINK+="my-bluetooth-dongle"
(учти ещё ACTION, его берём из логов udevadm monitor. В большинстве случаев это будет add, для приводов ещё может быть change).
Перетыкаем девайс и любуемся символьной ссылкой /dev/my-bluetooth-dongle на реальный девайс.