Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flashing the Sonoff ZBDongle-E to enable Matter, Thread and Zigbee on Home Assistant | Dialedin #3

Open
utterances-bot opened this issue May 5, 2023 · 82 comments

Comments

@utterances-bot
Copy link

Flashing the Sonoff ZBDongle-E to enable Matter, Thread and Zigbee on Home Assistant | Dialedin

Discover the latest in home automation for 2023, Matter and Thread are about to revolutionise smart home tech. In this blog post, learn how to flash your Sonoff ZBDongle-E or EasyIot ZB-GW04 with a RCP MultiPAN firmware to set up a Zigbee network, while providing simultaneous support for Thread. Stay ahead of the game and explore the possibilities of these innovative protocols.

https://dialedin.com.au/blog/sonoff-zbdongle-e-rcp-firmware

Copy link

This seemed to have worked perfectly. Thanks! I specifically bought the Sonoff ZB-Dongle-E because it was similar to the Home Assistant Yellow radio, and this is the first I've seen anyone have success with flashing the firmware from the itead Zigbee firmware to a multiprotocol firmware. Great job.

@timlunn447
Copy link
Collaborator

@OriginalResponsibleUser Thanks for the feedback!

We have now updated firmware links to the most recent v4.2.3 firmware release. You can even upgrade to the new firmware directly from this blog post using the newly added web flasher support, note that the baudrate has been updated to 460800 for these ZBDongle-E builds.

Copy link

Hedda commented May 23, 2023

Suggest you credit darkxst as well and not just Nabu Casa since use https://github.com/darkxst/sl-test

@darkxst
Copy link

darkxst commented May 23, 2023

@Hedda Thanks! I wrote this blog post... I didn't even think to credit my other self!

@Hedda
Copy link

Hedda commented May 24, 2023

@Hedda Thanks! I wrote this blog post... I didn't even think to credit my other self!

haha, I missed that, sorry

Copy link

Hi, thanks for you post !
Is it possible to use the web flasher to update a EFR32MG13 dongle (Zigbee Popp) ?
My sonoff dongle_e-R is flashed as a router and not a coordinator.
Or can I flash the sonoff with zigbee router and thread ?

@darkxst
Copy link

darkxst commented May 25, 2023

Is it possible to use the web flasher to update a EFR32MG13 dongle (Zigbee Popp) ?

If you can find a suitable GBL firmware file, you can upload it to the webflasher and flash it to your device. However I dont recall seeing any RCP builds for this device. Would need further info such pinouts to add it to the firmware builder.

Edit: This is a rebrand of Elelabs ELU013, for which you may find firmware.

Or can I flash the sonoff with zigbee router and thread ?

No its not possible for these two functions to co-exist.

@Hedda
Copy link

Hedda commented May 25, 2023

Or can I flash the sonoff with zigbee router and thread ?

No its not possible for these two functions to co-exist.

@golgoth73 I suspect that you really meant to ask if it supports flashing a Zigbee Router firmware image or a Thread firmware image, (and not asking if there is a single firmware image that supports Zigbee Router and Thread in the same firmware image).

I understand that the terminology can be confusing with a "Zigbee Coordinator" being a controller similar to "Thread Border Router" functionality, while a Zigbee Router" is just a Zigbee device (like a mains-powered smart lightbulb) that act as a repeater in a Zigbee network mesh but have no controller functionality at all. Suggest that you read through this introduction to Zigbee:

https://www.home-assistant.io/integrations/zha#introduction

To clarify, there are firmware images that support concurrent multiprotocol (meaning they support several protocols to run simultaneously at the same time) with the combination of Zigbee Coordinator (NCP or RCP) and Thread (RCP for Thread Border Router), but there are currently no firmware images that support concurrent multiprotocol the combination of Zigbee Router and Thread, at least not with both protocols running simultaneously at the same time, and likely there never will as it does not really make commercial sense, (we can only speculate it might be products in the future that support Zigbee Router and Thread in the base firmware image but not enable both to run at the same time, meaning it will lock to only using the specific protocol that it is initially paired with).

So, there are currently no existing firmware images that feature both Zigbee Router and Thread. Your choices today is to use:

  • Zigbee Router device firmware image to make it a dedicated Zigbee signal repeater.
  • Zigbee NCP firmware image which is standard to make it a dedicated Zigbee Coordinator (or a dedicated Zigbee sniffer).
  • OpenThread NCP firmware image to make it a dedicated Thread Border Router (running Thread features on the SoC).
  • OpenThread RCP firmware image to make it a dedicated Thread Border Router (running Thread features on host computer).
  • RCP Multi-PAN = Zigbee RCP + OpenThread RCP combination firmware image make it Zigbee Coordinator and Thread Border Router with both protocols running as daemons/services on the host computer (e.g. Silicon Labs multiprotocol add-on for Home Assistant which require the Zigbee gateway application to communicate with the Silabs daemon using a TCP/IP socket).
  • Zigbee NCP + OpenThread RCP combo firmware image to make the Zigbee Coordinator NCP on the SoC which makes that part compatible with traditional Zigbee gateway application like Zigbee2MQTT and Thread Border Router on the host computer.

https://openthread.io/platforms/co-processor

The fact is there today exist these types of community firmware images for Silicon Labs EFR32MG21 based devices listed below:

@golgoth73 again, there is currently no single firmware image from anyone in the that supports acting as a Zigbee Router and Thread device at the same time and I do not believe that is something that Silicon Labs EmberZNet SDK currently supports, however, if I had to guess then that might be something that could perhaps be added to Silicon Labs EmberZNet SDK in the future, or at least it is not technically impossible, even though it is not possible in practice if there is no support for in Silabs EmberZNet SDK.

@Hedda
Copy link

Hedda commented May 25, 2023

Is it possible to use the web flasher to update a EFR32MG13 dongle (Zigbee Popp) ?

You can find firmware images for Elelabs ELU013 and POPP ZB-STICK (701554) in GBL file format on Elelabs GitHub repository:

https://github.com/Elelabs/elelabs-zigbee-ezsp-utility/tree/master/data/EFR32MG13

POPP ZB-STICK (701554) is a white-label (rebranded) version of Elelabs ELU013 that is made by Elelabs based on EFR32MG13P

Older variants of Elelabs adapters did however ship with EBL (Ember Bootloader) and if that is the case then you can not flash those yet with the webflashing as it does so far not suppose EBL parting. More info here -> NabuCasa/universal-silabs-flasher#11

Copy link

shirou93 commented Jun 3, 2023

Hi, migrate from sonoff P to E in homeassistant will drop devices on zigbee2mqtt? I have many changed entity names etc. When zigbee2mqtt drop devices they will disappear on HA GUI or change to unavailable? I dont't want reconfigure all names in HA. Thanks for advice.

@timlunn447
Copy link
Collaborator

@shirou93, Migration to the -E is not officially supported in Zigbee2MQTT yet. There are probably workarounds to make it work, but not likely well tested or documented anywhere.

It is possible to keep your existing network in Zigbee2MQTT using the -P, and then create a new network with the Multiprotocol addon and ZHA on the -E. These can then co-exist and you can use the new network for testing. We would recommend this route over migrating your production network at this stage.

However back to the migration, keeping in mind we have not tested any of this. So make to sure to backup your coordinator.json file before trying anything!

Normally switching to a new (different type) coordinator in Zigbee2MQTT requires repairing all devices.

Migration from Zigbee2MQTT to ZHA is possible but you will almost certainly loose your entity names in this case
https://skyconnect.home-assistant.io/migrate-zigbee-zha/

It is probably possible to use zigpy-cli to restore a backup of your existing network onto the new -E dongle, clone the IEEE address (both these are done automatically in the above step). Then point Zigbee2MQTT to the new adaptor which if you are using the multiprotocol addon is covered here. That should keep all your existing names intact, but again not something we have tested.

@Hedda
Copy link

Hedda commented Jun 4, 2023

migrate from sonoff P to E in homeassistant will drop devices on zigbee2mqtt

Wrong place to ask, suggest instead ask in this Zigbee2MQTT discussion -> Koenkk/zigbee2mqtt#16478

Copy link

asmiller commented Jun 4, 2023

Or can I flash the sonoff with zigbee router and thread ?

No its not possible for these two functions to co-exist.

So if I want to support both Thread and Zigbee devices, I still need two adapters - one to flash as a router for Zigbee and one to flash as a router for Thread?

@timlunn447
Copy link
Collaborator

So if I want to support both Thread and Zigbee devices, I still need two adapters

You can have both Thread and Zigbee Coordinator on the one adapter, at the same time. A Zigbee Router is a different device that is used to extend your Zigbee mesh network.

@Hedda
Copy link

Hedda commented Jun 5, 2023

I still need two adapters - one to flash as a router for Zigbee and one to flash as a router for Thread?

@asmiller That question was already asked and answered above so I updated my reply to make it more clear -> #3 (comment)

Again I believe you guys are confusing "Zigbee Router" with "Zigbee Coordinator" because name of "Thread Border Router". Read:

https://www.home-assistant.io/integrations/zha#introduction

ZHA integration is a Zigbee gateway implementation that follows the standard Zigbee 3.0 specification (and earlier revisions). In Zigbee, there are three different device types: Zigbee Coordinator (ZC), Zigbee Router (ZR), and Zigbee End Device (ZED). A Zigbee network always has one (and no more) Zigbee Coordinator, however, a Zigbee network can have multiple Zigbee Routers and multiple Zigbee End Devices.

A Zigbee Coordinator is the central device in a Zigbee network that manages and controls the network. It acts as a physical interface for the Zigbee wireless protocol, as well as being responsible for maintaining the Zigbee network topology and ensuring secure and efficient communication between Zigbee devices. Zigbee Router devices are mains-powered and will act as Zigbee signal repeaters within the Zigbee network mesh to extend its range and improve coverage, while Zigbee End Device devices are usually battery-operated sensors that will not act as Zigbee signal repeaters.

In the case of ZHA, the Zigbee Coordinator is a radio adapter or hardware module, that contains a microcontroller that runs the Zigbee protocol stack which the ZHA integration uses to manage and communicate with a Zigbee network and its devices.

Before installing the ZHA integration, you will need to buy and connect a Zigbee Coordinator radio adapter or hardware module, those usually come in the form of a USB dongle that plugs directly into the computer that is running the Home Assistant installation. The ZHA integration can work with many different “Zigbee Coordinator” adapters, however, be sure to read the respective sections below about compatible Zigbee radio adapters and hardware modules.

Once ZHA has been set up and the Zigbee Coordinator radio adapter or module is configured, you will be able to directly join/pair any Zigbee device to the Zigbee network; regardless of the manufacturer and brand of that Zigbee-based product. Note, that while it is generally recommended to buy Zigbee 3.0 compliant devices as those should, in theory, offer greater interoperability, be sure of the sections about which devices are supported and exception handling.

Copy link

clowg commented Jul 17, 2023

Do you have to do something special to get the Sonoff-E to show up in the SilLabs Multiprotocol add-on Configuration page?
I have the dongle plugged into a USB port on my HA server, and I have rebooted the system.
I am running HA 2023.7.2 on HAOS 10.3 on X64.
However, I only see the 4 /dev/tty devices in the Config page.

@darkxst
Copy link

darkxst commented Jul 17, 2023

@clowg Nothing special required, it should show up in the config page even it has the incorrect firmware on it.

What type of HA install are you running? If running in a VM (or Docker) you will need to pass the serial device through to the VM.

@clowg
Copy link

clowg commented Jul 17, 2023 via email

@darkxst
Copy link

darkxst commented Jul 17, 2023

The config page doesnt know anything about firmware. It should show any serial devices connected to your server. If you are running in a VM, check that serial device is passed through.

If you have the HA terminal addon you can run lsusb and check for the following ID
ID 1a86:55d4

@clowg
Copy link

clowg commented Jul 17, 2023 via email

@clowg
Copy link

clowg commented Jul 17, 2023

mmm... that device doesn't appear.

image

I wonder if it needs to be plugged into a USB2 port? That's the only thing I can think of that I can change.

@clowg
Copy link

clowg commented Jul 17, 2023

image

@darkxst
Copy link

darkxst commented Jul 17, 2023

I wonder if it needs to be plugged into a USB2 port?

It is recommended to use a USB2 port and USB extension cable to help avoid interference, but that wont have any impact on the device showing up or not.

Are you running HAOS in a VM or on bare metal?

@clowg
Copy link

clowg commented Jul 17, 2023

It’s on bare metal

@darkxst
Copy link

darkxst commented Jul 17, 2023

It’s on bare metal

Very strange, the USB Device should just show up as soon as its plugged in. All I can think of is a connection issue (not plugged in fully?) or a dead USB port. Maybe try some other USB device and see if that gets detected?

@clowg
Copy link

clowg commented Jul 18, 2023

Fixed it. Removed dongle and put into USB2 socket. Appeared straight away!
Thanks for you help.

@Hedda
Copy link

Hedda commented Jul 18, 2023

FYI, the ITead's Sonoff dongles are known to have extremely a short USB plug design so may therefore not work in all USB-ports because it does not get a physical connection due to its very short USB plug, as in it does not plug all the way into the port to make proper connection.

Workaround is to try to use USB extension cable as most of those have a longer USB port that will make a proper connection, An alternative is to try to connect the ITead's Sonoff dongle without its enclosure as that give you a another millimetre or so.

Another alternative to that some peaple done is to modify the computer chassi of the comouter by cutting away a piece around the USB port so that the Sonoff dongle can be plugged further in.

Copy link

Thank you very much! everything worked perfectly, very simple and straightforward, just plug it in and update, I was surprised that the firmware and all the information already appeared, thank you very much for your work

Copy link

clowg commented Sep 19, 2023

Do you have to re-pair your zigbee devices after updating the firmware to the latest version?

@darkxst
Copy link

darkxst commented Sep 19, 2023

@clowg if your just updating to the latest version of the multipan firmware there is no need to re-pair any devices.

Only on first install when migrating from EZSP zigbee firmware to multipan you might need to re-pair (ZHA can handle this migration though, Z2M is complicated...)

Copy link

Loky31 commented Feb 16, 2024

Hum. Just gave a try and still no joy for me:
2024-02-16 21:01:36 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.GECKO_BOOTLOADER at 115200 baud
2024-02-16 21:01:36 emscripten zigpy.serial[42] DEBUG Opening a serial connection to '/dev/webserial' (115200 baudrate)
2024-02-16 21:01:36 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x1540d98>
2024-02-16 21:01:36 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'3'
2024-02-16 21:01:38 emscripten webserial_transport[42] DEBUG Closing serial port
2024-02-16 21:01:38 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.CPC at 460800 baud
2024-02-16 21:01:38 emscripten zigpy.serial[42] DEBUG Opening a serial connection to '/dev/webserial' (460800 baudrate)
2024-02-16 21:01:38 emscripten webserial_transport[42] DEBUG Closed serial port

I'm doing it under chrome, is that an error? Mozilla seems not able to do it :(

Copy link

Loky31 commented Feb 16, 2024

Just changed of USB port. it seemed to work, I just clicked on the upgrade FW option and now I'm stuck at :
Installing firmware
The new firmware is now installing. Do not disconnect the Sonoff ZBDongle-E or close this browser window.

Progress: 0.0%

Copy link

Loky31 commented Feb 16, 2024

Just afraid to try anything and get my sonoff bricked :(

@shirou93
Copy link

Just afraid to try anything and get my sonoff bricked :(

It's seems broken.

Copy link

Loky31 commented Feb 16, 2024

Ok just done it again. Changed FW to mutli PAN and go it done !! youhou !!!
Now it's my zigbee2MQTT docker that is no more happy with it... damned!

@darkxst
Copy link

darkxst commented Feb 16, 2024

you need to reconfigure Z2M to connect directly to multiprotocol addon, as shown at the end of blog post.

Copy link

Hello,

With the webflasher I installed the Multi-PAN(RCP) firmware.

I have this error message in the Silicon Labs Flasher log.
[15:23:15] WARNING: No firmware found for the selected device, assuming firmware is installed.
Who knows why?

Below is the full list.

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service banner: starting


Add-on: Silicon Labs Flasher
Silicon Labs firmware flasher add-on

Add-on version: 0.2.0
You are running the latest version of this add-on.
System: Home Assistant OS 11.5 (amd64 / qemux86-64)
Home Assistant Core: 2024.2.2
Home Assistant Supervisor: 2024.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
[15:23:15] INFO: Checking /dev/ttyACM0 identifying SONOFF Zigbee 3.0 USB Dongle Plus V2 from ITEAD.
[15:23:15] WARNING: No firmware found for the selected device, assuming firmware is installed.
[15:23:15] INFO: universal-silabs-flasher-up script exited with code 0
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service universal-silabs-flasher: stopping
s6-rc: info: service universal-silabs-flasher successfully stopped
s6-rc: info: service banner: 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

@darkxst
Copy link

darkxst commented Feb 18, 2024

This is because Silabs flasher does not include a firmware for Sonoff Dongle. It can only be used with the "custom url" option to provide a link to firmware to install.

Copy link

Thanks darkxst.
Do you have the URL where I can download the firmware for Sonoff Dongle plus E?
Thank you very much,

@darkxst
Copy link

darkxst commented Feb 19, 2024

You already installed firmware with the webflasher ? so you shouldnt need Silabs flasher addon? However if your running multipan firmware with multiprotocol addon I recommend installing my multipan flasher addon:
https://github.com/darkxst/multipan_flasher

Anyway all firmware builds are on my github repo
https://github.com/darkxst/silabs-firmware-builder/tree/main/firmware_builds/zbdonglee

Copy link

Hey, the web flasher suggests installing the CP2102 driver if detection fails. However, doesn't the E version use the CH9102F chip?

@darkxst
Copy link

darkxst commented Feb 25, 2024

I dont use Windows myself, however I believe the universal CP2102 Silabs driver also supports CH9102. If there are issues with that however then you can use the CH343 driver from Qinheng.

Copy link

Thanks darkxst, everything works fine. The problem was simply the Silicon Labs Multiprotocol module, which I hadn't set up properly in HA.
Well done for your work

Copy link

Just got mine and having the problem with the webflasher:
The running firmware could not be detected.

2024-03-24 16:59:27 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.GECKO_BOOTLOADER at 115200 baud
2024-03-24 16:59:27 emscripten zigpy.serial[42] DEBUG Opening a serial connection to '/dev/webserial' (115200 baudrate)
2024-03-24 16:59:27 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x13acd78>
2024-03-24 16:59:27 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'x\x00\x80\xf8\x00x\x80\x00\x80\x00\xf8\xf8\x80\xf8\xf8x\xf8'
2024-03-24 16:59:27 emscripten universal_silabs_flasher.gecko_bootloader[42] DEBUG Parsing State.WAITING_FOR_MENU: bytearray(b'x\x00\x80\xf8\x00x\x80\x00\x80\x00\xf8\xf8\x80\xf8\xf8x\xf8')
2024-03-24 16:59:27 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'3'
2024-03-24 16:59:29 emscripten webserial_transport[42] DEBUG Closing serial port
2024-03-24 16:59:29 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.CPC at 460800 baud
2024-03-24 16:59:29 emscripten zigpy.serial[42] DEBUG Opening a serial connection to '/dev/webserial' (460800 baudrate)
2024-03-24 16:59:29 emscripten webserial_transport[42] DEBUG Closed serial port
2024-03-24 16:59:29 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x1a5ad30>
2024-03-24 16:59:29 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:29 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:29 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'x'
2024-03-24 16:59:29 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\x00'
2024-03-24 16:59:30 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 1 of 4)
2024-03-24 16:59:30 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\x80'
2024-03-24 16:59:30 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\xf8\x00x\x80\x00\x80\x00\xf8\xf8\x80\xf8\xf8x\xf8'
2024-03-24 16:59:30 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to parse buffer bytearray(b'\xf8'): ValueError('Invalid flag')
2024-03-24 16:59:30 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:30 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:31 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 2 of 4)
2024-03-24 16:59:31 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:31 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:32 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 3 of 4)
2024-03-24 16:59:32 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:32 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:33 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 4 of 4)
2024-03-24 16:59:33 emscripten webserial_transport[42] DEBUG Closing serial port
2024-03-24 16:59:33 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.CPC at 115200 baud
2024-03-24 16:59:33 emscripten zigpy.serial[42] DEBUG Opening a serial connection to '/dev/webserial' (115200 baudrate)
2024-03-24 16:59:33 emscripten webserial_transport[42] DEBUG Closed serial port
2024-03-24 16:59:33 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x1aadfc0>
2024-03-24 16:59:33 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:33 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:33 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\x11'
2024-03-24 16:59:34 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 1 of 4)
2024-03-24 16:59:34 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\x1a'
2024-03-24 16:59:34 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\xc1\x02\x02\x9b{~'
2024-03-24 16:59:34 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to parse buffer bytearray(b'~'): ValueError('Invalid flag')
2024-03-24 16:59:34 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:34 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:35 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 2 of 4)
2024-03-24 16:59:36 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:36 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:37 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 3 of 4)
2024-03-24 16:59:37 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:37 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:38 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 4 of 4)
2024-03-24 16:59:38 emscripten webserial_transport[42] DEBUG Closing serial port
2024-03-24 16:59:38 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.CPC at 230400 baud
2024-03-24 16:59:38 emscripten zigpy.serial[42] DEBUG Opening a serial connection to '/dev/webserial' (230400 baudrate)
2024-03-24 16:59:38 emscripten webserial_transport[42] DEBUG Closed serial port
2024-03-24 16:59:38 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x1aadeb8>
2024-03-24 16:59:38 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:38 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:38 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\x06'
2024-03-24 16:59:38 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\xe0'
2024-03-24 16:59:39 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 1 of 4)
2024-03-24 16:59:39 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\x98'
2024-03-24 16:59:39 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\xe0\x06\x18\x18\x9e\xf8\x9e\x86\xfe'
2024-03-24 16:59:39 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to parse buffer bytearray(b'\xfe'): ValueError('Invalid flag')
2024-03-24 16:59:39 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:39 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:40 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 2 of 4)
2024-03-24 16:59:40 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:40 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:41 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 3 of 4)
2024-03-24 16:59:41 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2024-03-24 16:59:41 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2024-03-24 16:59:42 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 4 of 4)
2024-03-24 16:59:42 emscripten webserial_transport[42] DEBUG Closing serial port
2024-03-24 16:59:42 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.EZSP at 115200 baud
2024-03-24 16:59:42 emscripten zigpy.serial[42] DEBUG Opening a serial connection to '/dev/webserial' (115200 baudrate)
2024-03-24 16:59:42 emscripten webserial_transport[42] DEBUG Closed serial port
2024-03-24 16:59:42 emscripten bellows.ezsp[42] DEBUG Resetting EZSP
2024-03-24 16:59:42 emscripten bellows.uart[42] DEBUG Resetting ASH
2024-03-24 16:59:42 emscripten bellows.uart[42] DEBUG Sending: b'1ac038bc7e'
2024-03-24 16:59:43 emscripten bellows.uart[42] DEBUG RSTACK Version: 2 Reason: RESET_POWER_ON frame: b'c102029b7b7e'
2024-03-24 16:59:43 emscripten bellows.ezsp[42] INFO NCP entered failed state. No application handler registered, ignoring...
2024-03-24 16:59:47 emscripten bellows.uart[42] DEBUG Connection lost: None
2024-03-24 16:59:47 emscripten bellows.uart[42] DEBUG Closed serial connection
2024-03-24 16:59:47 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.SPINEL at 460800 baud
2024-03-24 16:59:47 emscripten zigpy.serial[42] DEBUG Opening a serial connection to '/dev/webserial' (460800 baudrate)
2024-03-24 16:59:47 emscripten webserial_transport[42] DEBUG Closing serial port
2024-03-24 16:59:47 emscripten webserial_transport[42] DEBUG Closed serial port
2024-03-24 16:59:47 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x1ad4cd8>
2024-03-24 16:59:47 emscripten universal_silabs_flasher.spinel[42] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x02')
2024-03-24 16:59:47 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'~\x83\x02\x02\xe65~'
2024-03-24 16:59:47 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'x'
2024-03-24 16:59:47 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\x00'
2024-03-24 16:59:48 emscripten universal_silabs_flasher.spinel[42] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x02'), trying again in 0.10s (attempt 1 of 4)
2024-03-24 16:59:48 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\x80'
2024-03-24 16:59:48 emscripten universal_silabs_flasher.common[42] DEBUG Received data b'\xf8\x00x\x80\x00\x80\x00\xf8\xf8\x80\xf8\xf8x\xf8'
2024-03-24 16:59:48 emscripten universal_silabs_flasher.spinel[42] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x02')
2024-03-24 16:59:48 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'~\x83\x02\x02\xe65~'
2024-03-24 16:59:49 emscripten universal_silabs_flasher.spinel[42] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x02'), trying again in 0.10s (attempt 2 of 4)
2024-03-24 16:59:49 emscripten universal_silabs_flasher.spinel[42] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x02')
2024-03-24 16:59:49 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'~\x83\x02\x02\xe65~'
2024-03-24 16:59:50 emscripten universal_silabs_flasher.spinel[42] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x02'), trying again in 0.10s (attempt 3 of 4)
2024-03-24 16:59:50 emscripten universal_silabs_flasher.spinel[42] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x02')
2024-03-24 16:59:50 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'~\x83\x02\x02\xe65~'
2024-03-24 16:59:51 emscripten universal_silabs_flasher.spinel[42] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x02'), trying again in 0.10s (attempt 4 of 4)
2024-03-24 16:59:52 emscripten webserial_transport[42] DEBUG Closing serial port
2024-03-24 16:59:52 emscripten webserial_transport[42] DEBUG Closed serial port

@darkxst
Copy link

darkxst commented Mar 24, 2024

@ishimarumakoto What OS are you using?

If Linux, you must add your user to "dialout" group before it can work.

@ishimarumakoto
Copy link

@ishimarumakoto What OS are you using?

If Linux, you must add your user to "dialout" group before it can work.

Windows 11, mate
This was trying to use the webflasher

@darkxst
Copy link

darkxst commented Mar 25, 2024

On Windows you probably just need to make sure you have the correct drivers installed for CH9102 serial USB chip. Its not installed by default.

https://www.wch-ic.com/downloads/CH343SER_EXE.html

Or apparently the CP2102 universal drivers also work.

Copy link

This driver worked like a charm in win11, mate!
Thank you very much!!!!

@Hedda
Copy link

Hedda commented Mar 25, 2024

Mentioned in Zigbee2MQTT's guide -> https://www.zigbee2mqtt.io/guide/adapters/#is-your-os-unable-to-find-your-device

Is your OS unable to find your device?

If you're asking yourself "Why won't my dongle or adapter show up?" when you are using (for example) Flash Programmer 2, chances are that your OS can't communicate with your device over VCP (Virtual COM Port) serial port, causing your dongle not showing up as a flashable device. To fix this problem, be sure to install a USB-to-UART bridge/converter VCP driver for your operating system like the one at Silicon Labs, FTDI Chip, or WCH (CH34x/CH91xx).

@mauroc78
Copy link

I've followed your instructions but Zigbee2MQTT gives me this error:

zigbee2mqtt_error

this is the configuration

zigbee2mqtt_configuration

what do you think it's the problem ?

Thanks

@darkxst
Copy link

darkxst commented Mar 27, 2024

Z2M failed to connect to the MQTT broker. You need to fix that first or Z2M wont run.

@mauroc78
Copy link

Z2M failed to connect to the MQTT broker. You need to fix that first or Z2M wont run.

I've removed user and password and now it connect and work, thanks.

1
2

but there is this error

Assertion failed: Command (setValue(EzspValueId.VALUE_CCA_THRESHOLD, 0)) returned unexpected state: {"cls":"setValue","id":171,"isRequest":false,"status":55}

See this discussion : Koenkk/zigbee2mqtt#19168

@darkxst
Copy link

darkxst commented Mar 27, 2024

It looks it started up ok? if its running fine, you can ignore that error.

Copy link

Hi to all, I'm using the "web flasher" to flash the "router" firmware for the device. From2 different windows devices , When I select the .gbl file on the tool i get this error
https://ibb.co/588pwT2

The router firmware comes form this github
https://github.com/itead/Sonoff_Zigbee_Dongle_Firmware/tree/master/Dongle-E/Router

Anyone has suggestions to solve this problem?
Thanks in advance

@tl-sl
Copy link

tl-sl commented Jul 7, 2024

@ciottaciotta
Copy link

@ciottaciotta make sure you download the raw firmware file (not the html page)

https://github.com/itead/Sonoff_Zigbee_Dongle_Firmware/raw/master/Dongle-E/Router/Z3RouterUSBDonlge_EZNet6.10.3_V1.0.0.gbl

Thanks, my bad, this suggestion solved the issue!

Copy link

@darkxst Hi darkxst,The web tool you provided is very easy to use https://darkxst.github.io/silabs-firmware-builder/, but one thing makes me confused. In your firmware library, darkxst/silabs-firmware-builder provides ten There are three kinds of hardware firmware, but why does the web tool only support five kinds of dongle flashing? I would be grateful if you could answer my doubts.

@darkxst
Copy link

darkxst commented Sep 12, 2024

The list of devices I build firmware for has grown over time, but the web flasher hasn't been updated for all of these yet. I should add them eventually or happy to accept PR's adding new devices to web flasher ;)

Copy link

IKONhub commented Nov 21, 2024

Can I use it as a standalone TBR to connect matter devices to after flashing? Or does it always need to be connected to a PC running HA?

@darkxst
Copy link

darkxst commented Nov 21, 2024

Thread firmware is RCP (Remote co-processor) type, thus it always requires an agent running in docker on a PC. It doesnt need to be HA though, you can use the upstream OTBR docker container, which can work for eg on an ARM SBC or similar.

If you want a truly standalone OTBR, checkout the Espressif Thread gateway board. There are no ready made binaries for this afaik. so you do need to compile the apps using ESP-ISF, which isnt that easy if your new to these things.

https://github.com/espressif/esp-thread-br

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests