Up until recently I have been running Zigbee2MQTT using the great Zoe board for Raspberry Pi from @OmerK. When I first started with home automation, everything ran on the Pi, and this was fine for experimenting, but it quickly became a bottle neck, and the amount of writes to the SD card was killing it quickly. Since then I have moved all my services to LXC containers running on an old HP MicroServer under Proxmox, and this has helped. I had got to the point where the only service running on the Pi was was Zigbee2MQTT, but due to the much better performance of the Zoe board to the cheap Zigbee Stick it replaced Available.

So when Omer reached out about his new Zigbee USB stick, zig-a-zig-ah I jumped at the chance to help out, and be able to finally remove the reliance on the Pi, with the added bonus of jumping to Zigbee 3.0.

A few days ago the prototype arrived in the post, note this is not the final design or packaging, but everything arrived safely, and a quick test on my laptop showed everything was working. My release came pre-flashed with Z-Stack-Firmware from @Koennkk, but production devices will not come flashed.


Configuring Proxmox (LXC)

I use LXC containers under Proxmox for my home automation services, so I span up a new Alpine based LXC container and set up pass-through for the ttyUSB0 device that zig-a-zig-ah presents. The LXC ID of this new container on my setup was 103 and I will use this throughout this post.

First we need some details on the ttyUSB device. On my device the stick appeared as ttyUSB0, so from the Proxmox shell of the host (not the LXC container) we need to ls the ttyUSB0 dev node. Take note of the value to the right of the group, in my case this value is 118.

root@pve:~# ls -la /dev/ttyUSB0 
crw-rw---- 1 root dialout 188, 0 Mar 22 17:27 /dev/ttyUSB0

Next we will update the Proxmox LXC configuration at vim /etc/pve/lxc/103.conf, note the 118 value that matches which was found earlier.

lxc.cgroup.devices.allow: c 188:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file

Configuring Zigbee2MQTT

After this we can boot the LXC container, and install Zigbee2MQTT. The changed to the Zigbee2MQTT configuration I needed were:

  # Location of zig-a-zig-ah
  port: /dev/ttyUSB0

  rtscts: false

Now all I needed was a npm start as in the Zigbee2MQTT, and everything seems to have started up OK. Next step will be rebinding all my devices to this new setup.