Running the Expert E-coder on Linux

I purchased the Expert E-coder box to use with my SunSDR2 DX transceiver. It's a USB device that provides a number of tactile controls that work with the ExpertSDR software.

When I first plugged it into a USB port on my Linux Mint 20 box, nothing happened. I could see that it was detected and a device was set up for it in /dev, but ExpertSDR wasn't connecting to it. I e-mailed Yuri at NSI Communications, where I bought it, and he instructed me to fill out a support request on their Web site. I did so, and the next day (nice!) received a reply from Expert on how to fix the problem. The solution was to run two Bash commands to set permissions and group ownership on the device:

sudo chmod 664 /dev/hidraw*
sudo chgrp plugdev /dev/hidraw*

That did work, and I was happy to add the e-coder to my system. I put those two lines in a script and added a rule in my sudo configuration file that let me run it without needing to type the password. Then I added a line to the ExpertSDR startup script that ran the e-coder script whenever I launched the software, and all was well.

But I wasn't completely satisfied with that. The problem I saw was that the script changed the permissions and group for all the human interface devices (mouse, keyboard, and more), not just for the e-coder. I hadn't detected that it caused any problems, but I was uneasy about making changes that could have unknown effects.

My Linux User Net led me to the solution. Johnathon, KI7UEZ, had recently talked about how to use UDEV rules to map USB devices to specific /dev devices, and had posted details on our Linux User Net group at groups.io. I contacted him on the Net and arranged to get in touch via e-mail to see whether he could help me work out a UDEV rule that would apply only to the e-coder device – which he graciously agreed to do.

After doing a lot of research on the Web and discussing it with Johnathon, I was able to come up with a rule that does exactly what I want: it sets permissions and group ownership for only the e-coder, leaving all the other /dev/hidraw devices unaffected. The result was a file, /etc/udev/rules.d/99-ecoder.rules, containing one rule:

SUBSYSTEM=="hidraw", ATTRS{idProduct}=="0003", ATTRS{idVendor}=="1fc9", 
SYMLINK+="expert_ecoder", GROUP="plugdev", MODE="0664"

Now, when the computer boots up, the e-coder is detected and the correct permissions and group ownership are set – and I'm a happy operator!