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
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
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.
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.
Here’s what I just did:
- Used this page to find out which architecture my Synology uses. Turns out it is Broadwellnk.
- Downloaded the Broadwellnk driver file.
- Installed this file as a manual package in the Synology package center, it’s showing as running status.
- 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…
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 inprivileged
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.