Be Smart, Go Local.

How To Use Ember Driver with EFR32MG21 Zigbee Adapters

Guide for flashing the latest Silicon Labs firmware to EFR32MG21 Zigbee adapters (e.g. Sonoff ZBDongle-E) and use the new Ember driver in Zigbee2MQTT.

Flashing Ember Firmware to EFR32MG21 Zigbee Coordinators: Featured Image

Short Intro

Those who follow Zigbee2MQTT development, are already familiar with the fact that EFR32MGXx coordinators are not officially supported in Zigbee2MQTT. They have always been in experimental stage of development and never passed it. This includes the Sonoff ZBDongle-E, SkyConnect, SMLight SLZB-07 and other sticks based on the EFR32 chip by Silicon Labs.

Recently, Zigbee2MQTT announced that the ezsp driver that powered these coordinators is deprecated and obsolete, being replaced with the new ember version. In this article, I’m sharing how to update your EFR32MG21-based coordinator to the new firmware and setup Zigbee2MQTT to work with it. I will be doing this on a Sonoff ZBDongle-E. The full list of supported adapters is at the bottom of this article (jump).

About the Ember firmware (NCP)

The new ember driver brings certain improvement to EFR32MG21 coordinators, like better stability and performance, better backup & restore reliability and many other perks and tweak to get the most out of these coordinators. You can check out the full list here.

Flashing Ember Firmware to EFR32MG21 Zigbee Coordinators: ZB-GW04 Adapter
EFR32MG21 Module Inside a ZB-GW04 Coordinator

If you have a backup with ezsp v12 that you’ve used before and it worked, it will restore successfully on the new ember driver. If you’ve been using ezsp v13 and dont have a backup, swapping to the ember driver should simply take over where you left off. Meaning, most likely your devices will stay intact and keep working even though this is not guaranteed.

The way the driver works is that if you have a backup from a version pre-12, the driver won’t start, and will throw an error indicating the version of the backup is not supported. This prevents overwriting files without a user’s knowledge, and prevents potentially restoring ezsp backups from a time where support for them was not great and had some bugs. Do it on your own risk.

About the Multiprotocol firmware (RCP)

If you’ve followed my guide about flashing the Sonoff ZBDongle-E to support Thread and Zigbee simultaneously, you are familiar with the RCP firmware. It has been working fine so far for me in my development build.

However, it’s worth noting that Home Assistant has announced there will be no further development as the RCP firmware imposes certain limitations and difficulties when Thread and Zigbee are used on the same radio. The developers suggest users get a separate radio to run Thread, resulting in a more stable setup. The good news is EFR32MG21 coordinators are cheap (Sonoff, SMLight, ZB-GW04) and you can repurpose your old Conbee II stick to act as a Thread Border Router!

Flashing the firmware

To flash the new firmware, we will use a custom firmware file from that updates the coordinator to EmberZNet firmware 7.4.x. At this point, the latest version for the Sonoff ZBDongle-E is firmware v7.4.2.0. You can find the full list on this repository.

Here’s how to flash the Sonoff ZBDongle-E, although the process is nearly identical for any EFR32MG21 coordinator.

  1. Download the firmware from darkxst’s repository
  2. Plug in the coordinator to your PC
  3. Navigate to darkxst’s web flasher
  4. Choose your coordinator and click Connect
Flashing Ember Firmware to EFR32MG21 Zigbee Coordinators: Connect to Sonoff ZBDongle-E
  1. Wait for the flasher to connect
  2. Click Change Firmware
  3. Click Upload your own firmware
  4. Select the 7.4.2.0 you downloaded (e.g. ncp-uart-hw-v7.4.2.0-zbdonglee-115200.gbl)
  5. Press Install
Flashing Ember Firmware to EFR32MG21 Zigbee Coordinators: Install Own Firmware

Wait patiently for the process to finish. Do not disconnect the coordinator or turn of your computer. If everything went correctly, after reconnecting to your coordinator, you will see the new firmware version listed as 7.4.2.0.

Starting Zigbee2MQTT with Ember driver

With the new firmware flashed, we can configure Zigbee2MQTT to start using the new ember driver. If you haven’t already, you will need to update to Zigbee2MQTT version 1.36.0. In Home Assistant, navigate to Settings > Add-ons > Zigbee2MQTT > Configuration tab and change the serial configuration to match the ember driver. Here’s an example:

serial:
  port: >-
  /dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20220813094657-if00
  adapter: ember
Flashing Ember Firmware to EFR32MG21 Zigbee Coordinators: Configuring and starting Zigbee2MQTT

Start the add-on and observe the logs. You should see a few lines that say the ember adapter is starting:

[2024-05-09 08:33:26] info: 	zh:ember: ======== Ember Adapter Starting ========
[2024-05-09 08:33:26] info: zh:ember:ezsp: ======== EZSP starting ========

followed by a success message at the end:

[2024-05-09 08:33:29] info: 	z2m: Zigbee2MQTT started!

If you navigate to Settings > About in Zigbee2MQTT, you will see the new firmware version and driver:

Flashing Ember Firmware to EFR32MG21 Zigbee Coordinators: Started with Ember driver

Supported hardware

Even though the webflasher will only work with the ZBDongle-E, SMLight SLZB-07, SMLight SLZB-06M and the ZB-GW04, you can use NabuCasa’s Universal Web Flasher to flash any adapter locally. The full list of supported hardware is as follows:

Debugging Issues

The developer of the ember driver created an experimental log debugger tool, meant to guide you in solving any potential problems you might encounter. It’s still a work in progress, but you can check it out here.

Summary

I’ve been using the ember driver in my development build for a few days now, pairing various devices and testing their performance. It operates without issues in my instance, and I did notice an improvement in pairing time for wired devices.

It’s important to note that support for the new driver is still experimental. I’ll continue to monitor the status of my network and keep this article updated.

24 thoughts on “How To Use Ember Driver with EFR32MG21 Zigbee Adapters”

  1. How about when i am using ZBDongle-E with ROUTER firmware instead ?
    Firmware build date
    20220515
    Firmware version
    1.0.0

    Reply
  2. Please buy SMLight directly, as it is a Ukrainian company. Buying their products on AliExpress you choose to give your money to China instead of Ukraine!

    Reply
  3. Regarding the Multiprotocol firmware (RCP), you mentioned that it is working fine in your development build. Do you know if the ember driver still will be released for the Multiprotocol firmware so i can just use it “as is”?

    Reply
    • I’m not sure, quote from the Github thread:

      To keep things simple, this driver currently only supports EmberZNet firmware 7.4.x (EZSP 13), older versions will not be supported. Initially, multi-protocol will also not be supported as this is not considered stable yet.

      It might, but it’s not a priority.

      Reply
  4. Can you please explain the following point in a bit more detail:


    If you have a backup with ezsp v12 that you’ve used before and it worked, it will restore successfully on the new ember driver.

    What backup are you talking about here (and there is no backup restore mentioned later in the article)?

    Thank you.

    Reply
    • If you have a backup created and tested (restored) which was made with driver ezsp v12 and up, it will work on the ember driver without issues.
      You can check the version in Zigbee2MQTT > About.

      Reply
  5. Neat article!

    Concerning “[…] Home Assistant has announced there will be no further development as the RCP firmware […]”:
    Does that mean they drop further development into the whole multiprotocol idea too?
    Couldn’t find any further information about that.

    I kinda liked the idea of having one dongle to do both Zigbee & Thread. Instead of two separate ones (and therefore two USB slots taken).
    But reading up on it right now, the limitations of the whole multiprotocol seem unresolvable for now…

    Anyway, good article, thanks!

    Reply
  6. Hello I just flashed my Sonoff Zigbee 3.0 USB Dongle Plus V2.
    The flashing worked fine.
    Bu now Z2M is not starting anymore.
    I changed the adapter in ember.
    It is giving an CRC error:
    sing ‘/app/data’ as data directory
    [2024-05-10 15:48:15] info: z2m: Logging to console, file (filename: log.log)
    [2024-05-10 15:48:15] info: z2m: Starting Zigbee2MQTT version 1.37.1 (commit #ea39d86)
    [2024-05-10 15:48:15] info: z2m: Starting zigbee-herdsman (0.46.6)
    [2024-05-10 15:48:15] info: zh:ember: ======== Ember Adapter Starting ========
    [2024-05-10 15:48:15] info: zh:ember:ezsp: ======== EZSP starting ========
    [2024-05-10 15:48:15] info: zh:ember:uart:ash: ======== ASH NCP reset ========
    [2024-05-10 15:48:15] info: zh:ember:uart:ash: RTS/CTS config is off, enabling software flow control.
    [2024-05-10 15:48:15] info: zh:ember:uart:ash: Serial port opened
    [2024-05-10 15:48:15] info: zh:ember:uart:ash: ======== ASH starting ========
    [2024-05-10 15:48:15] error: zh:ember:uart:ash: Received frame with CRC error
    [2024-05-10 15:48:15] error: zh:ember:uart:ash: Received ERROR from NCP while connecting, with code=ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT.
    [2024-05-10 15:48:15] error: zh:ember:uart:ash: ASH disconnected | NCP status: ASH_NCP_FATAL_ERROR
    [2024-05-10 15:48:15] error: zh:ember:uart:ash: Error while parsing received frame, status=ASH_NCP_FATAL_ERROR.
    [2024-05-10 15:48:15] info: zh:ember:uart:ash: ======== ASH NCP reset ========
    [2024-05-10 15:48:15] info: zh:ember:uart:ash: ======== ASH starting ========
    [2024-05-10 15:48:16] info: zh:ember:uart:ash: ======== ASH connected ========
    [2024-05-10 15:48:16] info: zh:ember:uart:ash: ======== ASH started ========
    [2024-05-10 15:48:16] info: zh:ember:ezsp: ======== EZSP started ========
    [2024-05-10 15:48:16] info: zh:ember: [STACK STATUS] Network up.
    [2024-05-10 15:48:16] error: z2m: Error while starting zigbee-herdsman
    [2024-05-10 15:48:16] error: z2m: Failed to start zigbee
    [2024-05-10 15:48:16] error: z2m: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
    [2024-05-10 15:48:16] error: z2m: Exiting…
    [2024-05-10 15:48:16] error: z2m: Error: [BACKUP] Current backup file is from an unsupported EZSP version (min: 12).
    at EmberAdapter.getStoredBackup (/app/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:1322:23)
    at EmberAdapter.initTrustCenter (/app/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:1113:33)
    at EmberAdapter.initEzsp (/app/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:795:19)
    at EmberAdapter.start (/app/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:2642:24)
    at Controller.start (/app/node_modules/zigbee-herdsman/src/controller/controller.ts:124:29)
    at Zigbee.start (/app/lib/zigbee.ts:62:27)
    at Controller.start (/app/lib/controller.ts:109:27)
    at start (/app/index.js:107:5)

    What to do? Help please

    Reply
    • [2024-05-16 10:40:04] info: zh:ember:uart:ash: ======== ASH starting ========
      [2024-05-16 10:40:04] error: zh:ember:uart:ash: Received frame with CRC error
      [2024-05-16 10:40:04] error: zh:ember:uart:ash: Received ERROR from NCP while connecting, with code=ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT.
      [2024-05-16 10:40:04] error: zh:ember:uart:ash: ASH disconnected | NCP status: ASH_NCP_FATAL_ERROR
      [2024-05-16 10:40:04] error: zh:ember:uart:ash: Error while parsing received frame, status=ASH_NCP_FATAL_ERROR.

      I have this problem too. Have you found a solution?

      Reply
  7. I did change back the adapter to EZSPand it did work all again???
    Showing at info I’m now running EZSP V13 instead of V8??
    with the coordinator build: 7.4.2.0 build 0

    Reply
  8. Forgot the 2 comments before.
    I did after a startup as EZSP for a test change again the adapter in ember.
    Now it is starting up as ember device.

    Thanks for the effort

    Reply
  9. Working Like Charm!,

    I didn’t even knew (or checked) If dongle-E was compatible with Z2M (I just assume it was and it worked! for the most part).

    On 1.36.1 my office automations started to fail sometimes and I downgraded to 1.35.1 until I read this article, now I’m on the latest version with the ember driver and my network can’t be better!.

    Thanks!

    Reply
  10. Hi, thanks for the clear instructions.
    I flashed my SonOff dongle-E OK (when I rerun darkxst’s web flasher it shows with the correct version).
    But when I plug the SonOff dongle-E back into my Home Assistant OS (on a Generic x86-64 mini-PC) the console shows “ACPI BIOS Error (bug): Could not resolve symbol (\SB-UBCT-RUCC, AE_NOT_FOUND (20230628/psargs-330)”.

    If I swap the firmware on the SonOff dongle-E back to ezsp (and update the Zigbee2MQTT config back to ezsp driver) then Zigbee2MQTT runs again fine.

    Any suggestions?
    Thanks

    Reply
  11. Hi
    Thanks for the link and advise.
    Interestingly when I tried doing full reboot of the mini-pc Zigbee2MQTT then started fine using ember. So, although I get the Bios error, zibbee2mqtt starts up but needed the full reboot in my case.
    Thanks again for the instructions.

    Reply
  12. Thank you for the tutorial, updated my Sonoff ZBDongle-E from version 6 to this one without any problem. No need to reconficure anything but the “adapter: ember” in Z2M settings.
    Everything work like a charm for now.

    Reply
  13. Hi.

    I currently have the Skyconnect stick and the SM Light slzb-06 is on route. I initially ordered the smlight slzb-06 as I am running HA on VirtualBox in Win 11 machine. Starting the VirtualBox instance meant I needed to unplug -replug stick in the machine or remove add stick from device manager after the instance has started.

    I need a reliable Z2MQTT network and have almost 50 devices right now. I am trying to decide if
    skyconnect for Thread or Z2MQTT or
    SM Light slzb-06 for both or either. The skyconnect I will still need to remove add, I guess. I assume the SM Light slzb-06 won’t need this intervention?

    Also is there an easy way to move the network between them or restore it?

    thanks

    Reply

Leave a Comment