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.

ATTRS{idProduct}=="[VENDOR_ID]", ATTRS{idVendor}=="[PRODUCT ID]", MODE="666", GROUP="plugdev"

For the Flyswatter or Flyswatter2, the text should look like this:

ATTRS{idProduct}=="6010", ATTRS{idVendor}=="0403", MODE="666", GROUP="plugdev"

On older Ubuntu installations you may need to use SYSFS instead of ATTRS, like this:

SYSFS{idProduct}=="6010", SYSFS{idVendor}=="0403", MODE="666", GROUP="plugdev"

Save the file and close it. Now tell Ubuntu to reload udev rules by entering the following in the terminal window:

sudo udevadm trigger

Any member of the plugdev group should now be able to run OpenOCD without using sudo.