Как я могу отладить правило UDEV?

Да, таких инструментов много. Один, который я использовал лично, это webmin . Он может делать все, что угодно, через простой и интуитивно понятный веб-интерфейс, включая администрирование пользователей :

enter image description here

Чтобы установить Webmin, вам сначала нужно добавить репозиторий.

deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Затем вам нужно добавить ключ репозитория:

cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

Обновите вашу систему, чтобы Ubuntu проверила наличие нового репозитория:

sudo apt-get update

Вы можете установить его в Ubuntu с помощью

sudo apt-get install webmin

. Затем укажите в браузере https: // localhost: 10000 , чтобы получить к нему доступ (если это не сработает, попробуйте http: // locahost: 10000 ). Я никогда не использовал его в системе Ubuntu или любой другой без учетной записи root, поэтому я не уверен, но вам, возможно, придется включить root , чтобы использовать его.

2
24.09.2018, 02:24
1 ответ

Вот как я в конце концов изолировал проблему. Udev сверяет спецификацию правила с иерархией атрибутов устройства, начиная от хост-контроллера USB и заканчивая самим устройством. Эти разные узлы имеют набор атрибутов, которые можно указать в правиле udev.

Чтобы увидеть выполнение правил, используйте следующую команду:

udevadm control --log-priority=debug
journalctl -f

Если вы не видите свое правило в журналах даже после перезагрузки udev и переустановки устройства, убедитесь, что формат имени файла соответствует ожиданиям udev :99 -name.rules

Чтобы просмотреть события udev, используйте следующую команду:

udevadm monitor --environment

Чтобы просмотреть атрибуты определенного устройства, используйте следующую команду:

udevadm info -q all -a /path/to/device/as/seen/in/aformentioned/logs

Вы увидите ряд блоков атрибутов, таких как следующие

  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"

Сопоставив свое устройство с последним блоком, я в конце концов понял, что в моем правиле udev должно быть указано SUBSYSTEMS=="usb"вместо SUBSYSTEM=="usb". Это печальное открытие:(

После указания правильного правила:

Обратите внимание, что недопустимые или некорректные атрибуты просто игнорируются .

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="8808", MODE="0666"

И Удев перезагрузился через:

sudo udevadm control --reload-rules

И устройство было отключено/подключено, прописаны правильные разрешения.

4
27.01.2020, 22:02

Теги

Похожие вопросы