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

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


On Wed, May 25, 2022 at 07:31:40PM +0300, Vladislav Zavjalov wrote:
> 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?)

- А ENV{...} - это не атрибут устройства, а переменная окружения,
информации об устройстве она не должна нести, если только ее
специально кто-то не установил. Я такой экзотикой никогда не
пользовался, но, наверное, может быть полезно.



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