[devel] Помогите разобраться с правилами udev

Vladislav Zavjalov slazav на altlinux.org
Ср Май 25 19:31:40 MSK 2022


On Wed, May 25, 2022 at 04:57:19PM +0300, Ruslandh wrote:
> Создаю такой файл udev (для отладки)
> 
> # udev rules for setting correct configuration and pairing on tethered 
> iPhones
> ATTR{idVendor}!="05ac", GOTO="ipheth_rules_end"
> 
> # Execute pairing program when appropriate
> SUBSYSTEM=="usb", ENV{ID_V4L_PRODUCT}!="", ENV{COLORD_DEVICE}="0",\ 
> ENV{COLORD_KIND}="", RUN+="echo "Yes"> /tmp/yes"
> #ACTION=="add", SUBSYSTEM=="net", ENV{ID_USB_DRIVER}=="ipheth",\ 
> SYMLINK+="iphone", RUN+="ipheth-pair"
> 
> LABEL="ipheth_rules_end"

Тут еще есть условие ENV{ID_V4L_PRODUCT}!="", а такого поля в
ваших логах я не вижу. Зачем это условие было добавлено?

Я не большой специалист по udev, но мне всегда казалось,
что он очень прямолинеен: пишешь условие, если оно выполняется,
то и правило исполняется.

Ну и еще пара общих вещей про правила udev rules (я плохо
чувствую, насколько такие вещи общеизвестны, прошу прощения, если пишу
тривиальное):
- При подключении у вас возникает целое дерево usb-устройств,
  надо написать такие условия, чтобы выбрать нужное.
- Разные атрибуты устройств удобно смотреть командой
  udevadm info -a -p /sys/bus/usb/devices/...
- ATTR и ATTRS это разные ключи (действуют на одно устройство
  и на устройство со всеми его родителями)
- операторы == и = - это разные вещи (зачем, например, у
  вас в этом тестовом примере есть =, если вы только хотите запустить
  echo?)



Подробная информация о списке рассылки Devel