We recently got a Joulescope after seeing it at a trade show. We were told that it would run on Linux.
However, it appears that there are only packages for Ubumtu and that a link was provided to buid other versions from source. The git repo is not very clear as to what needs to be done. I’d rather not spend hours looking through and understanding the repo’s content and then trying to build something that might not work.
Is there a howto document that describes what is needed to build for a RHEL 10/Fedora based system? It appears there is a UI portion and a driver of some kind, plus the udev rules, which we already installed.
I was able to just execute the joulescope_laucher file directly and that worked, mostly. I will try the Python method.
However, even though I have the udev rule installed and can see it run using udevadm monitor -uk, I get “insufficient priviliges” and “…jsdrv.device.u.js320.FFH5-driver open failed” message with no target device displayed in the UI when I run it as a normal user. If I use sudo, then everything works fine. Not ideal, but tolerable. If you have any suggestion about what might be wrong here, please let me know. I am using Rocky Linux 10 (RHEL 10).
Other than that, it seems to be working OK and now I will need to learn how to best utilize this device.
Hi @Eugene - It definitely sounds like a permissions issue. I don’t use RHEL, but here is what Claude says:
Glad the UI is running! The “insufficient privileges” / “driver open failed” message with sudo working means the driver is fine, but the udev rule isn’t being applied to the device. udevadm monitor shows that udev sees the device, but not whether our rule matched, so it can look fine even when it isn’t.
On RHEL-family systems, the most common cause is the SELinux label on the rules file. If the file was moved (mv) from your home or Downloads directory rather than copied, it keeps its user_home_t label, and udev isn’t allowed to read it. Please try:
ls -Z /etc/udev/rules.d/72-joulescope.rules
sudo restorecon -v /etc/udev/rules.d/72-joulescope.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=usb --action=add
Then unplug and replug the Joulescope and run the UI as your normal user. Note that reloading the rules alone does not update a device that is already connected. Our instructions should say that, and I’ll update the file.
If it still fails, please post the output of:
lsusb -d 16d0:
ls -l /dev/bus/usb/BBB/DDD
udevadm test $(udevadm info -q path -n /dev/bus/usb/BBB/DDD) 2>&1 | grep -i joulescope
sudo ausearch -m avc -ts recent
Replace BBB/DDD with the Bus and Device numbers from lsusb. That will show whether the rule is being read, whether it matches your JS320, and whether SELinux is blocking access.
The file labeling was correct, not user_home_t, but instead udev_rules_t, according to ls -Z. However, the file owner was incorrect.
I fixed the ownership, then did the other steps you outlined as a precaution. After that, no sudo was required and running joulescope_launcher as a normal user works fine.