Настроить udev для изменения разрешений на устройстве USB HID?

У меня есть USB-весы, USB HID. В настоящее время, когда он подключен, разрешения разрешают только суперпользователю доступ к нему. Как настроить udev, чтобы кто-нибудь мог получить доступ к этому устройству? У меня есть идентификаторы поставщика и продукта, но я бы хотел сопоставить их с типом HID.

Прямо сейчас у меня возникают проблемы с поиском любого существующего правила, которое применимо к этому (среди прочего, я нашел «hidraw» в /lib/udev/rules.d и /etc/udev/rules.d).

20
задан 30 November 2010 в 23:05

5 ответов

В случае, если вам необходимо изменить (как и я) разрешения ttyACM0, это мои настройки:

KERNEL=="ttyACM0", MODE="0777"

Не удалось, когда я попытался указать поставщика и идентификатор продукта. Я не уверен почему.

0
ответ дан 30 November 2010 в 23:05

Просто для краткости:

Вы можете фильтровать по:

  • idVendor
  • idProduct
  • серийный
[ 119] И используйте:

== Сравните на равенство.

! = Сравните по неравенству.

= Назначить значение ключу. Ключи, представляющие список, сбрасываются, и назначается только это единственное значение.

+ = Добавить значение к ключу, который содержит список записей.

: = окончательно назначить значение ключу; запретить любые последующие изменения.

Вы можете указать конкретному новому устройству новый путь в / dev / ...
Пример:

KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ATTRS{serial}=="1234567", GROUP="cdrom", OWNER="user28", MODE="0640", SYMLINK+="myhid"

Результат:

Вы можете получить доступ к устройство легко через '/ dev / hiddevx' или через '/ dev / myhid', каждый пользователь в группе 'cdrom' может читать данные с устройства. Владелец 'user28' может читать и писать.

или простейший:

KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", MODE="0666"

Результат: Каждый пользователь может получить доступ к каждому устройству hiddevice от поставщика 0x16c0

Подробнее см .: Документы

0
ответ дан 30 November 2010 в 23:05

Если это устройство HIDRAW, вам необходимо

chmod 0666 /dev/hidrawX

где X - номер скрытого устройства, например, hidraw0. Вы можете сделать

ls /dev/hid*

, чтобы увидеть список :) Или просто сделать

sudo chmod 0666 /dev/hidraw*

для настройки для всех устройств hidraw, вероятно, не рекомендуется.

0
ответ дан 30 November 2010 в 23:05

Обычно это делается путем добавления в /etc/udev/rules.d файла с именем 50-usb-scale.conf с таким содержанием:

SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"

Где HEX1 и HEX2 заменяются на поставщика и идентификатор продукта соответственно.

Чтобы сопоставить тип интерфейса вместо этого, вы можете попробовать заменить ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2" соответствием для bInterfaceClass, являющегося 03 (HID):

SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"

Но имейте в виду, что поймают мышей и клавиатуры тоже.

0
ответ дан 30 November 2010 в 23:05

Обновление / уточнение в Ubuntu 18.04:

Ответ Киса Кука близок, но требует 18 изменений для работы в 18.04 (текущий выпуск и только один, на котором я это тестировал).

  1. Найдите своего idVendor и idProduct с помощью lsusb .
    • Это будут 2 шестнадцатеричных значения после «ID», разделенных двоеточием. Я добавляю сканер. lsusb дал мне:
      Bus 001 Device 011: ID 04b8:014a Seiko Epson Corp. 
  2. Когда root добавит файл в /etc/udev/rules.d
    • ] Что-то вроде 50-usb-epsonscanner.rules
    • Расширение должно быть ".rules" & nbsp;
  3. В этом файле добавить:
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTR{idProduct}=="014a", MODE="0666"
    Но с вашими шестнадцатеричными значениями idVendor и idProduct.
    • Обратите внимание, что это «ATTRS», а не «ATTR».
  4. Повторный вход. Нет необходимости перезагружаться.
0
ответ дан 30 November 2010 в 23:05

Другие вопросы по тегам:

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