Developer started working on an Home Assistant Add-on for SiliconLabs Zigbee/OpenThread Multiprotocol Add-on (requires Silicon Labs based radio with RCP Multi-PAN firmware)

FYI, Home Assistant developer agners has begun working on an add-on for Silabs Multiprotocol stack:

https://github.com/zigpy/zigpy/discussions/894

Very early so do not advise testing unless you are a developer yourself who is interested in contributing.

https://github.com/home-assistant/addons/tree/master/silabs-multiprotocol

The add-on allows you to use Zigbee 3.0 and Threaf (OpenThread) protocola simultaneous on a single Silicon Labs based radio adapter/module. The Silicon Labs based radio adapter/module needs to be reflashed with RCP Multi-PAN firmware to support being used as an Radio Co-Processor (RCP) for multiple IEEE 802.15.4 Personal Area Networks (PAN). The addon has so far only been tested with EFR32 Series 2 based radios (specifically the Home Assistat SkyConnect USB dongle), but could in the future be extended to support other Silicon Labs based dongles as long as they have the correct type and version of firmware…

The concept could in the future allow to run both Zigbee 3.0 and Thread/Matter stacks on a single radio.

It also changes architecture from NCP (Network Co-Processor) based to “DMP RPC” (Dynamic Multiprotocol Radio Co-Processor) based which if I understand correctly offload the network part to the the Zigbee integration application running on system CPU and the adapter becomes slightly more of a “dumb” Zigbee radio (still using EZSP) which for Zigbee removes some limitations on routing tables etc. (meaning that can probably have almost unlimited of devices connected even on radio adapter that has an MCU with limited RAM-memory.

PS: agners is Nabu Casa lead engineer working on Home Assistant Yellow and its EFR32MG21 radio:

https://www.home-assistant.io/blog/2021/09/13/home-assistant-yellow/

https://www.crowdsupply.com/nabu-casa/home-assistant-yellow

https://www.nabucasa.com/about/

3 Likes

I installed the Silicon Labs Multiprotocol add-on but it doesn’t work.

I always get this:

s6-rc: info: service mdns: starting
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service mdns successfully started
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
[13:11:26] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Jan 23 2023 22:46:33) starting
Default: mDNS_AddDNSServer: Lock not held! mDNS_busy (0) mDNS_reentrancy (0)
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/check-cpcd-shm.sh
cont-init: info: /etc/cont-init.d/check-cpcd-shm.sh exited 0
cont-init: info: running /etc/cont-init.d/config.sh
[13:11:28] INFO: Generating cpcd configuration.
cont-init: info: /etc/cont-init.d/config.sh exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service banner: starting
-----------------------------------------------------------
 Add-on: Silicon Labs Multiprotocol
 Zigbee and OpenThread multiprotocol add-on
-----------------------------------------------------------
 Add-on version: 0.12.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 9.5  (amd64 / qemux86-64)
 Home Assistant Core: 2023.2.0
 Home Assistant Supervisor: 2023.01.1
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service universal-silabs-flasher: starting
[13:11:31] INFO: Checking /dev/ttyUSB0 identifying SkyConnect v1.0 from Nabu Casa
[13:11:31] INFO: Starting universal-silabs-flasher with /dev/ttyUSB0 (baudrate 57600)
2023-02-02 13:11:33 core-silabs-multiprotocol universal_silabs_flasher.flash[217] INFO Extracted GBL metadata: NabuCasaMetadata(metadata_version=1, sdk_version=<AwesomeVersion SemVer '4.1.4'>, ezsp_version=None, fw_type=<FirmwareImageType.RCP_UART_802154: 'rcp-uart-802154'>)
2023-02-02 13:11:33 core-silabs-multiprotocol universal_silabs_flasher.flasher[217] INFO Probing ApplicationType.GECKO_BOOTLOADER
2023-02-02 13:11:35 core-silabs-multiprotocol universal_silabs_flasher.flasher[217] INFO Probing ApplicationType.CPC
2023-02-02 13:11:39 core-silabs-multiprotocol universal_silabs_flasher.flasher[217] INFO Probing ApplicationType.EZSP
Error: Failed to probe running application type
2023-02-02 13:11:44 core-silabs-multiprotocol concurrent.futures[217] ERROR exception calling callback for <Future at 0x7f11cebbfa60 state=finished returned NoneType>
Traceback (most recent call last):
  File "/usr/lib/python3.9/concurrent/futures/_base.py", line 329, in _invoke_callbacks
    callback(self)
  File "/usr/lib/python3.9/asyncio/futures.py", line 398, in _call_set_state
    dest_loop.call_soon_threadsafe(_set_state, destination, source)
  File "/usr/lib/python3.9/asyncio/base_events.py", line 791, in call_soon_threadsafe
    self._check_closed()
  File "/usr/lib/python3.9/asyncio/base_events.py", line 510, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
s6-rc: warning: unable to start service universal-silabs-flasher: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
prog: fatal: stopping the container.
s6-rc: info: service mdns: stopping
s6-rc: info: service banner: stopping
Default: mDNSResponder (Engineering Build) (Jan 23 2023 22:46:33) stopping
s6-rc: info: service banner successfully stopped
s6-rc: info: service legacy-cont-init: 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
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
[13:11:44] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped

Any idea?

1 Like

Have the same problem. I have created an issue:

https://github.com/home-assistant/addons/issues/2869