Problems reflashing my SkyConnect USB dongle back to EmberZNet

Received my SkyConnect USB dongle yesterday. plugged it in HA - and yep all seen correctly under ZHA.

So I tried moving it to multi-protocol operation (RCP-MultiPAN) but this is not suitable for me right now - so I need to get the unit back to EmberZNet.

I have followed the guides on manual reflashing - but the process is failing.

HA was installed via this approach -Generic x86-64 - Home Assistant, and is fully patched and up to date (via HA own update mechanisms). Hardware is a small Dell SFF PC.

After gaining access to the relevant HA Docker container (via SSH on p22222 from HA web terminal)- I installed universal-silabs-flasher following this guide :-

‘bash-5.1# universal-silabs-flasher --device /dev/serial/by-id/usb-Nabu_Casa_SkyConnect_v1.0_865226638318ec11b476f69a47486eb0-if00-port0 --baudrate 115200 --bootloader-baudrate 115200 flash --allow-cross-flashing --firmware EmberZNet/beta/NabuCasa_SkyConnect_EZSP_v7.1.3.0_ncp-uart-hw_115200.gbl
2022-12-30 12:02:10 homeassistant universal_silabs_flasher.flash[159] INFO Extracted GBL metadata: NabuCasaMetadata(metadata_version=1, sdk_version=<AwesomeVersion SemVer ‘4.1.3’>, ezsp_version=<AwesomeVersion SimpleVer ‘7.1.3.0’>
, fw_type=<FirmwareImageType.NCP_UART_HW: ‘ncp-uart-hw’>)
2022-12-30 12:02:10 homeassistant universal_silabs_flasher.flasher[159] INFO Probing ApplicationType.GECKO_BOOTLOADER
2022-12-30 12:02:12 homeassistant universal_silabs_flasher.flasher[159] INFO Probing ApplicationType.CPC
2022-12-30 12:02:16 homeassistant universal_silabs_flasher.flasher[159] INFO Probing ApplicationType.EZSP
Error: Failed to probe running application type
2022-12-30 12:02:21 homeassistant concurrent.futures[159] ERROR exception calling callback for <Future at 0x7fddc5f941f0 state=finished returned NoneType>
Traceback (most recent call last):
File “/usr/local/lib/python3.10/concurrent/futures/_base.py”, line 342, in _invoke_callbacks
callback(self)
File “/usr/local/lib/python3.10/asyncio/futures.py”, line 399, in _call_set_state
dest_loop.call_soon_threadsafe(_set_state, destination, source)
File “/usr/local/lib/python3.10/asyncio/base_events.py”, line 795, in call_soon_threadsafe
self._check_closed()
File “/usr/local/lib/python3.10/asyncio/base_events.py”, line 515, in _check_closed
raise RuntimeError(‘Event loop is closed’)
RuntimeError: Event loop is closed’

I’m assuming that reflashing back to EmberZNet can be done this way.

Any advice ?

Thanks,

Julian

Can you try unplugging the stick, plugging it back in, and re-running the flashing tool with -vvv for extra verbosity? Sometimes the firmware crashes when you abruptly stop the addon and it needs to be fully rebooted.

For example:

# universal-silabs-flasher -vvv --device ...

I’m having the same problem and the same error:

root@lego:~/silabs-firmware/EmberZNet/beta # universal-silabs-flasher -vvv --device /dev/ttyUSB0 flash --firmware NabuCasa_SkyConnect_EZSP_v7.1.3.0_ncp-uart-hw_115200.gbl
2023-01-17 13:16:21 lego asyncio[1124] DEBUG Using selector: EpollSelector
2023-01-17 13:16:21 lego universal_silabs_flasher.flash[1124] INFO Extracted GBL metadata: NabuCasaMetadata(metadata_version=1, sdk_version=<AwesomeVersion SemVer '4.1.3'>, ezsp_version=<AwesomeVersion SimpleVer '7.1.3.0'>, fw_type=<FirmwareImageType.NCP_UART_HW: 'ncp-uart-hw'>)
2023-01-17 13:16:21 lego universal_silabs_flasher.flasher[1124] INFO Probing ApplicationType.GECKO_BOOTLOADER
2023-01-17 13:16:21 lego universal_silabs_flasher.common[1124] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.gecko_bootloader.GeckoBootloaderProtocol object at 0x7fbb594100>, Serial<id=0x7fbb5d7ee0, open=True>(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2023-01-17 13:16:21 lego universal_silabs_flasher.common[1124] DEBUG Sending data b'3'
2023-01-17 13:16:23 lego universal_silabs_flasher.flasher[1124] INFO Probing ApplicationType.CPC
2023-01-17 13:16:23 lego universal_silabs_flasher.common[1124] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.cpc.CPCProtocol object at 0x7fbb594100>, Serial<id=0x7fbb5d7ee0, open=True>(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2023-01-17 13:16:23 lego universal_silabs_flasher.cpc[1124] 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'')))
2023-01-17 13:16:23 lego universal_silabs_flasher.common[1124] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2023-01-17 13:16:24 lego universal_silabs_flasher.cpc[1124] 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)
2023-01-17 13:16:24 lego universal_silabs_flasher.cpc[1124] 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'')))
2023-01-17 13:16:24 lego universal_silabs_flasher.common[1124] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2023-01-17 13:16:25 lego universal_silabs_flasher.cpc[1124] 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)
2023-01-17 13:16:25 lego universal_silabs_flasher.cpc[1124] 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'')))
2023-01-17 13:16:25 lego universal_silabs_flasher.common[1124] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2023-01-17 13:16:26 lego universal_silabs_flasher.cpc[1124] 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)
2023-01-17 13:16:26 lego universal_silabs_flasher.cpc[1124] 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'')))
2023-01-17 13:16:26 lego universal_silabs_flasher.common[1124] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2023-01-17 13:16:27 lego universal_silabs_flasher.cpc[1124] 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)
2023-01-17 13:16:27 lego universal_silabs_flasher.flasher[1124] INFO Probing ApplicationType.EZSP
2023-01-17 13:16:27 lego asyncio[1124] DEBUG Using selector: EpollSelector
2023-01-17 13:16:27 lego bellows.ezsp[1124] DEBUG Resetting EZSP
2023-01-17 13:16:27 lego bellows.uart[1124] DEBUG Resetting ASH
2023-01-17 13:16:27 lego bellows.uart[1124] DEBUG Sending: b'1ac038bc7e'
2023-01-17 13:16:32 lego bellows.uart[1124] DEBUG Connection lost: None
2023-01-17 13:16:32 lego bellows.uart[1124] DEBUG Closed serial connection
Error: Failed to probe running application type
2023-01-17 13:16:32 lego concurrent.futures[1124] ERROR exception calling callback for <Future at 0x7fbb594760 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

I’m running this on a completely seperate Raspberry Pi 4 so it has exclusive access to the Skyconnect dongle and I’m plugging it in just before running the command. I’ve also tried having the dongle inserted and power cycling the Pi, etc. All results are the same. I think it’s properly bricked.

Just read this bc I’ll have my SkyConnect on it’s way too… and was already researching to flash RCP firmware (bc I only want to use it for OpenThread atm).
Don’t you have a /dev/cu.SLAB_USBtoUART device instead of the pure serial one?
I think that one is needed to put it into DFU mode (without loosing connection while flashing).

I don’t have one of those. Any pointers on how to get it to create one?

Sorry, no.
I thought it should be there as that would be the USB to UART device.
Guess I’ll have to wait and see, when my SkyConnect arrives. It should be on it’s way.

Ok, you have to

  • unplug/replug the stick.
  • Stop/Disable any add-on that can access the SkyConnect stick (ZHA, Silabs Multiprotocol, …)
  • SSH & Web Terminal (from the Community Add-ons section, make sure to disable “Protection mode” to get direct hardware access)

as per : Flash Silicon Labs radio firmware manually ¡ NabuCasa/silabs-firmware Wiki ¡ GitHub

1 Like

I had to park this issue for a number of reasons. But picked it up this morning.
So I tried using the web driven solution :- https://skyconnect.home-assistant.io

i installed the necessary windows drivers on my laptop - and my dongle appeared.

Clicked the firmware upgrade - and my SkyConnect was eventually “de-bricked”.

Yey !

1 Like

The web driven solution didn’t work for me. I installed the necessary drivers but I still have the same error.
I am falling back to my old SONOFF stick for now.

Changing the baudrate to 230400 finally fixed it for me.

universal-silabs-flasher -vvv --device /dev/ttyUSB0 --baudrate 230400 flash --firmware NabuCasa_SkyConnect_EZSP_v7.1.1.0_ncp-uart-hw_115200.gbl

After this, https://skyconnect.home-assistant.io works fine.

2 Likes

Confirmed this worked for me too. Nice work, thanks!

At this stage, the web solution will work for dropping back to Zigbee or for going to Multi-PAN support.
Note: Multi-PAN support will only work if you use HA-OS and the Multi-PAN addon as it is software driven.
In the future a Thread only firmware will be available also. Personally I would wait for that and run Zigbee and Thread radios separately so you do not need to rely on software driven Multi-PAN

Having the same issue, none of the fixes above worked for me - tried the SL Web Tools aswell as the universal-silabs-flasher with different baud rate - no luck :confused:

Here is what I get from the SL Web Tools (on win, device detected as “SkyConnect v1.0 (COM4)”

2023-02-22 22:28:27 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.GECKO_BOOTLOADER
2023-02-22 22:28:27 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x16f4950>
2023-02-22 22:28:27 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'3'
2023-02-22 22:28:29 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.CPC
2023-02-22 22:28:29 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x174f6b0>
2023-02-22 22:28: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'')))
2023-02-22 22:28: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'
2023-02-22 22:28: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)
2023-02-22 22:28: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'')))
2023-02-22 22:28: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'
2023-02-22 22:28: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)
2023-02-22 22:28: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'')))
2023-02-22 22:28: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'
2023-02-22 22:28: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)
2023-02-22 22:28: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'')))
2023-02-22 22:28: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'
2023-02-22 22:28: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 4 of 4)
2023-02-22 22:28:34 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.EZSP
2023-02-22 22:28:34 emscripten bellows.ezsp[42] DEBUG Resetting EZSP
2023-02-22 22:28:34 emscripten bellows.uart[42] DEBUG Resetting ASH
2023-02-22 22:28:34 emscripten bellows.uart[42] DEBUG Sending: b'1ac038bc7e'
2023-02-22 22:28:39 emscripten bellows.uart[42] DEBUG Connection lost: None
2023-02-22 22:28:39 emscripten bellows.uart[42] DEBUG Closed serial connection
1 Like

Having the same issue. Nothing helps.

Here too. my sky connect stick seems to be really bricked.
The bootloader could not be entered.
After theres no way to flash the firmware with all here recommended steps, I tried the web updater.
Neither the web-firmware-updater under MacOS works nor the web updater under Windows (all with necessary latest drivers).
So I have now thrown the skyconnect in the trash and continue to use my previous zigbee adapter.

Same issue here. Randomly broke yesterday, no update or anything. Haven’t been able to flash it successfully yet.

Mine just bricked itself during the night, was running multi-pan since I initially got it without issues. I don’t have automatic updates running so it apparently just decided to stop working for ZHA and Thread. I did not have a power outage and the rest of my HA instance shows no signs of rebooting.

I tried power cycling, rolling back, changing ports and nothing worked until I plugged it into my PC and used the web updater to flash the most recent firmware. After that everything came back (well apart from Aqara Zigbee devices that have to be manually re-added as usual).

It’s a bit concerning that the stick can apparently just brick itself randomly.

Maybe this is of any help:

Same issue here!