[SOLVED] OH3: zwave binding Z-Wave Serial Controller Aeotec Z-Stick Gen5 remains offline

I waited for the general release today and have the same problem described on this thread.

Use the workaround I described or open a new thread. Eventually you have more luck than me and someone is able or willing to help.

@HaKuNa is there anything I need to change in terms of the serial port in openHAB or do I literally just install and configure ser2net and the Z-Wave controller will just start working while pointing to /dev/ttyACM0?

no, see port config here

Thanks @HaKuNa. I may give this a shot. In the meantime I have a lead on the issue. If I run openHAB manually as root, the Z-Stick works. So this is definitely some sort of permissions issue even though the openhab user account should have access via the uucp group:

crw-rw---- 1 root uucp 166, 0 Dec 22 11:48 /dev/ttyACM0


I’ll let you know if I figure this out.

Getting closer. I ran the openHAB start.sh manually as the openhab user which brought me to the openHAB console and it spit out this error repeatedly:

openhab> check_group_uucp(): error testing lock file creation Error details:Permission deniedcheck_lock_status: No permission to create lock file.
FAILED TO OPEN: No such file or directory

1 Like

Ok @HaKuNa and @chris I think I figured out what’s wrong. It appears that openHAB 3.0 requires access to /var/lock. On ArchLinux, this is symlinked to /run/lock, which has permissions set to 755 root root so the openhab user cannot access. /run/lock is considered a temp directory and is configured via /usr/lib/tmpfiles.d/legacy.conf, which Systemd uses to create /run/lock in volatile memory at system boot with those permissions. To override these permissions, I was able to copy legacy.conf to /etc/tmpfiles.d and adjust the permissions to 775 root uucp. After rebooting my system, /run/lock now allows the uucp group and the openhab user to access the Z-Stick and my Wave controller shows online. When I look in /run/lock, I now see a LCK…ttyACM0 file for /dev/ttyACM0, the serial port for my Z-Stick.

That said, I still consider this a workaround as I had to override a system default and this was working fine under openHAB 2.5. I’m wondering if there was a regression that now requires openHAB 3.0 to write to /var/lock when it didn’t before.


This is all handled in the nrjavaserial bundle. OH3 uses a newer version and I seem to recall some changes to fix some issues with locking on some variants of linux.

I can confirm that this works. Pi4 and aeotec z-stick. Simple USB hub does the trick

1 Like

it‘s not pi related

well that might be the case Remo. I do not know.

What i`m saying is the combination of OH3 + PI4 + aeotec z-stick does not work out of the box, but does work with a USB hub.

Hi, same here, Opensuse 15.2, I just upgrade from OH 2.5 to 3.0 and my Aeotec Stick doesn’t go online anymore… Everything was working fine before upgrade. I tried with and without the tty symbolic link without any success. Any idea to point me in the good direction are welcome.

If you really have the same issue as described in the 1st post, you have three options. If not, open a new thread as this one here is marked as solved.

Option 1) Use the marked solution (I know it’s a workaround)

Option 2) use this workaround (I have not yet tried it)

Option 3) Wait and hope someone will fix it permanently.

1 Like

Same problem with official docker image openhab/openhab:milestone-alpine. Docker running on Arch Linux host. It worked with OpenHab 2.5.

EDIT: in milestone-alpine x86_64 the java crashed when opening the Z-Wave bridge for configuration. In milestone-debian X86_64, the configuration page opens, however, the log shows No SerialPortIdentifier found for: /dev/ttyACM0. Interestingly, the same setup of /dev/ttyUSB0 for Ebus 3.0.10 (unofficial binding be csowada) works well.

In docker-compose.yml:

      - "/dev/zwave-stick:/dev/ttyACM0" # See /etc/udev.d/rules/ for static naming
      - "/dev/ebus-coupler:/dev/ttyUSB0"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0 -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0"

Within the docker container, I can see that /dev/ttyACM0 is owned by root:uucp with r/w perms and that openhab is member of uucp group.
Unfortunatelly, applying chmod o+rwx -R /var/lock did not help.

I also have a local user and group openhab on Arch Linux host with the same uid and gid as the one used within the container - but no change.

[arch] # cat /etc/group | grep uucp:

[arch] # ls -la /dev/*{ACM,wave}*
crw-rw---- 1 root uucp 166, 0 Jan  1 17:40 /dev/ttyACM0
lrwxrwxrwx 1 root root      7 Jan  1 17:40 /dev/zwave-stick -> ttyACM0

[arch] # ls -la /run/lock
total 0
drwxrwxr-x  5 root uucp   100 Jan  1 17:40 .
drwxr-xr-x 27 root root   820 Jan  1 18:10 ..
drwx------  2 root root    40 Jan  1 17:40 lvm
drwxrwx---  6 root pkcs11 120 Jan  1 17:40 opencryptoki
drwxrwxr-x  2 root uucp    40 Jan  1 17:40 subsys

Thank you, I will probably open a new thread. I was wondering if I will change my Z stick as I discover that is Gen2 that is not supported anymore by Aeotec.

I have had the same challenge with the Aeotec Z-wave stick Gen5 version 1.01 as some of you describe, and maybe found some of the issue…

I started by upgrading my Openhabian 2.5.11 to 3.0.0 on Raspberry PI4, after the upgrade the Z-wave stick attach to a USB-hub was still running online.

However due to other reason I wanted to start from scratch with a clean setup using “openhabian-pi-raspios32-v1.6.2b” this default install version 3.0.0

After the installation I could not make the Z-wave to go online, spending a lot of time reading all the thread on z-wave, without solving my issue.

Ok moving on to next on the list, installing other binding like Netatmo, Network, Deconz, … all working.

Then installing Mosquitto from openHabian Configuration option 23, it did not work…, the log did show something on not access to ZRAM…

Uninstalling ZRAM, and now Mosquitto could be install, back to Z-wave Thing, Disable it, follow by Enable and now the Z-Wave went online :blush:

My old version 2.5.11 did not have ZRAM installed, but “openhabian-pi-raspios32-v1.6.2b” and version 3.0.0 by default install ZRAM

Hey all,
seems like I trapped into the same thing. My Aotec Zwave stick does not come ONLINE any more.
I tried gatekeeper6838’s option and amended the /var/lock permissions. Now OH3 is able to create the lockfile again. It contains the PID of the openhab java process.
But the controller does not come online though.
Will continue testing the USB-Hub solution, but would be good to have a proper permanent fix for this.

My system details:
Hardware: NUC with Intel Celeron D x86_64 arch
OS: Debian 8
Java: Zulu 11
OH: 3.0.0

I added an old USB hub from the 90ties between NUC and zwave stick, and it started working again. So this leds me to the conclusion that its Aotec zwave stick related. I can imagine the the usb-hub is abstracting the hardware IDs or whatnot from the stick on only forwards the data in its own name.

It seems that only the Aeotec Z-stick Gen5-plus is compatible with pi4
This is on the Aeotec side:

New Pi from Raspberry, new Z-Stick from Aeotec. As it was built upon an older Z-Wave stack, the non-plus model of Z-Stick Gen5 isn’t compatible with Raspberry 4. But Z-Stick Gen5+ is. That opens up your home automation software to Raspberry’s new architecture including 8GB of RAM and an ARM v8 1.5GHz CPU.

The Aeotec stick z-wave 5plus works fine with pi4

Thanks @gatekeeper6838 ! Your workaround did solve my issue. (Just upgraded from 2.5 to 3.0 with rpi4 Aeotec Z-Stick)
Just wanted to n00biefy the steps incase someone as noob as me comes by

sudo nano /usr/lib/tmpfiles.d/legacy.conf
d /run/lock 0755 root root -
d /run/lock 0775 root root -

(feel free to correct the steps if they are incorrect or somewhat dangerous)