[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