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.