Решено: udev ATTR вместо SYSFS не работает (udev давно просил заменить SYSFS на ATTR, заменил - не работает)

Выбор и настройка HardWare

Модератор: Модераторы разделов

FlySnake
Сообщения: 992
ОС: openSUSE

Решено: udev ATTR вместо SYSFS не работает

Сообщение FlySnake »

Есть такое правило:

Код: Выделить всё

KERNEL=="hiddev[0-9]", SUBSYSTEM=="usb", SYSFS{idProduct}=="0100", SYSFS{idVendor}=="04d8", MODE="0666"

В таком виде всё работает. Но при загрузке udev говорит что SYSFS скоро depricated и просит заменить его на ATTR. Меняю:

Код: Выделить всё

KERNEL=="hiddev[0-9]", SUBSYSTEM=="usb", ATTR{idProduct}=="0100", ATTR{idVendor}=="04d8", MODE="0666"

Ворнинг udev проходит, но железка не работает ибо создаётся hiddev с правами 600, а не 666 т.е. правило не работает.
openSUSE 11.4 2.6.37.6-0.20-desktop
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 874
ОС: gentoo

Re: Решено: udev ATTR вместо SYSFS не работает

Сообщение vr13 »

ATTR - атрибуты добавленного node sysfs, а ATTRS - все атрибуты иерархии sysfs для данного устройства

вполне вероятно, что файлов idProduct или idVendor нет в добавленном node (udev, согласно правилу, ищет добавленном ядром node). например, тут нет желаемого:

Код: Выделить всё

$ ls /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/usb/hiddev0
dev  device  power  subsystem  uevent

а выше по иерархии - есть:

Код: Выделить всё

$ ls /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/
7-2:1.0              bDeviceSubClass     configuration  idProduct     remove
authorized           bmAttributes        descriptors    idVendor      serial
avoid_reset_quirk    bMaxPacketSize0     dev            manufacturer  speed
bcdDevice            bMaxPower           devnum         maxchild      subsystem
bConfigurationValue  bNumConfigurations  devpath        power         uevent
bDeviceClass         bNumInterfaces      driver         product       urbnum
bDeviceProtocol      busnum              ep_00          quirks        version

причем поиск идет вверх по иерархии, что позволяет на одной шине иметь зарегистрированными в системе несколько разных устройств
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE

Re: Решено: udev ATTR вместо SYSFS не работает

Сообщение FlySnake »

Спасибо за ответ!
Выходит именно как Вы пишите
QUOTE писал(а):ls ls /sys/devices/pci0000:00/0000:00:02.0/usb2/2-1
2-1:1.0 bDeviceProtocol bNumInterfaces devpath maxchild subsystem
authorized bDeviceSubClass busnum driver power uevent
avoid_reset_quirk bmAttributes configuration ep_00 product urbnum
bcdDevice bMaxPacketSize0 descriptors idProduct quirks version
bConfigurationValue bMaxPower dev idVendor remove
bDeviceClass bNumConfigurations devnum manufacturer speed

idProduct и idVendor содержат ID моего устройства.
Но
QUOTE писал(а):ls /sys/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/usb/hiddev1
dev device power subsystem uevent


Заменил ATTR на ATTRS и всё заработало.

Спасибо сказали: