This page last changed on Oct 20, 2013 by richardrobert.

Hi,

I'm trying to get my Aeon Labs Z-wave stick on Ubuntu 13.04 to run. My struggle is with the Zwave stick and the serial communication.

WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
gnu.io.NoSuchPortException
at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:269)

I think it has to do with running 64 bits, since I've been getting this error before replacing the librxtxserial.so with the 64-bit version as was hinted in this thread

Zwave rxtxserial

But then the error was

java.lang.UnsatisfiedLinkError: /home/richard/Downloads/OpenRemote-Controller/webapps/controller/WEB-INF/lib/native/librxtxSerial.so: /home/richard/Downloads/OpenRemote-Controller/webapps/controller/WEB-INF/lib/native/librxtxSerial.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) thrown while loading gnu.io.RXTXCommDriver
Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: /home/richard/Downloads/OpenRemote-Controller/webapps/controller/WEB-INF/lib/native/librxtxSerial.so: /home/richard/Downloads/OpenRemote-Controller/webapps/controller/WEB-INF/lib/native/librxtxSerial.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)

I'm a newbie on Linux, so that doesn't help.

So far I have set the log level of the zwave.log and zwave-debug.log both at DEBUG, but I only get messages like:

DEBUG 2013-10-20 20:05:00,282 (Z-Wave): Building Z-Wave command
DEBUG 2013-10-20 20:05:00,306 (Z-Wave): Z-Wave command: nodeId = 4
DEBUG 2013-10-20 20:05:00,306 (Z-Wave): Z-Wave command: command = off

When I activate a switch on the panel - so that seems to work

The zwave.comPort in the zwave config part is set /dev/tty.USB0 and the zwave.commLayer to RXTX and synced.

So far without success, can you help me on my way?

There should be no dot between tty and USB. You can verify the following:

 ls  /dev/ttyUSB0 
Posted by atamariya at Oct 21, 2013 04:36

Hi Anand,

Thanks!

More result than in the past days . In terminal it echoed the same and with a . in between an error message occurred. So I entered this in the config part on openremote and synced, so far without success - still no log. Same error messages about NoSuchPort...

ps...Can't seem to figure out why it should be USB0. Is that always the case?

Posted by richardrobert at Oct 21, 2013 20:12

Based on the error ("wrong ELF class: ELFCLASS32") I would suspect that it is still trying to use 32-bit libraries instead of the 64-bit libs.

The thread you linked to talks about using the 64-bit libraries on Windows (.dll) but on Linux you'd need to replace the corresponding .so libraries to 64-bit versions, have you done that?

Posted by juha at Oct 22, 2013 01:07

Hi Juha,

Thanks, I did. The link in the thread is to a wiki page with a linux 64 bit library, too. So i did that - wrongclass errors have dissappeared. the now the remaining error is gnu.io.NoSuchPortException

Where to look?

Posted by richardrobert at Oct 22, 2013 07:04

Plug out the module and plug it in again. Then use dmesg command to find out what is the exact device name.

Posted by atamariya at Oct 22, 2013 08:11

Hi Anand, i will try, thanks. dmesg gives a lot of info , anything in particular to look for, and do i put the name instead of the '0'?

Thanks!

Posted by richardrobert at Oct 22, 2013 08:48

You are looking for last couple of lines in dmesg output. Another way to test if you are using the right file path, try writing the zwave command directly to the file and you should see some action.

 echo "<zwave command>" > /dev/ttyUSB0
Posted by atamariya at Oct 22, 2013 15:05

Thanks for the reply. I've tried the dmesg | grep -i usb command and the result was a.o.

[ 1202.673788] usb 4-1: cp210x converter now attached to ttyUSB0

That was the last line.

The echo "<zwave command>" /dev/ttyUSB0 gave back <zwave command> (I guess the '>' should not be there?)

The following error remains.

gnu.io.NoSuchPortException at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:269)
at org.openremote.controller.protocol.zwave.ZWaveGatewayRxtx$ZWaveConnectionThread.run(ZWaveGatewayRxtx.java:108)

ps. not sure if it means anything, but when stopping the openremote process the following message appears; I think it has to do with interrupting the process?:

FINER [OpenRemote.Controller.startup.deployer]: Converted controller definition file location from URI '../webapps/controller.xml'
Unhandled Log Messages (may occur due to undefined or incorrect shutdown order):
--------------------------------------------------------------------------------

Posted by richardrobert at Oct 22, 2013 19:39

I've a suspicion that the device you are using doesn't support serial protocol - hence the exception. The echo command was to verify if the drivers are loaded properly. The ">" in the syntax writes the output of echo command to /dev/ttyUSB0. e.g.if PWRON is a valid zwave command, following should power on a device.

 echo "PWRON" > /dev/ttyUSB0
Posted by atamariya at Oct 23, 2013 04:55

In order to test if the proper serial port is selected and eliminate permission problems try the following command:

screen /dev/ttyUSB0 115200

If the command fails with the error message 'Permissin denied ....' you have to adjust file permissions (/dev/ttyS0).
Activate your Z-Wave devices (door sensor, switch...) and you should see some data output. Make sure that the Z-Wave devices are already included to the Z-Wave network by means of Aeon Labs Z-Stick.

Posted by rhitz at Oct 23, 2013 07:34

Hi Rainer,

Also, can we add to the list to do to handle this particular error (configuration error in serial port) better? Showing an obscure gnu.io.NoSuchPortException at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:269) to the user looks horrible. No need to jump on it if you got something else going, and identifying a permission issue if it gets thrown as no such port exception may still be difficult, but let's at least try to handle errors properly.

Something for JIRA right now. Feel free to assign to me if you don't feel like addressing it yourself.

Best regards,

– Juha

Posted by juha at Oct 23, 2013 09:45

Keep rolling into errors...

The hints from Rainer and Anand did not give any result - maybe I did the enrollment the wrong way, but I'm not sure about it. There were no error messages anyway, until suddenly this happened after restarting the openremote controller

#

  1. A fatal error has been detected by the Java Runtime Environment:
    #
  2. SIGSEGV (0xb) at pc=0x00007f65ad12dd9d, pid=3491, tid=140074671036160
    #
  3. JRE version: 6.0_27-b27
  4. Java VM: OpenJDK 64-Bit Server VM (20.0-b12 mixed mode linux-amd64 compressed oops)
  5. Derivative: IcedTea6 1.12.6
  6. Distribution: Ubuntu 12.04 LTS, package 6b27-1.12.6-1ubuntu0.12.04.2
  7. Problematic frame:
  8. C [librxtxSerial.so+0x6d9d] read_byte_array+0x3d
    #
  9. If you would like to submit a bug report, please include
  10. instructions how to reproduce the bug and visit:
  11. https://bugs.launchpad.net/ubuntu/+source/openjdk-6/
  12. The crash happened outside the Java Virtual Machine in native code.
  13. See problematic frame for where to report the bug.
    #

It happens as long as the Zwave stick is in the USB port. If it isn't openremote starts ok. I can include the error log upon request.

Posted by richardrobert at Oct 24, 2013 22:20

Mmm, that is the Java virtual machine itself crashing. Which is caused by the RXTX serial library (there's a workaround to this in running the serial communication as a separate process but it hasn't been productized yet).

Is it a consistent crash? There's not a whole lot we can do about the serial lib itself causing crashes until/unless the above mentioned workaround is used.

Posted by juha at Oct 24, 2013 22:37

Looks like rxtx has it's quirks running on 64-bit linux. Try the suggestions on this thread http://forums.opensuse.org/english/get-technical-help-here/applications/438586-rxtxserial-help-needed-2.html

Posted by atamariya at Oct 25, 2013 06:11

I've tried to reproduce the error with your system configuration (Ubuntu 64 bit ...) and encountered the same error with the RXTX Linux 64 bit library from http://www.cloudhopper.com/opensource/rxtx.

I've installed the RXTX library with the following commands and the problem disappeared.

$ sudo apt-get install librxtx-java
$ cp /usr/lib/jni/librxtxSerial.so <OpenRemote>/webapps/controller/WEB-INF/lib/native/librxtxSerial.so
$ cp /usr/lib/jni/librxtxParallel.so <OpenRemote>/webapps/controller/WEB-INF/lib/native/librxtxParallel.so
Posted by rhitz at Oct 25, 2013 15:48

Briliant! Thanks Rainer.

I got a proper log now. At startup I do receive a warning, but it is not preventing the log to show.

WARNING: RXTX Version mismatch
Jar version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
native lib Version = RXTX-2.2pre2

I'm not sure what is causing this error. I assume I've put a wrong .jar file in a library.

Posted by richardrobert at Oct 25, 2013 20:01

The version mismatch is a "thing" with RXTX, can be ignored under normal circumstances.

Posted by juha at Oct 25, 2013 22:18

This one is 'solved' !

Posted by richardrobert at Nov 02, 2013 15:55

Hi

I have the same problem but in ubuntu 14.02 64 bits and jdk 64

In my case the cloudhopper link is not working

any idea where i can find a 64 bits version librxtxserial to replace the existing in the openremote distribution?

Posted by edito at Dec 01, 2015 20:05

I googled rxtxSerial.dll 64bit and found the following link:

http://www.java2s.com/Code/Jar/r/Downloadrxtxnativewindowsjar.htm

Original post:

http://www.openremote.org/display/forums/Trouble+with+Z+Wave+addition+Aeon+Labs+Zstick+2E?focusedCommentId=22889243#comment-22889243

Posted by niedejb at Dec 07, 2015 20:00
Document generated by Confluence on Jun 05, 2016 09:42