<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 10, 2024 at 8:24 AM Daniel Spannbauer <<a href="mailto:ds@marco.de">ds@marco.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Am 09.10.2024 um 20:55 schrieb Andrei Borzenkov:<br>
> 09.10.2024 17:02, Daniel Spannbauer wrote:<br>
>> Hello,<br>
>><br>
>><br>
>> thanks for the response.<br>
>><br>
>> My rule is in "55-my-rules.rules"<br>
>><br>
><br>
> For SUBSYSTEM=="tty" the usb_id is called in 60-serial.rules.<br>
<br>
<br>
Thats the trick, thanks.<br>
<br>
<br>
I moved my rules to 98-.... and this line works:<br>
<br>
SUBSYSTEM=="tty", KERNEL=="ttyACM[0-9]*", <br>
ENV{ID_USB_INTERFACE_NUM}=="02", ATTRS{idVendor}=="1dfb", <br>
ATTRS{idProduct}=="0010", SYMLINK+="2a"<br>
<br>
<br>
It also works with SUBSYSTEMS=="usb".<br>
<br>
But the following still doesn't work:<br>
<br>
SUBSYSTEM=="tty", KERNEL=="ttyACM[0-9]*", ATTRS{bInterfaceNumber}=="02", <br>
ATTRS{idVendor}=="1dfb", ATTRS{idProduct}=="0010", SYMLINK+="2a<br></blockquote><div><br></div><div>I suspect this is because idVendor and bInterfaceNumber are from different levels of the hierarchy – one belongs to the USB device parent, the other belongs to its usb_interface child.</div><div><br></div><div>ATTRS is "sticky" – it only does the upward search *once* per rule, so e.g. after it finds bInterfaceNumber on the 'usb_interface' level, it will expect all other attributes to be there as well. I think the same applies to ENVS.<br></div><div><br></div><div>So if you need to gather sysfs attributes from multiple levels, you probably need to use separate rules to copy them into ENV one-by-one, either using ATTRS directly or using IMPORT{parent} or something.</div><div><br></div><div>I suppose that is why most of the information is already being duplicated as ENV by the stock rules to begin with – because ENV is easier to import from multiple layers of parents.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
And how can I find out, which value comes with which rules so I can set <br>
my rules at the right time?<br></blockquote><div><br></div><div>I grepped my ~/src/systemd/src for "ID_USB_INTERFACE_NUM" and saw it defined in udev-builtin-usb_id.c, then I grepped /lib/udev/rules.d for "usb_id". Generally safest to place your rules no earlier than 80-*, I guess.</div></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">Mantas Mikulėnas</div></div></div>