On Linux, our Java software may requires superuser privileges to communicate with your USB drivers. You can give the desired software superuser priveleges with the sudo command, like this:
sudo java -jar denkovi_software
...but sudo prompts the user for the root password. Suppose you want to allow a user to run the software without a root password, or you just don't want to type sudo each time you run the software. This guide will demonstrate how to configure Ubuntu Linux to allow a particular user to run the desired software 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
For example the vendor ID and product ID for the USB 4 Relay Board v2 are as follows:
idVendor = 04D8 idProduct = 00DF
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.
ATTRS{idProduct}=="[VENDOR_ID]", ATTRS{idVendor}=="[PRODUCT ID]", MODE="666", GROUP="plugdev"
For the USB 4 Relay Board v2, the text should look like this:
ATTRS{idProduct}=="00DF", ATTRS{idVendor}=="04D8", MODE="666", GROUP="plugdev"
On older Ubuntu installations you may need to use SYSFS instead of ATTRS, like this:
SYSFS{idProduct}=="00DF", SYSFS{idVendor}=="04D8", 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 java -jar... denkovi software without using sudo.