From 2aa1a265bc3c028711e37639440be3bd4041916c Mon Sep 17 00:00:00 2001 From: Nick Rosbrook Date: Fri, 24 Jan 2025 15:42:38 -0500 Subject: [PATCH] udev: add input/by-{id,path} symlinks for hidraw devices Take some of the same rule structure from 60-persistent-input.rules, and apply it to hidraw devices in 60-persistent-hidraw.rules. Since one of the motivations for this is being able to easily reference FIDO tokens, add a special case when ID_FIDO_TOKEN==1, and add 'fido' to the symlink. --- rules.d/60-persistent-hidraw.rules | 26 ++++++++++++++++++++++++++ rules.d/meson.build | 1 + 2 files changed, 27 insertions(+) create mode 100644 rules.d/60-persistent-hidraw.rules diff --git a/rules.d/60-persistent-hidraw.rules b/rules.d/60-persistent-hidraw.rules new file mode 100644 index 00000000000..c22db7d8b85 --- /dev/null +++ b/rules.d/60-persistent-hidraw.rules @@ -0,0 +1,26 @@ +# do not edit this file, it will be overwritten on update + +ACTION=="remove", GOTO="persistent_hidraw_end" +SUBSYSTEM!="hidraw", GOTO="persistent_hidraw_end" +KERNEL!="hidraw*", GOTO="persistent_hidraw_end" + +SUBSYSTEMS=="usb", ENV{ID_BUS}=="", IMPORT{builtin}="usb_id" +SUBSYSTEMS=="usb", IMPORT{builtin}="path_id" + +ENV{ID_BUS}=="", GOTO="persistent_hidraw_bus_end" + +# by-id links +ATTRS{bInterfaceNumber}=="|00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-hidraw" +ATTRS{bInterfaceNumber}=="?*", ATTRS{bInterfaceNumber}!="00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$attr{bInterfaceNumber}-hidraw" + +# add a more readable 'fido' link for devices with ID_FIDO_TOKEN==1 +ENV{ID_FIDO_TOKEN}=="?*", ATTRS{bInterfaceNumber}=="|00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-fido" +ENV{ID_FIDO_TOKEN}=="?*", ATTRS{bInterfaceNumber}=="?*", ATTRS{bInterfaceNumber}!="00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$attr{bInterfaceNumber}-fido" + +LABEL="persistent_hidraw_bus_end" + +# by-path +ENV{ID_PATH}=="?*", SYMLINK+="input/by-path/$env{ID_PATH}-hidraw" +ENV{ID_PATH_WITH_USB_REVISION}=="?*", SYMLINK+="input/by-path/$env{ID_PATH_WITH_USB_REVISION}-hidraw" + +LABEL="persistent_hidraw_end" diff --git a/rules.d/meson.build b/rules.d/meson.build index 85d314c35cc..4ee964c630a 100644 --- a/rules.d/meson.build +++ b/rules.d/meson.build @@ -15,6 +15,7 @@ rules = [ '60-infiniband.rules', '60-input-id.rules', '60-persistent-alsa.rules', + '60-persistent-hidraw.rules', '60-persistent-input.rules', '60-persistent-storage-mtd.rules', '60-persistent-storage-tape.rules', -- 2.47.3