Get access to USB device on Linux (libusb-1.0)?
Asked Answered
B

1

9

I am writing a small program to communicate with a specific USB HID product (identified by vendor and product IDs), using libusb-1.0 on Linux. Right now, I have to run the program as root because "libusb requires write access to USB device nodes". Is there a way to change the permissions on the device I need so that I don't need to run my program as root?

Brazen answered 29/11, 2010 at 4:20 Comment(0)
G
12

On modern Linux systems, udevd (man 7 udev) creates the device nodes for USB devices when they're plugged in. Add a udev rule that matches your device (eg. you could match by USB Vendor and Product IDs), and sets the OWNER / GROUP / MODE of the device node.

The best approach is probably to create a new group for users who should be able to access the device, then set that as the group owner in the udev rule. You may also need to use MODE to ensure that it has group read/write permissions. Eg. your rule will probably look something like:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="ffee", ATTRS{idProduct}=="5a5a", MODE="0660", GROUP="foobar"
Grinder answered 30/11, 2010 at 3:1 Comment(3)
This didn't work on me until I added quotation marks around "0660"Mehitable
Concur with the above comment. Quotes required around the "0660" for this to work. I submitted an edit to the original answer but, alas, it was rejected as being too minor :/Vanillic
@phil-lavin: I don't know why your change was rejected, but I've applied it anyway.Grinder

© 2022 - 2024 — McMap. All rights reserved.