docs: Linux device permissions (udev rule for Bolt + Bluetooth-direct)#149
Conversation
Explains hidraw permission requirements and how to install the bundled udev rule (70-openlogi.rules) for both USB Bolt receiver and Bluetooth-direct (uhid) transports. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Greptile SummaryThis PR adds
Confidence Score: 5/5Safe to merge — documentation and a udev rules file with no code changes; the rules follow standard systemd uaccess patterns and have been tested on Ubuntu/GNOME Wayland. The change is purely additive: a new udev rules file and a README section. The udev rules are technically correct (separate matchers for USB and Bluetooth-direct, appropriate uaccess tagging, static_node for uinput). The only notable trade-off — uinput access for all local-seat users — is an intentional and well-understood consequence of supporting the evdev event hook, not an oversight. No files require special attention; the udev rules file is the more novel piece but its logic is sound. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Logitech HID device connected] --> B{Transport type?}
B -->|USB / Bolt receiver| C[Device on USB tree<br/>ATTRS idVendor == 046d]
B -->|Bluetooth-direct| D[Device on uhid virtual bus<br/>KERNELS == 0005:046D:star]
C --> E[Rule 1: KERNEL==hidraw-star<br/>TAG+=uaccess]
D --> F[Rule 2: KERNEL==hidraw-star<br/>TAG+=uaccess]
E --> G[logind applies ACL to /dev/hidrawN]
F --> G
G --> H[openlogi runs without sudo]
I[uinput node] --> J[Rule 3: KERNEL==uinput<br/>TAG+=uaccess + static_node]
J --> K[ACL granted on /dev/uinput]
Reviews (2): Last reviewed commit: "docs: add udev/70-openlogi.rules (refere..." | Re-trigger Greptile |
The README install step was committed without the rules file itself. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Part of #148 (Finding 1).
On Linux every
hidrawnode isroot:root 0600by default, so the CLI/devicelayer fails with
PermissionDenied (os error 13)without a udev rule. The commonATTRS{idVendor}=="046d"rule covers the Bolt receiver (USB) but notBluetooth-direct devices: those hang off
uhid(
/devices/virtual/misc/uhid/0005:046D:XXXX.NNNN), which exposes no USBidVendorattribute — the vendor only appears in the HID id0005:046D:*.This adds:
udev/70-openlogi.ruleswith both matchers + auinputrule for the event hook.Uses systemd
uaccess(group-free; works under X11 and Wayland/GNOME).Verified on Ubuntu 26.04 / GNOME Wayland: after reload + power-cycling the device,
the node becomes
crw-rw----+withCURRENT_TAGS=…:uaccess:andopenlogi listruns without sudo — for both the Bolt and Bluetooth-direct paths.
Docs-only; no code changes.