Accessing Devices without Sudo

On Linux, OpenOCD requires superuser privileges to communicate with your USB drivers. You can give OpenOCD superuser priveleges with the sudo command, like this:

sudo openocd [-f ...]

...but sudo prompts the user for the root password. Suppose you want to allow a user to run OpenOCD without a root password, or you just don't want to type sudo each time you run OpenOCD. This guide will demonstrate how to configure Ubuntu Linux to allow a particular user to run OpenOCD for a device without sudo.

Step 1: Add the User to the plugdev Group

Determine if the user is part of the plugdev group with the groups command. Open a terminal window and type:

groups USERNAME

...replacing USERNAME with the name of the user account. The groups command will print a list of all of the user's groups. Look for the group plugdev. If the user is not already a member of plugdev, add the user with the adduser command:

sudo useradd -G plugdev USERNAME

Run groups USERNAME again to verify that the user is now part of plugdev.

Step 2: Determine your Device's Vendor ID and Product ID

The vendor ID and product ID for the Flyswatter and Flyswatter2 are as follows:

idVendor = 0403
idProduct = 6010

For any other device, plug it in, then use the lsusb command to retrieve your hardware's vendor ID and product ID. You will need them below.

Step 3: Add the Device to udev

Now you need to add your hardware to the plugdev group. In the terminal window, navigate to /etc/udev/rules.d and list the contents of the directory.

cd /etc/udev/rules.d
dir

In a fresh installation of Ubuntu 10.04 you should see two files listed: 70-persistent-cd.rules and 70-persistent-net.rules. If you see other files, proceed with caution. If in doubt contact your system administrator. If you are ready to proceed, create a new file in the gedit text editor.

sudo gedit 10-my-usb.rules

You can name this file whatever you want, so long as it ends in ".rules". However, rules files by convention begin with a number. Linux parses rules files in lexical order, and the number makes it easy to see which files will be parsed first. Choosing a low number (like 10, as above) means that your file will be parsed before system rules files.

Add the following text to the file, replacing VENDOR_ID and PRODUCT_ID with the values you found in Step 2 above. Note that he ATTRS{idVendor} and ATTRS{idProduct} are CASE SENSITIVE. Even though they are hexadecimal values, the match is done as a string compare directly against sysfs.