From 42cdfb0b821805ccb9b980fa0a1f07faca99cf00 Mon Sep 17 00:00:00 2001 From: Vadim Mikhailov Date: Sun, 23 Feb 2025 12:23:56 -0800 Subject: [PATCH] Fix udev rules to support Linux kernels 6.8+ Linux kernels before had devpath containing `usbN-portM`. Newer kernels just use `port` symlink instead, which breaks our udev rules. Changing glob from `*-port*` to `*port*` makes it work for both old and new kernels. Closes issues #608, #609. --- README.md | 6 +++--- udev/rules.d/52-usb.rules | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b7b96eb..230ee6d 100644 --- a/README.md +++ b/README.md @@ -250,7 +250,7 @@ Then, add udev rules like below to file `/etc/udev/rules.d/52-usb.rules` SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2001" # Linux 6.0 or later (its ok to have this block present for older Linux kernels): SUBSYSTEM=="usb", DRIVER=="usb", \ - RUN="/bin/sh -c \"chmod -f 666 $sys$devpath/*-port*/disable || true\"" + RUN="/bin/sh -c \"chmod -f 666 $sys$devpath/*port*/disable || true\"" Note that for USB3 hubs, some hubs use different vendor ID for USB2 vs USB3 components of the same chip, and both need permissions to make uhubctl work properly. @@ -264,8 +264,8 @@ If you don't like wide open mode `0666`, you can restrict access by group like t SUBSYSTEM=="usb", DRIVER=="usb", MODE="0664", GROUP="dialout" # Linux 6.0 or later (its ok to have this block present for older Linux kernels): SUBSYSTEM=="usb", DRIVER=="usb", \ - RUN+="/bin/sh -c \"chown -f root:dialout $sys$devpath/*-port*/disable || true\"" \ - RUN+="/bin/sh -c \"chmod -f 660 $sys$devpath/*-port*/disable || true\"" + RUN+="/bin/sh -c \"chown -f root:dialout $sys$devpath/*port*/disable || true\"" \ + RUN+="/bin/sh -c \"chmod -f 660 $sys$devpath/*port*/disable || true\"" and then add permitted users to `dialout` group: diff --git a/udev/rules.d/52-usb.rules b/udev/rules.d/52-usb.rules index edc8352..a5f0f82 100644 --- a/udev/rules.d/52-usb.rules +++ b/udev/rules.d/52-usb.rules @@ -20,5 +20,5 @@ SUBSYSTEM=="usb", DRIVER=="usb", MODE="0664", GROUP="dialout" # This is for Linux 6.0 or later (ok to keep this block present for older Linux kernels): SUBSYSTEM=="usb", DRIVER=="usb", \ - RUN+="/bin/sh -c \"chown -f root:dialout $sys$devpath/*-port*/disable || true\"" \ - RUN+="/bin/sh -c \"chmod -f 660 $sys$devpath/*-port*/disable || true\"" + RUN+="/bin/sh -c \"chown -f root:dialout $sys$devpath/*port*/disable || true\"" \ + RUN+="/bin/sh -c \"chmod -f 660 $sys$devpath/*port*/disable || true\""