SkyConnect - silabs multiprotocol and docker

okay, thank you. But that is not an option for me… Are there any other solutions on that topic?

1 Like

Did anyone see some kind of warning before buying the SkyConnect that there would only be proper support with HAOS (at least for the foreseeable future)? I feel kind of stupid for buying it and trying to get it up and running (ZigBee+Thread) with Docker.

4 Likes

Did you solve the issue? I have the same one.

i got 100% working on raspberry, so arm (aarch64) architecture.
1)flash last rcp fw on sonoff dongle E
2)download from this repository https://github.com/nervousapps/haDOCKERaddons/tree/master/silabs-multiprotocol/dockerCustom
3)edit docker-compose.yaml and in the “image” section change “:2.3.1” to “:latest” and add
volumes:
- “/home/docker/multipan/data:/data”
(adjust it to your home folder)
4)edit .env and put 0 instead “true” in this 3 variable; “CPCD_TRACE”, “FLOW_CONTROL” and “AUTOFLASH_FIRMWARE”
5)run docker-compose build --no-cache and next docker-compose up -d
6)in zigbee2mqtt config file change “serial” with
serial:
port: tcp://host_ip:20108
adapter: ezsp

enjoy

finally my version also works, without any complex configuration, docker builds or something.
(for amd64 and aarch64)

Works well.
Only a Little thing: i have the sonoff E dongle. To get It working i put to false the flow_control variable.
So, in the end, i wrote this in my docker-compose.yaml

multipan:
container_name: multipan
image: ghcr.io/b2un0/silabs-multipan-docker:latest
cap_add:
- SYS_ADMIN
- NET_ADMIN
restart: unless-stopped
privileged: true
network_mode: host
volumes:
- ~/multipan:/data
environment:
# OCPD environment variables
DEVICE: “/dev/ttyUSB0”
BAUDRATE: “460800”
CPCD_TRACE: “false”
FLOW_CONTROL: “false”
NETWORK_DEVICES: 0
# OTBR-AGENT environment variables
OTBR_ENABLE: 1
BACKBONE_IF: “eth0”
OTBR_LOG_LEVEL: “debug”
OTB_FIREWALL: 1
OTBR_REST_LISTEN_PORT: “8081”
# OTBR-WEB environment variables
OTBR_WEB_PORT: “8086”
# SOCAT environment variables
NETWORK_DEVICE: “”
# ZIGBEED environment variables
EZSP_LISTEN_PORT: “20108”
# UNIVERSAL FLASHER variables
AUTOFLASH_FIRMWARE: 0
FIRMWARE: “”

1 Like

Does this also work on arm64?

Yes, aarch64 is arm64

Is It correct flow_control false with sonoff E?
In this way it works!
if i enable flow_control, by read logs of container i get “FATAL in function ‘capabilities_checks’ in file /usr/src/cpc-daemon/server_core/server_core.c at line #714 : UART flow control configuration mismatch between CPCd (enabled) and Secondary (disabled)”

another question: in configuration.yaml of zigbee2mqtt, we have to put “baudrate: 460800” into serial section?

Thank you so much! It works (with Skyconnect).

1 Like

is it also possible to run the container in bridge mode?

With macvlan and working ipv6 yes, but not in Bridge mode.

Don’t know for the Flow controller. I’m using this with skyconnect and only for thread.
Zigbee is running with another dongle under z2m (with 129 devices, migration not planed).

In my case z2m Is working without repairing.

Only a Little issue:: aqara Door/Window sensor are 90% working. If i open (or close) a Door or a Window, 9 time out of 10 all are ok but 1 time out of 10 i havent the change status. I dont know why. With the old coordinator this Is never happened. I dont know if It Is a coordinator issue, fw not 100% stabile, multipan issue… i dont know. Have you an idea?

simplified the documentation and also pushed the image to the docker hub
https://hub.docker.com/r/b2un0/silabs-multipan-docker

1 Like

Good job.

I solved my issue!!! The problem was that zigbee and thread MUST be on the same channel!!!
Thread by default Is Channel 15. I had zigbee on 11. Changing zigbee Channel would have been a disaster (repairing all device) so i changed thread Channel. The only way to do this Is by using curl to ask the OpenThread REST API directly to change the channel.
Open a terminal and digit:

curl http://YOURIP:8081/node/dataset/active | \
  jq '.ActiveTimestamp.Seconds = .ActiveTimestamp.Seconds + 1 |
       {
         ActiveDataset: select(.),
         Delay: 30000,
         PendingTimestamp: .ActiveTimestamp
       } | 
       .ActiveDataset.Channel = 11' | \
  curl -X PUT http://YOURIP:8081/node/dataset/pending -d@-

NOW ALL WORKS AT THE BEST

1 Like

This morning a very strange issue: my zigbee network was empity, with 0 devices.
fortunately in the data folder of zigbe2mqtt i found a file called database.db.backup, auto-created some hours ago. I deleted the empity database.db and replaced It with backup and now It Is ok.
What Is happened? I dont kwon if It Is a multipan issue… in the last 2 years with zigbee i never seen anything like it. Let’s see if it happens again

Maybe add to this, so it stays actual:

@leopold your container works like a charme.
Only 2 things:
1)you should to indicate that zigbee and thread must be on the same channel. Zigbee can be changed by webui, thread by curl (i posted some days ago the string).
2)i changed in the yaml the loglevel from debug to notice to reduce the verbosity

After setting this up, zigbee has communication problems with devices.

  • Already added devices are shown as Offline
  • It is possible to discover/add new devices
  • Reading states of devices works
  • If a new state is read (e.g. I press a switch), then it tries configuring the new device but fails due to timeout errors
  • It is not possible to send states to the new devices because of timeout errors (e.g. {"sendWhen":"immediate","timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":false,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null,"writeUndiv":false}) failed (Timeout - 12795 - 1 - 53 - 6 - 11 after 10000ms)')

Any ideas?