SkyConnect - silabs multiprotocol and docker

@leopold i can confirm that It Is working like a charm since 2 days

@leopold a question: when i upgrade multipan container (every morning), i have to stop and restart zigbee2mqtt.
It Is a way by a specific command/link/configuration to get docker to restart zigbee2mqtt after multipan up -d?

@leopold I’m trying to get you container running but I get the following error on my RPI4:

no matching manifest for linux/arm/v8 in the manifest list entries

Is it somehow possible to get the armv7 running on amv8?

the build is for linux/arm64
don’t know what’s the problem on your RPI4
https://hub.docker.com/r/b2un0/silabs-multipan-docker/tags

I think that you are using a 32 bit distribution.
Open an ssh terminal and type uname -a

1 Like

I’m having some trouble with zigbee devices in zigbee2mqtt after configuring multipan. I had to repair devices which was somewhat expected, but devices retained friendly names after being added to the network so it wasn’t too much trouble. The issue I’m having is all devices will only connect to the coordinator and not to each other.


I’m getting LQI timeouts when mapping and when turning devices off.

I’m using the same zigbee channel as thread and have the baudrate matching as well. I’m using NabuCasa_SkyConnect_RCP_v4.3.1_rcp-uart-hw-802154_460800.gbl but see that 4.3.2 is available.

Does anyone have any tips or suggestions?

Edit: I had Z2M generate new ext pan ID, pan ID and network key. Paired everything again and it’s looking a lot better.

Edit2: I’m also using this in docker compose to avoid /dev/USB0 path changes.

...
    volumes:
      - $HOME/.config/multipan:/data
      - /dev/serial/by-id/usb-Nabu_Casa_SkyConnect_v1.0_fec05b5f9114ed11bb92be8be054580b-if00-port0:/dev/ttyUSB99
    environment:
      DEVICE: "/dev/ttyUSB99"
...

Can anyone help me set this up in unraid? It’s not available yet in the ‘store’ so needs a manual template.

What’s the official container and latest one to use?

This is what home assistant are using: https://github.com/nervousapps/haDOCKERaddons/tree/master/silabs-multiprotocol/dockerCustom

This is someones forked version to removed some of HAS stuff: GitHub - b2un0/silabs-multipan-docker: A RPC docker server based on HomeAssistant's Silicon Labs multiprotocol addon

This is the Silabs OEM Source: Docker

1 Like

Hi @leopold Just wanted to let you know I installed your fork on amd64 and everything worked OK.

Everything in your README was OK, I only had to add this to my docker compose:

cap_add:
  - SYS_ADMIN
  - NET_ADMIN

I found this a few messages earlier in @paolo2628 's response.

Great work. Thank you.

Let me know if you want me to make a PR to add the above to the repo.

1 Like

hi @trofo
its not needed if you use “privileged: true” like in the example here

I did had “privileged: true” but it didn’t work until I added those 2 capabilities. Anyway, keep it in mind in case someone else reports it as well.

1 Like

Today zigbee stopped working for no reason. It worked well for 1 month.
It Is absurd.
It start but when i touch a switch It crash

Edit this morning It works… I’m getting crazy

Do you still need help? I just got it working on unraid

2 Likes

Is anyone else running into problems where starting the container just shows all the services within the container starting and then seemingly stopping for no reason?

Expand for full logs
2024-01-11 03:18:33 [INFO] Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Jan  5 2024 22:15:16) starting
2024-01-11 03:18:33 [INFO] Flashing firmware is disabled
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service cpcd: starting
2024-01-11 03:18:33 [INFO] Starting cpcd...
WARNING in function 'main' in file /usr/src/cpc-daemon/main.c at line #186 : Running CPCd as 'root' is not recommended. Proceed at your own risk.
FATAL in function 'config_validate_configuration' in file /usr/src/cpc-daemon/misc/config.c at line #932 : Use of encryption was requested, but the daemon was not compiled with -DENABLE_ENCRYPTION

2024-01-11 03:18:33 [INFO] Generating cpcd configuration.
cont-init: info: /etc/cont-init.d/config.sh exited 0
s6-rc: info: service legacy-cont-init successfully started
[03:18:33:853563] Info : [CPCd v4.3.1.0] [Library API v3] [RCP Protocol v4]
[03:18:33:853605] Info : Git commit: 133b29678b3d0bc7578e098d2f46b4d5bcd2ebb4 / branch:
[03:18:33:853608] Info : Sources hash: ff8300587e7e4ab1def7a89a272c0baef32f9eb3bff9b0ba06b94e655d652367
[03:18:33:853615] WARNING : In function 'main' in file /usr/src/cpc-daemon/main.c at line #186 : Running CPCd as 'root' is not recommended. Proceed at your own risk.
[03:18:33:853628] Info : Reading cli arguments
[03:18:33:853632] Info : /usr/local/bin/cpcd
[03:18:33:854005] *** ASSERT *** : FATAL in function 'config_validate_configuration' in file /usr/src/cpc-daemon/misc/config.c at line #932 : Use of encryption was requested, but the daemon was not compiled with -DENABLE_ENCRYPTION
[03:18:34:854087] Info : Daemon exiting with status EXIT_FAILURE
Logger buffer size = 28672, highwater mark = 760 : 2.65%. Lost logs : 0
2024-01-11 03:18:34 [INFO] CPC ended with exit code 1 (signal 0)...
rm: cannot remove '/dev/shm/cpcd': No such file or directory
2024-01-11 03:18:35 [INFO] Starting cpcd...
WARNING in function 'main' in file /usr/src/cpc-daemon/main.c at line #186 : Running CPCd as 'root' is not recommended. Proceed at your own risk.
s6-rc: info: service cpcd successfully started
s6-rc: info: service zigbeed: starting
s6-rc: info: service zigbeed successfully started
s6-rc: info: service legacy-services: starting
2024-01-11 03:18:36 [INFO] Starting zigbeed...
s6-rc: info: service legacy-services successfully started
s6-rc: info: bringing selected services down
s6-rc: info: service legacy-services: stopping
s6-rc: info: service otbr-web: already down
s6-rc: info: service otbr-agent: already down
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service zigbeed: stopping
s6-rc: info: service mdns: stopping
Default: mDNSResponder (Engineering Build) (Jan  5 2024 22:15:16) stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
2024-01-11 03:18:36 [INFO] mDNS ended with exit code 4 (signal 0)...
2024-01-11 03:18:36 [INFO] zigbeed ended with exit code 256 (signal 15)...
s6-rc: info: service zigbeed successfully stopped
s6-rc: info: service cpcd: stopping
s6-rc: info: service mdns successfully stopped

[03:18:35:921511] Info : [CPCd v4.3.1.0] [Library API v3] [RCP Protocol v4]
[03:18:35:921559] Info : Git commit: 133b29678b3d0bc7578e098d2f46b4d5bcd2ebb4 / branch:
[03:18:35:921562] Info : Sources hash: ff8300587e7e4ab1def7a89a272c0baef32f9eb3bff9b0ba06b94e655d652367
[03:18:35:921565] WARNING : In function 'main' in file /usr/src/cpc-daemon/main.c at line #186 : Running CPCd as 'root' is not recommended. Proceed at your own risk.
[03:18:35:921578] Info : Reading cli arguments
[03:18:35:921581] Info : /usr/local/bin/cpcd
[03:18:35:921922] Info : Reading configuration
[03:18:35:921925] Info :   file_path = /usr/local/etc/cpcd.conf
[03:18:35:921928] Info :   instance_name = cpcd_0
[03:18:35:921930] Info :   socket_folder = /dev/shm
[03:18:35:921933] Info :   operation_mode = MODE_NORMAL
[03:18:35:921935] Info :   use_encryption = false
[03:18:35:921937] Info :   binding_key_file = /root/.cpcd/binding.key
[03:18:35:921939] Info :   stdout_tracing = false
[03:18:35:921941] Info :   file_tracing = false
[03:18:35:921943] Info :   lttng_tracing = false
[03:18:35:921946] Info :   enable_frame_trace = false
[03:18:35:921947] Info :   traces_folder = /dev/shm/cpcd-traces
[03:18:35:921950] Info :   bus = UART
[03:18:35:921952] Info :   uart_baudrate = 460800
[03:18:35:921955] Info :   uart_hardflow = false
[03:18:35:921957] Info :   uart_file = /dev/ttyACM0
[03:18:35:921959] Info :   fu_recovery_pins_enabled = false
[03:18:35:921961] Info :   fu_connect_to_bootloader = false
[03:18:35:921964] Info :   fu_enter_bootloader = false
[03:18:35:921966] Info :   restart_cpcd = false
[03:18:35:921968] Info :   application_version_validation = false
[03:18:35:921970] Info :   print_secondary_versions_and_exit = false
[03:18:35:921972] Info :   use_noop_keep_alive = false
[03:18:35:921975] Info :   reset_sequence = true
[03:18:35:921976] Info :   stats_interval = 0
[03:18:35:921978] Info :   rlimit_nofile = 2000
[03:18:35:921981] Info : ENCRYPTION IS DISABLED
[03:18:35:921982] Info : Starting daemon in normal mode
[03:18:35:932666] Info : Connecting to Secondary...
[03:18:36:005742] Info : RX capability is 256 bytes
[03:18:36:005759] Info : Connected to Secondary
[03:18:36:007250] Info : Secondary Protocol v4
[03:18:36:010538] Info : Secondary CPC v4.3.1
[03:18:36:011986] Info : Secondary bus bitrate is 460800
[03:18:36:015266] Info : Secondary APP vUNDEFINED
[03:18:36:015339] Info : Daemon startup was successful. Waiting for client connections
[03:18:36:306902] Info : Server core cleanup
[03:18:36:306940] Info : Daemon exiting with status EXIT_SUCCESS
Logger buffer size = 28672, highwater mark = 2592 : 9.04%. Lost logs : 0
2024-01-11 03:18:36 [INFO] CPC ended with exit code 0 (signal 0)...
s6-rc: info: service cpcd successfully stopped
s6-rc: info: service universal-silabs-flasher: stopping
s6-rc: info: service universal-silabs-flasher successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

I see there is a line where it says that an assertion has failed:

[03:18:33:854005] *** ASSERT *** : FATAL in function 'config_validate_configuration' in file /usr/src/cpc-daemon/misc/config.c at line #932 : Use of encryption was requested, but the daemon was not compiled with -DENABLE_ENCRYPTION

However, there does not seem to be any configuration around enabling or disabling encryption, and CPCd seems to start multiple times. Is there possibly another version of this container that I am missing that does include this encryption support?

I am running this within kubernetes and with OTBR_ENABLE set to 0 for debugging (similar results when it is set to 1; no avail :sweat:). The image digest is sha256:73e104437bf16f81cf2c54fa44bc3ea1c2f80eb1b71fbf11ba8ad0acac32f8ca.

I have been stuck on this for quite a while; any pointers would be appreciated, thanks.

since the base images of HA now have useful tags, i have rebuilt all images for all base image tags with equivalent tags on my container
https://hub.docker.com/r/b2un0/silabs-multipan-docker/tags

the real version can also be found in the labels

Is there possibly another version of this container that I am missing that does include this encryption support?

no
i do not build or compile anything in this container.
i have only removed the HAOS stuff based on the work of @nervousapps and @m33ts4k0z

in your case, it would be much more important to know which usb stick and which firmware you are using

1 Like

Thanks for adding specific docker tags to your images; I’ve since updated and tried again with 2.4.2, unfortunately with no difference.

Thanks for confirming.

:person_facepalming: This is indeed a major oversight - as an update to my post above, I’ll clarify them here:

  • USB dongle: SONOFF ZBDongle-E Zigbee 3.0
  • Firmware: MultiPAN RCP - Zigbee + Thread for Silabs Multiprotocol Addon - Baudrate 460800 4.3.1 from darkxst’s web flasher

im using this with SkyConnect and

NabuCasa_SkyConnect_RCP_v4.3.1_rcp-uart-hw-802154_460800.gbl

it looks like, that your firmware is compiled with encryption enabled.
the cpcd - compiled by HA - has no encryption.
see also here:

you should ask the maintainer for your firmware.

1 Like

@cadmium another user had the problem! but wit SkyConnect!

he has has fixed this within

the docker images with 2.4.3(latest) are rebuilded
https://hub.docker.com/r/b2un0/silabs-multipan-docker

Thanks so much for updating me! I have re-pulled 2.4.3, and I can confirm that the image is no longer randomly quitting :tada:

Would you also be able to re-build 2.4.2 version with these changes? It appears that 2.4.3 has incompatibility problems with zigbee2mqtt, and I am thus unable to connect z2m to this version of the silabs addon: Assertion failed: Command (setConfigurationValue) returned unexpected state: [object Object] · Issue #19168 · Koenkk/zigbee2mqtt · GitHub

Thanks so much again!

Already done.

1 Like