Aeotec Z-wave stick Gen5 on Synology installation

Hi, afraid I am rather blank at this, but I am trying to set up Home Assistant on my Synology NAS and using an Aeotec Z-Wave stick. I have tried both Phil Hawthorne’s instructions (but that fails since I get the message that I don’t have permissions to create the homeassistant/config folder, even though logged on as admin) and running the setup from Docker like taggr, but getting the same issue when trying to add the Aeotec stick by modifying the configuration file, which I undertand is not a feasible approach. Feeling rather flat on a Friday night from not figuring this out. Any advice?

Do you have that set up in a docker? If you do, you need to “mount” the Local USB device in the docker list of devices. I don’t think you can do that from the Synology GUI (I checked mine and didn’t see it anywhere in there), so you’d need to get ssh access to execute docker-compose

If you run that command, it will check the present working directory for a docker-compose.yml file, so make sure you create that first.
This is what mine looks like, notice the devices section. In the volumes you only need the config line, i.e. first line in there.
This will automatically download the homeassistant/home-assistant image and configure and start it up.
docker-compose.yml:

version: '3'
services:
  homeassistant:
    container_name: home-assistant
    image: homeassistant/home-assistant
    volumes:
      - /volume1/Configuration/Home Assistant:/config
      - /etc/localtime:/etc/localtime:ro
      - /usr/syno/etc/certificate/_archive/[Redacted]/:/certificate:ro
    devices:
      - /dev/ttyACM0:/zwaveusbstick
    restart: always
    network_mode: host

Make sure you have SSH access
In DSM Homepage > Control Panel > Terminal & SNMP > Terminal (tab)
[✓] Enable SSH Service

If you on Linux/Mac you can use the native ssh command, or using something like PuTTY if you on Windows
Login with you DSM admin user and password

Then execute

sudo docker-compose up -d

After home-assistant starts up, you then only need to go to:
Configuration > Integration > Z-Wave’s CONFIGURE
The above docker-compose.xml file mounts it to /zwaveusbstick, which is the default location the home-assistant integration checks. You no longer need to add it in configuration,yaml file

1 Like

What you try from the front end is export the config file, modify it, and import it back in. I’ve not tried this as this seem like even more effort, but worth a try if you not comfortable with using SSH.

In you DSM homepage/GUI: Docker > Container > Select your container > Click Settings > Export > Export this to somewhere where you can edit the file

Then Modify your JSON
add the following in the root

   "devices" : [
      {
         "CgroupPermissions" : "rwm",
         "PathInContainer" : "/zwaveusbstick",
         "PathOnHost" : "/dev/ttyACM0"
      }
   ],

So it looks something like this

{
   "cap_add" : null,
   "cap_drop" : null,
   "cmd" : "python -m homeassistant --config /config",
   "cpu_priority" : 0,
   "devices" : [
      {
         "CgroupPermissions" : "rwm",
         "PathInContainer" : "/zwaveusbstick",
         "PathOnHost" : "/dev/ttyACM0"
      }
   ],
   "enable_publish_all_ports" : false,
  ... the rest of your file ...

Then try and import that back in. Not sure what would happen if you already have an image though.

I would recommend making sure you have a backup of your config just in case

1 Like

How did you originally figure out where the device was being mounted to? I’ve tried /dev/tty0 and /dev/ttyAMC0 without any luck

This is what I get:

lsusb -ciu
|__usb1          1d6b:0002:0404 09  2.00  480MBit/s 0mA 1IF  (Linux 4.4.59+ xhci-hcd xHCI Host Controller 0000:00:14.0) hub
  |__1-2         1a40:0101:0100 09  2.00  480MBit/s 100mA 1IF  ( ffffffe9ffffffbdffffffe9ffffffa4) hub
    |__1-2.4     10c4:8a2a:0100 00  2.00   12MBit/s 100mA 2IFs (Silicon Labs HubZ Smart Home Controller 312003D6)
   1-2.4:1.0      (IF) ff:00:00 2EPs ()
   1-2.4:1.1      (IF) ff:00:00 2EPs ()
  |__1-4         f400:f400:0100 00  2.00  480MBit/s 200mA 1IF  (Synology DiskStation 650078315FCA6024)
  1-4:1.0         (IF) 08:06:50 2EPs () usb-storage host18 (synoboot)

Try:

ls -l /dev/ttyA*

Tried that but no luck:

$ sudo ls -l /dev/ttyA*
ls: cannot access /dev/ttyA*: No such file or directory

But there are a ton of serial mount points:

$ sudo ls /dev/tty*
/dev/tty    /dev/tty28	/dev/tty48  /dev/ttya1	/dev/ttyb7  /dev/ttycd	/dev/ttye3  /dev/ttyp9	/dev/ttyqf  /dev/ttyS2	/dev/ttyt7  /dev/ttyud	/dev/ttyw3  /dev/ttyx9	/dev/ttyyf
/dev/tty0   /dev/tty29	/dev/tty49  /dev/ttya2	/dev/ttyb8  /dev/ttyce	/dev/ttye4  /dev/ttypa	/dev/ttyr0  /dev/ttys3	/dev/ttyt8  /dev/ttyue	/dev/ttyw4  /dev/ttyxa	/dev/ttyz0
/dev/tty1   /dev/tty3	/dev/tty5   /dev/ttya3	/dev/ttyb9  /dev/ttycf	/dev/ttye5  /dev/ttypb	/dev/ttyr1  /dev/ttyS3	/dev/ttyt9  /dev/ttyuf	/dev/ttyw5  /dev/ttyxb	/dev/ttyz1
/dev/tty10  /dev/tty30	/dev/tty50  /dev/ttya4	/dev/ttyba  /dev/ttyd0	/dev/ttye6  /dev/ttypc	/dev/ttyr2  /dev/ttys4	/dev/ttyta  /dev/ttyv0	/dev/ttyw6  /dev/ttyxc	/dev/ttyz2
/dev/tty11  /dev/tty31	/dev/tty51  /dev/ttya5	/dev/ttybb  /dev/ttyd1	/dev/ttye7  /dev/ttypd	/dev/ttyr3  /dev/ttys5	/dev/ttytb  /dev/ttyv1	/dev/ttyw7  /dev/ttyxd	/dev/ttyz3
/dev/tty12  /dev/tty32	/dev/tty52  /dev/ttya6	/dev/ttybc  /dev/ttyd2	/dev/ttye8  /dev/ttype	/dev/ttyr4  /dev/ttys6	/dev/ttytc  /dev/ttyv2	/dev/ttyw8  /dev/ttyxe	/dev/ttyz4
/dev/tty13  /dev/tty33	/dev/tty53  /dev/ttya7	/dev/ttybd  /dev/ttyd3	/dev/ttye9  /dev/ttypf	/dev/ttyr5  /dev/ttys7	/dev/ttytd  /dev/ttyv3	/dev/ttyw9  /dev/ttyxf	/dev/ttyz5
/dev/tty14  /dev/tty34	/dev/tty54  /dev/ttya8	/dev/ttybe  /dev/ttyd4	/dev/ttyea  /dev/ttyq0	/dev/ttyr6  /dev/ttys8	/dev/ttyte  /dev/ttyv4	/dev/ttywa  /dev/ttyy0	/dev/ttyz6
/dev/tty15  /dev/tty35	/dev/tty55  /dev/ttya9	/dev/ttybf  /dev/ttyd5	/dev/ttyeb  /dev/ttyq1	/dev/ttyr7  /dev/ttys9	/dev/ttytf  /dev/ttyv5	/dev/ttywb  /dev/ttyy1	/dev/ttyz7
/dev/tty16  /dev/tty36	/dev/tty56  /dev/ttyaa	/dev/ttyc0  /dev/ttyd6	/dev/ttyec  /dev/ttyq2	/dev/ttyr8  /dev/ttysa	/dev/ttyu0  /dev/ttyv6	/dev/ttywc  /dev/ttyy2	/dev/ttyz8
/dev/tty17  /dev/tty37	/dev/tty57  /dev/ttyab	/dev/ttyc1  /dev/ttyd7	/dev/ttyed  /dev/ttyq3	/dev/ttyr9  /dev/ttysb	/dev/ttyu1  /dev/ttyv7	/dev/ttywd  /dev/ttyy3	/dev/ttyz9
/dev/tty18  /dev/tty38	/dev/tty58  /dev/ttyac	/dev/ttyc2  /dev/ttyd8	/dev/ttyee  /dev/ttyq4	/dev/ttyra  /dev/ttysc	/dev/ttyu2  /dev/ttyv8	/dev/ttywe  /dev/ttyy4	/dev/ttyza
/dev/tty19  /dev/tty39	/dev/tty59  /dev/ttyad	/dev/ttyc3  /dev/ttyd9	/dev/ttyef  /dev/ttyq5	/dev/ttyrb  /dev/ttysd	/dev/ttyu3  /dev/ttyv9	/dev/ttywf  /dev/ttyy5	/dev/ttyzb
/dev/tty2   /dev/tty4	/dev/tty6   /dev/ttyae	/dev/ttyc4  /dev/ttyda	/dev/ttyp0  /dev/ttyq6	/dev/ttyrc  /dev/ttyse	/dev/ttyu4  /dev/ttyva	/dev/ttyx0  /dev/ttyy6	/dev/ttyzc
/dev/tty20  /dev/tty40	/dev/tty60  /dev/ttyaf	/dev/ttyc5  /dev/ttydb	/dev/ttyp1  /dev/ttyq7	/dev/ttyrd  /dev/ttysf	/dev/ttyu5  /dev/ttyvb	/dev/ttyx1  /dev/ttyy7	/dev/ttyzd
/dev/tty21  /dev/tty41	/dev/tty61  /dev/ttyb0	/dev/ttyc6  /dev/ttydc	/dev/ttyp2  /dev/ttyq8	/dev/ttyre  /dev/ttyt0	/dev/ttyu6  /dev/ttyvc	/dev/ttyx2  /dev/ttyy8	/dev/ttyze
/dev/tty22  /dev/tty42	/dev/tty62  /dev/ttyb1	/dev/ttyc7  /dev/ttydd	/dev/ttyp3  /dev/ttyq9	/dev/ttyrf  /dev/ttyt1	/dev/ttyu7  /dev/ttyvd	/dev/ttyx3  /dev/ttyy9	/dev/ttyzf
/dev/tty23  /dev/tty43	/dev/tty63  /dev/ttyb2	/dev/ttyc8  /dev/ttyde	/dev/ttyp4  /dev/ttyqa	/dev/ttys0  /dev/ttyt2	/dev/ttyu8  /dev/ttyve	/dev/ttyx4  /dev/ttyya
/dev/tty24  /dev/tty44	/dev/tty7   /dev/ttyb3	/dev/ttyc9  /dev/ttydf	/dev/ttyp5  /dev/ttyqb	/dev/ttyS0  /dev/ttyt3	/dev/ttyu9  /dev/ttyvf	/dev/ttyx5  /dev/ttyyb
/dev/tty25  /dev/tty45	/dev/tty8   /dev/ttyb4	/dev/ttyca  /dev/ttye0	/dev/ttyp6  /dev/ttyqc	/dev/ttys1  /dev/ttyt4	/dev/ttyua  /dev/ttyw0	/dev/ttyx6  /dev/ttyyc
/dev/tty26  /dev/tty46	/dev/tty9   /dev/ttyb5	/dev/ttycb  /dev/ttye1	/dev/ttyp7  /dev/ttyqd	/dev/ttyS1  /dev/ttyt5	/dev/ttyub  /dev/ttyw1	/dev/ttyx7  /dev/ttyyd
/dev/tty27  /dev/tty47	/dev/ttya0  /dev/ttyb6	/dev/ttycc  /dev/ttye2	/dev/ttyp8  /dev/ttyqe	/dev/ttys2  /dev/ttyt6	/dev/ttyuc  /dev/ttyw2	/dev/ttyx8  /dev/ttyye

Short answer then - it’s not passed through. There would either be a ttyACM0, or ttyUSB0 or similar (the number may change)

How do I get it to passthrough then? Does the box need to be rebooted with the stick installed?

Unfortunately I can’t answer that, as I don’t run Synology.

I’m facing the same problem.

|__usb1          1d6b:0002:0404 09  2.00  480MBit/s 0mA 1IF  (Linux 4.4.59+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub

|__1-3 10c4:ea60:0100 00 1.10 12MBit/s 100mA 1IF (Silicon Labs CP2102 USB to UART Bridge Controller 0001)
1-3:1.0 (IF) ff:00:00 2EPs ()
|__1-4 f400:f400:0100 00 2.00 480MBit/s 200mA 1IF (Synology DiskStation 65008478A6CA6004)
1-4:1.0 (IF) 08:06:50 2EPs () usb-storage host3 (synoboot)

no /dev/ttyA** ot USB

Same problem here. I am not getting usb passthrough on Synology. same zwave usb stick will mount on my laptop, which runs on Linux as well. Any ideas?

For those who are having problem get zwave usb stick “recognized” by synology (i.e. the Synology can’t attach a path (such as /dev/ttyUSB0 or /dev/ttyACM0 ) , I think I found where the problem lies.

In short, the problem is that some of the zwave usb stick require a different driver which is not part of Synology’s DSM distribution. In my particular case, I need cp201x driver be loaded to the system.

For those who can’t get their zwave usb stick to be “recognized,” chances are, when you go to /lib/modules directory, you won’t able to find the driver file, which typically named something like cp201x.ko .

The key here is to find this cp201x driver. By some googling, I found someone who is implementing a home automation system, and he packaged the entire home automation system as well as the needed driver (i.e. my precious cp201x) in form of a synology package.

All I did was install that package and run it once and stop it immediately (i am running docker on my synology and i don’t want waste any more CPU/Memory), the usb stick is now recognized by the system.

that package name is “Domoticz.” Go google it.

If anyone find a separate package only contains cp201x, do let me know. I have a feeling once I reboot my synology, my zwave usb won’t be recognized again.

2 Likes

I have Hass.io running in docker on a NUC. Sometimes the Z stick works, sometimes it doesn’t. Seems there’s no rhyme or reason to it. Completely unreliable. Just cannot see what the problem is.

mayby we just need to install the driver: http://www.jadahl.com/drivers/DSM_6.2/ ?

Here’s what I just did:

  1. Used this page to find out which architecture my Synology uses. Turns out it is Broadwellnk.
  2. Downloaded the Broadwellnk driver file.
  3. Installed this file as a manual package in the Synology package center, it’s showing as running status.
  4. Pulled the USB stick in + out and got nothin.
lsusb -iUc
  |__1-1         152d:2329:0100 00  2.00  480MBit/s 2mA 1IF  (JMicron USB to ATA/ATAPI bridge 250731537FFF)
  1-1:1.0         (IF) 08:06:50 2EPs () usb-storage host18 ()
  |__1-3         10c4:8a2a:0100 00  2.00   12MBit/s 100mA 2IFs (Silicon Labs HubZ Smart Home Controller 312003D6)
  1-3:1.0         (IF) ff:00:00 2EPs ()
  1-3:1.1         (IF) ff:00:00 2EPs ()
  |__1-4         f400:f400:0100 00  2.00  480MBit/s 200mA 1IF  (Synology DiskStation 650078315FCA6024)

Keep in mind, I’m trying to get the combo stick working.

Thanks to you, I got it to work! I am using the same usb stick on 716+ii

[155738.329425] cp210x 3-1:1.0: cp210x converter detected
[155739.488501] usb 3-1: reset full-speed USB device number 3 using etxhci_hcd-170202
[155739.517380] usb 3-1: cp210x converter now attached to ttyUSB0
[155739.524005] usb 3-1: cp210x converter now attached to ttyUSB1
[155785.532727] aufs au_opts_verify:1571:dockerd[15135]: dirperm1 breaks the protection by the permission bits on the lower branch

Maybe because it’s a bit later and Hass.io has improved; but it’s working out of the box for me…

2 Likes

My apologies for reactivating this thread, but has anyone ACTUALLY tried using this with docker? I have an HUSBZB-1 which is detected by Synology but I am unable to pass the device path to docker and have Home Assistant recognize it successfully. I have seen multiple threads where people use this method and deem it a “success” and then flat out admit to not having actually tried it. I have a DS918+ and want to explore all options before i start tearing up Synology’s to get my stuff to work.

what have you tried so far? I run HA Docker with an Aeotec Z-Wave stick Gen 5 on my Synology. Works with the built-in Z-Wave integration, no issues.

  • plug Z-Wave device into Synology
  • use an SSH session and the ls command to identify the device path (ex. /dev/ttyACM0 for the Aeotec stick)
  • modify your docker create/run command to attach the device (--device=/dev/ttyACM0)
  • either chmod 777 your USB device, or run the HA container in privileged mode

Hey squirtbrnr thanks for your reply. I actually got it working. For the record, recommending people run containers in privileged mode is NEVER the answer. My issue stems with home assistant. I did not realize that you needed to edit the configuration.yml and point it to the device path. It seems really backwards to me especially when i got to the zigbee portion of my device which is NOT added like that. I added zigbee by going to configuration-> scrolling allll the way to the bottom that had some info about zha - clicked that, and it asked me to point to my zigbee device. The whole interface is backwards and counter intuitive.

I don’t even think I needed the drivers from that random website to begin with, I just assumed Home Assistant would pick up the devices on its own but it doesnt. I’ve since removed the shady random package from a random website, restarted the synology and correctly configured everything.

If I can help anyone else clearly configure this thing let me know, but it’s not a synology issue, it’s a home assistant issue.

1 Like