Difference between revisions of "Accessing Devices without Sudo"

From eLinux.org
Jump to: navigation, search
(Porting the TCT content.)
 
(added a note about ATTRS being case sensitive)
 
(One intermediate revision by the same user not shown)
Line 42: Line 42:
 
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.  
 
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.
+
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"
 
  ATTRS{idProduct}=="[VENDOR_ID]", ATTRS{idVendor}=="[PRODUCT ID]", MODE="666", GROUP="plugdev"
Line 59: Line 59:
  
 
Any member of the ''plugdev'' group should now be able to run OpenOCD without using ''sudo''.
 
Any member of the ''plugdev'' group should now be able to run OpenOCD without using ''sudo''.
 +
 +
[[Category:TinCanTools]]
 +
[[Category:OpenOCD]]

Latest revision as of 19:13, 13 September 2015

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.