Javascript restriction in Trixie

Dec 07, 2025 Last reply: 7 months ago 14 Replies

I just set up another Trixie install for a Pi2Bv1.1, so armv7, for use with an Owon vds1022 USB oscilloscope. I have an older install (bookworm) on a separate microSD card which works correctly, but the card is too small (8GB) to allow useful working space. The new install is less than a year newer than the working one.



The new install allows installation of Florentbr's software found at GitHub but when the software is run it gets stuck in a loop and can't connect to the 'scope:



bob@raspberrypi:~/OWON-VDS1022-1.1.5-cf19 $ sudo owon-vds-tiny env: Linux, Java 25.0.1 arm app dir: /opt/owon-vds-tiny user dir: /root/.owon-vds-tiny locale: en_US, en_US, true WARNING: A restricted method in java.lang.System has been called WARNING: java.lang.System::load has been called by ch.ntb.usb.LibusbJava in an unnamed module (file:/opt/owon-vds-tiny/lib/ch.ntb.usb-0.5.9.jar) WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module WARNING: Restricted methods will be blocked in a future release unless native access is enabled



ch.ntb.usb.USBException: LibusbJava.usb_claim_interface: Device or resource busy at com.owon.uppersoft.vds.core.usb.CDevice.open(CDevice.java:91) at com.owon.uppersoft.vds.core.usb.CDevice.getDevices(CDevice.java:300) at com.owon.uppersoft.dso.source.usb.USBSourceManager.refreshUSBPort(USBSourceManager.java:79) at com.owon.uppersoft.dso.source.comm.detect.USBLoopChecker.checkUSBDevice(USBLoopChecker.java:74) at com.owon.uppersoft.dso.source.comm.USBDaemonHelper.onNotConnecting(USBDaemonHelper.java:35) at com.owon.uppersoft.vds.machine.InfiniteDaemonTiny0.onNotConnecting(InfiniteDaemonTiny0.java:37) at com.owon.uppersoft.dso.source.comm.Flow.run(Flow.java:79) at com.owon.uppersoft.dso.global.ControlAppsTiny$1.run(ControlAppsTiny.java:38)



that never seems to stop.



The warning prompted me to try running under sudo, but that made no difference.



On closer inspection, it's not clear the warning has any relevance to the "device or resource busy" message. Busy isn't the same as restricted.



If anybody's got a suggestion please post!



Thanks for reading,



bob prohaska


That's Java, not Javascript.

From various searching it seems this error is to do with something else already having grabbed the port. Could be an old run of the app that hasn't properly stopped, a desktop app (eg GNOME's Nautilus file manager likes to grab MTP devices, which prevents digiKam downloading photos) or a system service (eg if appears as a HID device, maybe the system USB keyboard driver grabs it, or a storage device that got automounted).

Depending on what kind of device it appears as (serial, keyboard, mass storage, network, ...) see if you can work out what other app might have grabbed it. ('sudo lsof' is handy here, if it appears as a device node that you can grep for)

Theo

Have you done that?

I'm not saying it *will* help (it's been a while since I did anything with Java) but it *might*.

formatting link

It only says it's a warning, not an error.

After a fashion, yes. I tried appending

--enable-native-access=ALL-UNNAMED on the command line, but it made no difference.

Clearly, the restriction is new(ish) and there's no obvious reason to think that's the right place put the option. The references I found on-line to this change date from 2025, the application was last updated in 2022 IIRC.

Thanks for writing!

bob prohaska

[apologies for the wide lines]

Theo <theom+ snipped-for-privacy@chiark.greenend.org.uk> wrote:

Sudo lsof is loquatious, but not obviously informative. These tests were on a Pi5 running up-to-date Bookworm, but the behavior is outwardly the same as Trixie on Pi2.

With the 'scope connected but the application not running the status light slow flashes red and sudo lsof | grep owon reports:

bob@raspberrypi:~/Downloads/owon/OWON-VDS1022-1.1.5-cf19$ sudo lsof | grep -i owon lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc Output information may be incomplete. bash 835101 bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 bash 835909 bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 sudo 835956 root cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 grep 835957 bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 sudo 835958 root cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 lsof 835959 root cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 lsof 835960 root cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 bob@raspberrypi:~/Downloads/owon/OWON-VDS1022-1.1.5-cf19$ If I run own-vds-tiny on the command line, the 'scope reports no available usb and I see:

bob@raspberrypi:~/Downloads/owon/OWON-VDS1022-1.1.5-cf19$ sudo lsof | grep -i owon lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc Output information may be incomplete. bash 835101 bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 bash 835909 bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 owon-vds- 836040 bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 owon-vds- 836040 bob rtd DIR 8,2 4096 2 / owon-vds- 836040 bob txt REG 8,2 1346480 131065 /usr/bin/bash owon-vds- 836040 bob mem REG 8,2 3048928 131563 /usr/lib/locale/locale-archive owon-vds- 836040 bob mem REG 8,2 1651408 132074 /usr/lib/aarch64-linux-gnu/libc.so.6 owon-vds- 836040 bob mem REG 8,2 199896 137511 /usr/lib/aarch64-linux-gnu/libtinfo.so.6.4 owon-vds- 836040 bob mem REG 8,2 27028 145279 /usr/lib/aarch64-linux-gnu/gconv/gconv-modules.cache owon-vds- 836040 bob mem REG 8,2 202912 131471 /usr/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 owon-vds- 836040 bob 0u CHR 136,19 0t0 22 /dev/pts/19 owon-vds- 836040 bob 1u CHR 136,19 0t0 22 /dev/pts/19 owon-vds- 836040 bob 2u CHR 136,19 0t0 22 /dev/pts/19 owon-vds- 836040 bob 255r REG 8,2 71 1831442 /opt/owon-vds-tiny/launch java 836041 bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 java 836041 bob mem REG 8,2 22296 1831447 /opt/owon-vds-tiny/lib/libusb-0.1.so.4 java 836041 bob mem REG 8,2 52136 1831448 /opt/owon-vds-tiny/lib/libusbJava.so java 836041 bob 4r REG 8,2 2622148 1831449 /opt/owon-vds-tiny/lib/owon-vds-tiny-1.1.5-cf19.jar java 836041 bob 6r REG 8,2 58910 1831444 /opt/owon-vds-tiny/lib/ch.ntb.usb-0.5.9.jar java 836041 bob 7r REG 8,2 259083 1831445 /opt/owon-vds-tiny/lib/gson-2.7.0.jar java 836041 bob 8r REG 8,2 720702 1831446 /opt/owon-vds-tiny/lib/jxl-2.6.6.jar java 836041 836042 java bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 java 836041 836042 java bob mem REG 8,2 22296 1831447 /opt/owon-vds-tiny/lib/libusb-0.1.so.4 java 836041 836042 java bob mem REG 8,2 52136 1831448 /opt/owon-vds-tiny/lib/libusbJava.so java 836041 836042 java bob 4r REG 8,2 2622148 1831449 /opt/owon-vds-tiny/lib/owon-vds-tiny-1.1.5-cf19.jar java 836041 836042 java bob 6r REG 8,2 58910 1831444 /opt/owon-vds-tiny/lib/ch.ntb.usb-0.5.9.jar java 836041 836042 java bob 7r REG 8,2 259083 1831445 /opt/owon-vds-tiny/lib/gson-2.7.0.jar java 836041 836042 java bob 8r REG 8,2 720702 1831446 /opt/owon-vds-tiny/lib/jxl-2.6.6.jar java 836041 836043 GC\x20Thr bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 java 836041 836043 GC\x20Thr bob mem REG 8,2 22296 1831447 /opt/owon-vds-tiny/lib/libusb-0.1.so.4 java 836041 836043 GC\x20Thr bob mem REG 8,2 52136 1831448 /opt/owon-vds-tiny/lib/libusbJava.so java 836041 836043 GC\x20Thr bob 4r REG 8,2 2622148 1831449 /opt/owon-vds-tiny/lib/owon-vds-tiny-1.1.5-cf19.jar java 836041 836043 GC\x20Thr bob 6r REG 8,2 58910 1831444 /opt/owon-vds-tiny/lib/ch.ntb.usb-0.5.9.jar java 836041 836043 GC\x20Thr bob 7r REG 8,2 259083 1831445 /opt/owon-vds-tiny/lib/gson-2.7.0.jar java 836041 836043 GC\x20Thr bob 8r REG 8,2 720702 1831446 /opt/owon-vds-tiny/lib/jxl-2.6.6.jar java 836041 836044 G1\x20Mai bob cwd DIR 8,2 4096 774245 /home/bob/Downloads/owon/OWON-VDS1022-1.1.5-cf19 ....

The output appears to be looping, but I'm not sure it's repeating exactly.

I'll admit this makes no sense to me, if you see a clue please point it out.

The man page for lsof notes support for x86-based Linux 2.1.72 and up; I'd guess that's been extended to ARM, but if not lsof might not be the right diagnostic. Thanks for writing!

bob prohaska

True, but if you $(SEARCH_ENGINE_OF_CHOICE) for it you will find that there is a suggestion that some things may not work in the situations that trigger the warning.

It's surprising how often clutching at straws yields results!

What I'm looking for is something having grabbed the USB device. This is hard to specify without knowing how the OWON does its USB, but for example if it was serial I'd 'lsof | grep /dev/tty' and look for things using the /dev/ttyUSB0 or /devttyACM0 device the OWON probably uses.

Since the OWON app has failed to grab the USB you're looking for other apps that have grabbed it, ie not at the OWON app.

Theo

OOI I discovered a weird thing IF I have a raspberry PI PICO plugged into my desktop as a power supply and running code , then my PC does not detect when the samsung mobile phone is plugged in...unless I unplug the PI first...

My friend also reports weird s*it with his (PI's) USB. I think it's not as rock solid as we sometimes assume.

When something gives a warning that says 'this thing probably won't work', it pays to pay heed, even if it doesn't immediately fail stop.

Indeed!

On the subject of trying random things, the one Java+USB weirdness I know about (using the Altera JTAG stack, which is mostly C++ but some higher level tools are in Java) is fixed via installing the libudev0 package.

Seemingly the JTAG tools try to use the bindings for libudev but an old version and then try something less reliable if they aren't found. I've found that symlinking /usr/lix/x86_64-linux-gnu/libudev.so.1 to libudev.so.0 fixes that - only just discovered there's a 'libudev0' package that does it properly.

I doubt this is the OP's problem though.

Theo

Another debugging trick is to run your app under strace:

strace -ft -o strace.log <whatever command>

That outputs a huge logfile which takes a bit of picking through. What you're looking for is when it tries to access the USB nodes and fails. Maybe that gives some clues as to where the error is coming from.

eg strace -ft -o strace.log picocom /dev/ttyUSB0

has a lot of stuff but it says:

15875 11:16:22 openat(AT_FDCWD, "/dev/ttyUSB0", O_RDWR|O_NOCTTY|O_NONBLOCK) = -1 ENOENT (No such file or directory) 15875 11:16:22 write(2, "\r\nFATAL: ", 9) = 9 15875 11:16:22 write(2, "cannot open /dev/ttyUSB0: No suc"..., 51) = 51 15875 11:16:22 write(2, "\r\n", 2) = 2 15875 11:16:22 exit_group(1) = ? 15875 11:16:22 +++ exited with 1 +++

which tells me it couldn't open the /dev/ttyUSB0 device because it doesn't exist, and then puts a FATAL message on the console. This error is correct because I have no USB serial devices plugged into this machine.

Theo

It turns out there's a problem report that resembles mine at

formatting link
it doesn't offer an explicit resolution.

At this point I have Trixie and Bookworm installs that don't connect and a somewhat older Bookworm install that worked out of the box. So far, the one that works is on a 33 bit Pi2.

Thanks to all for trying to help!

bob prohaska

A chance dmesg output reported that owon was associated with tty1. The obvious candidate for conflict was gtkterm, which occupied tty0. Alas, killing gtkterm and removing the ft232 usb-serial adapter didn't fix/change anything.

As an aside, I also tried connecting with the Owon tty using gtkterm. Can't get a rise out of it by tinkering with the speed or sending break. That probably isn't relevant, but it did surprise me a little. I thought at least some garbage would appear if I sent a carriage return.

Thanks for reading,

bob prohaska

I made a copy of the working microSD, booted that and verified it could communicate with the 'scope. Then I invited the system to upgrade and it made about 350 changes to packages. After that, the 'scope couldn't be connected to.

So, clearly, an incompatibility has been introduced by the upgrade.

Is there some way to selectively update and revert when trouble strikes? It isn't something I _have_ to fix, but it might be useful to know now.

Thanks for reading,

bob prohaska

Try lsfd as an alternative

formatting link
. Some other possibilities here
formatting link
snipped-for-privacy@list.wlug.org.nz/thread/O6DBNZP3EDBQUZ6JQ6Z6AQAPCYEMMXSJ/>.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required