Our IT company has been using OpenSUSE Tumbleweed for the past 2 years without issues. However last week we discovered a potetional bug. Our communication with a USB printer via lp0 port no longer works and our Java application reports
No the device node should be the same. Echo works pre-update and after update. But our Java app no longer sees the port hence device.DeviceException: gnu.io.NoSuchPortException.
Oh, so not a hardware or device node issue as such, but related to the application library. Probably best moved to Programming/Scripting category IMHO.
rxtx tries to detect ports on by scanning /dev for files matching any of a set of known-good prefixes, such as ‘ttyS’, ‘ttym’, and since 2.2 ‘ttyUSB’ and so on.
Any ones that exist, are supposed to be good for the current operating system, and that can be read and written are offered back from CommPortIdentifier.getPortIdentifiers(), and only these can be used as ports.
If you wish, you can set the system properties gnu.io.rxtx.SerialPorts and gnu.io.rxtx.ParallelPorts. If either of these is set, then no scanning will be carried out and only the specified ports will be available. You can use this to make one platform look like another, to restrict Java access to ports, or possibly for other reasons. For example
will look kind of like Solaris, if you have created the appropriate device nodes.
A note on Linux port enumeration. We have set most ports aside. Once the number of possible devices started getting into the thousands, checking them all made little sense. Look in RXTXCommDriver.java and search for Linux.
You will see that only /dev/ttyS* is searched but the possible addition ports that can be used are listed under it. Just copy the few you need."
This unfortunately does not work. However we have found out that even ttyS* ports no longer work in our app when launched under normal user. When running our app as root, the device connected to ttyS0 operates normally.
Repeating it over and over again is not going to help. You are the only one who can troubleshoot it. Enable verbose/debug output in your application or may be use strace to find out what fails exactly. It is possible that some operation your program does now requires additional capabilities, but we have no way to guess it.