Permissions for Serial Tap & I2C/SPI Tap on Linux

Symptoms

Starting the Serial Tap or I2C/SPI Tap plugin and pressing the Capture button yields:

Session started
Cannot start capture: Access is denied.

Details

The permission issues with USB devices is a common problem on Linux. By default, all non-standard devices can only be accessed under the root account. However, there is a way to change permissions based on the device class (e.g., by specifying VID/PID).

Solution

Most Linux distros nowadays run systemd which uses udev as the device manager. Whenever a new device arrival is detected, udev executes all applicable rules which are stored in .rule files under:

/etc/udev/rules.d/

Note

Names of the files under /etc/udev/rules.d/ are normally prefixed by two decimal digits to explicitly specify the order in which rules are applied. In our case, there are no any particular requirements to the rule order; just make sure that no other file overwrites permissions for our devices.

In the directory /etc/udev/rules.d/ create a file called 50-ioninja.rules with the following contents:

# IO Ninja hardware taps

# old VID:PIDs

SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0e26", MODE="0666",  SYMLINK+="ioninja-serial-tap"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0e27", MODE="0666",  SYMLINK+="ioninja-i2c-spi-tap"

# new VID:PIDs

SUBSYSTEMS=="usb", ATTRS{idVendor}=="326f", ATTRS{idProduct}=="0001", MODE="0666",  SYMLINK+="ioninja-serial-tap"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="326f", ATTRS{idProduct}=="0002", MODE="0666",  SYMLINK+="ioninja-i2c-spi-tap"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="326f", ATTRS{idProduct}=="0003", MODE="0666",  SYMLINK+="ioninja-ethernet-tap"

Re-plug the tap, and you shall be able to see the device /dev/ioninja-serial-tap with permissions 0666 (everyone is allowed).

Note

The SYMLINK part in the .rules file above is purely optional and can be omitted. It’s there just for ease of debugging – this way, you always can easily spot your tap inside the /dev/ directory.