Koenkk / Z-Stack-firmware

Compilation instructions and hex files for Z-Stack firmwares
MIT License
2.33k stars 643 forks source link

SONOFF ZigBEE 3.0 USB Dongle Plus Router Firmware #316

Closed xxsirosxx closed 2 years ago

xxsirosxx commented 2 years ago

Hello everyone. I tried to flip the router firmware on the SONOFF ZigBEE 3.0 USB dongle Plus which I didn't succeed. Whenever I plug in the dongle, I press the Boot button on the dongle. The process is always canceled with the error.

Initiate access to target: COM8 using 2-pin cJTAG. No response from device. Device may not be in bootloader mode. Reset device and try again. If problem persists, check connection and baud rate. Connecting over serial bootloader failed: No response from device. Device may not be in bootloader mode. Reset device and try again. If problem persists, check connection and baud rate. Failed to create device object.

Unbenannt

Maybe one of you can help me.

nanzer commented 2 years ago

Try holding the boot button down before inserting the dongle into the USB port, then releasing it after it's plugged in

Hedda commented 2 years ago

Maybe also try using llama-bsl and cc2538-bsl and give those projects feedback in how-to information is missing or lacking:

https://github.com/electrolama/llama-bsl

https://github.com/JelmerT/cc2538-bsl

PS: If not using Zigbee2MQTT (which does automatic backups?) it is recommended to do backups before upgrading firmware:

https://github.com/zigpy/zigpy-znp/blob/dev/TOOLS.md

xxsirosxx commented 2 years ago

I keep the button pressed while plugging it into the USB port. The router firmware was flashed, but it is no longer possible to go back to the coordinator or to flash the router firmware again. I think that I shot the bootloader with the bottles of router firmware.

Wh1terat commented 2 years ago

I have these dongles and have flashed a few times (router firmware and my own router firmware) without problem. As others have said, just a matter of holding down the button when you insert it.

tteck commented 2 years ago

I wish we had firmware with hardware flow control active.

Hedda commented 2 years ago

I wish we had firmware with hardware flow control active.

I understand switching to hardware flow control mode on this ITead Sonoff Zigbee 3.0 USB Dongle Plus adapter is done via the dip-switch on the board, so not by using a different firmware (like more usual) or do you need new firmware built for it too?

If so then just need to do so before enabling hardware flow control in the software application like Zigbee2MQTT or?

https://www.zigbee2mqtt.io/information/configuration.html

# Optional: RTS / CTS Hardware Flow Control for serial port (default: false) rtscts: true

Hardware flow control should in theory make for more stable serial communication since the flow control is off-loaded from the application and the system CPU to the MCU, but not sure if it will be more stable in the real world for Zigbee2MQTT.

Regardless, note that Hardware Flow Control should only be of interest for a Zigbee Coordinator and not for a Zigbee Router.

PS: Know I read that openHAB's Zigbee developer recommended hardware flow control for commercial use for added stability, however then we are talking about Zigbee Coordinators and Zigbee devices, not about dedicated stand-alone Zigbee routers.

Wh1terat commented 2 years ago

@Hedda https://sonoff.tech/wp-content/uploads/2021/09/Zigbee-3.0-USB-dongle-plus-firmware-flashing-1-1.docx

Hedda commented 2 years ago

I keep the button pressed while plugging it into the USB port. The router firmware was flashed, but it is no longer possible to go back to the coordinator or to flash the router firmware again. I think that I shot the bootloader with the bottles of router firmware.

Maybe try flashing it on a different computer and/or another operating system?

Note that first also need to stop Zigbee2MQTT.

Worked fine flashing with cc2538-bsl.py running in Linux on bare metal.

https://github.com/JelmerT/cc2538-bsl

I tested it on Raspberry Pi OS (previously called Raspbian).

https://www.raspberrypi.com/software/

https://www.raspbian.org/

Not tested flashing firmware with llama-bsl.py (fork of cc2538-bsl.py) but that should work as well:

https://github.com/electrolama/llama-bsl

Hedda commented 2 years ago

@Hedda https://sonoff.tech/wp-content/uploads/2021/09/Zigbee-3.0-USB-dongle-plus-firmware-flashing-1-1.docx

2. Enable hardware flow control and generate firmware (optional) section says "2.1 Import the ZNP project of CC1352P into CCS"

Does everyone have access to the ZNP project of CC1352P used to build modded Koenkk Z-Stack 3.x.0 coordinator firmware?

https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator

@Koenkk Would you maybe be willing to compile and host optional firmware images with hardware flow control enabled?

https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_3.x.0/bin

BTW, I guess this is really off-topic for this specific discussion since you do not use hardware flow control for a router image.

I wish we had firmware with hardware flow control active.

@tteck Probably best if post a new issue to request hardware flow control https://github.com/Koenkk/Z-Stack-firmware/issues

tteck commented 2 years ago

Does everyone have access to the ZNP project of CC1352P used to build modded Koenkk Z-Stack 3.x.0 coordinator firmware?

https://github.com/Koenkk/Z-Stack-firmware/blob/master/coordinator/Z-Stack_3.x.0/COMPILE.md

Wh1terat commented 2 years ago

I tried the latest version (simplelink_cc13x2_26x2_sdk_5_20_00_52) with Koenkk's patches but was unable to complete inquiry when pairing.

Failed to configure '0x00124b0024c2b86f', attempt 1 (Error: Bind 0x00124b0024c2b86f/8 genBasic from '0xbc33acfffe811d20/1' failed ({"address":28428,"clusterId":32801,"sequence":25} after 30000ms) at Timeout._onTimeout (/app/node_modules/zigbee-herdsman/src/utils/waitress.ts:64:35) at listOnTimeout (internal/timers.js:557:17) at processTimers (internal/timers.js:500:7))
xxsirosxx commented 2 years ago

I've tried the script again. https://github.com/JelmerT/cc2538-bsl The stick does not respond to the same problem.

C:\Users\Privat\cc2538-bsl-master\cc2538-bsl-master>py ./cc2538-bsl.py -p "com8" -evw "CC1352P2_CC2652P_launchpad_coordinator_20210708.hex" Opening port com8, baud 500000 Reading data from CC1352P2_CC2652P_launchpad_coordinator_20210708.hex Your firmware looks like an Intel Hex file Connecting to target... ERROR: Timeout waiting for ACK/NACK after 'Synch (0x55 0x55)'

Hedda commented 2 years ago

I wish we had firmware with hardware flow control active.

@tteck Probably best if post a new issue to request hardware flow control https://github.com/Koenkk/Z-Stack-firmware/issues

FYI, posted a separate request for a firmware with hardware flow control actived -> https://github.com/Koenkk/Z-Stack-firmware/issues/324 (if @tteck and others are interested).

mkaatman commented 2 years ago

I've tried the script again. https://github.com/JelmerT/cc2538-bsl The stick does not respond to the same problem.

C:\Users\Privat\cc2538-bsl-master\cc2538-bsl-master>py ./cc2538-bsl.py -p "com8" -evw "CC1352P2_CC2652P_launchpad_coordinator_20210708.hex" Opening port com8, baud 500000 Reading data from CC1352P2_CC2652P_launchpad_coordinator_20210708.hex Your firmware looks like an Intel Hex file Connecting to target... ERROR: Timeout waiting for ACK/NACK after 'Synch (0x55 0x55)'

I was getting this exact error from within a docker container, but when I did it from the (linux) host it worked.

Ultimately, I can't get any devices to show up while searching and the new firmware didn't change that.

Hedda commented 2 years ago

Whenever I plug in the dongle, I press the Boot button on the dongle.

Note that it is not enough to simply press the BTL button, you actually need to hold the BTL button before plug-in the dongle and keep holding it when plug-in, only releasing the button aft a few seconds when it should have gotten powered up.

I was getting this exact error from within a docker container, but when I did it from the (linux) host it worked.

If use Docker then need to forward/map your device from host machine to Docker instance, preferably via docker-compose:

https://www.zigbee2mqtt.io/guide/installation/02_docker.html#creating-the-initial-configuration

https://www.zigbee2mqtt.io/guide/installation/02_docker.html#docker-compose

Also see example:

https://www.home-assistant.io/integrations/zha/#cant-connect-to-usb-device-and-using-docker

mkaatman commented 2 years ago

Yeah I have it mapped. I can access it from HA->zha and zygpy-znp but that firmware update failed every time and after I updated firmware I still can't find any other devices. Thanks for the link I'll double check my syntax to pass it through.

Hedda commented 2 years ago

Yeah I have it mapped. I can access it from HA->zha and zygpy-znp but that firmware update failed every time

Then also make sure that you stop HA/ZHA app before upgrading as serial devices can only have one connection established.

mkaatman commented 2 years ago

Even with zha deleted I was getting it. I ultimately gave up and went back to conbee2 and everything if stable.

Hedda commented 2 years ago

FYI, several Home Assistant community members have tested Sonoff provided uartLog.py script which seems to confirm "Auto BSL" is working(?), so maybe possible to enter bootloader without need to open enclosure to manually press BTL button:

https://community.home-assistant.io/t/itead-sonoff-zigbee-3-0-usb-dongle-plus-adapter-based-on-texas-instruments-cc2652p/340705/45

https://community.home-assistant.io/t/itead-sonoff-zigbee-3-0-usb-dongle-plus-adapter-based-on-texas-instruments-cc2652p/340705/96

See uartlog.zig attached inside this docx which if unpacked contains uartLog.py

https://sonoff.tech/wp-content/uploads/2021/09/Zigbee-3.0-USB-dongle-plus-firmware-flashing-1-1.docx

cc2538-bsl.py also supports "Auto-BSL"

https://github.com/JelmerT/cc2538-bsl

See more information on what "Auto-BSL" does here:

https://electrolama.com/radio-docs/bsl/#auto-bsl

If can get that to work then can skip the BSL pushbutton press step to get the device into BSL mode in order for flashing it.

zuzuman commented 2 years ago

It's still not working. Seems like flashing firmware locked bootloader completely, and device not working at all (super small power consumption). Auto-BSL just showing the timeout error Timeout waiting for ACK/NACK after 'Synch (0x55 0x55)' Do you know, where I (we) can buy jtag module for re-flashing this?

Hedda commented 2 years ago

Do you know, where I (we) can buy jtag module for re-flashing this?

https://electrolama.com/radio-docs/advanced/flash-jtag/

"The cheapest option for an officially supported debugger is the CC-DEVPACK-DEBUG, available from most common electronics distributors"

https://www.ti.com/tool/CC-DEVPACK-DEBUG

Guess should be able to use most debuggers compatible with cJTAG (IEEE 1149.7 "Compact JTAG") via exposed TMS and TCK.

Hedda commented 2 years ago

FYI, several Home Assistant community members have tested Sonoff provided uartLog.py script which seems to confirm "Auto BSL" is working(?), so maybe possible to enter bootloader without need to open enclosure to manually press BTL button:

https://community.home-assistant.io/t/itead-sonoff-zigbee-3-0-usb-dongle-plus-adapter-based-on-texas-instruments-cc2652p/340705/45

https://community.home-assistant.io/t/itead-sonoff-zigbee-3-0-usb-dongle-plus-adapter-based-on-texas-instruments-cc2652p/340705/96

See uartlog.zig attached inside this docx which if unpacked contains uartLog.py

https://sonoff.tech/wp-content/uploads/2021/09/Zigbee-3.0-USB-dongle-plus-firmware-flashing-1-1.docx

cc2538-bsl.py also supports "Auto-BSL"

https://github.com/JelmerT/cc2538-bsl

See more information on what "Auto-BSL" does here:

https://electrolama.com/radio-docs/bsl/#auto-bsl

If can get that to work then can skip the BSL pushbutton press step to get the device into BSL mode in order for flashing it.

I have by the way confirmed that running the attached uartLog.py script does indeed make ITead's Sonoff Zigbee 3.0 Plus adapter enter bootloader mode on Windows OS (Windows 11) and after that I could flash it directly with both python cc2538-bsl.py -p COM5 -evw CC1352P2_CC2652P_launchpad_coordinator_20210708.hex and llama-bsl.py -p COM5 -b 115200 -evw CC1352P2_CC2652P_launchpad_coordinator_20210708.hex without having open its enclosure and pressing the BRL button which I think is very convenient. The script also lists all active COM ports on MS Windows (tested on Windows 10) and have you enter the number of the COM port, but note that the script is hardcoded for Windows COM ports.

Attached: uartLog.zip

zuzuman commented 2 years ago

Is it possible to flash without c/jTag? With Raspberry only?

Hedda commented 2 years ago

Is it possible to flash without c/jTag? With Raspberry only?

Maybe check out this: https://gist.github.com/hwhw/fc43892785aa84913d03495c97b0f25a

That is written for CC2538 but could be maybe be similar if it works without TDI and TDO. As what you needed is a cJTAG programming mode because CC2652 uses that by default. cJTAG mode only uses RESET, TCK and TMS pins, as CC2652 doesn't have TDI and TDO. You of course also need POWER (VCC) and GROUND.

image

zuzuman commented 2 years ago

After router firmware update device is dead. R.I.P. my sonoff device :(

Hedda commented 2 years ago

After router firmware update device is dead. R.I.P. my sonoff device :(

Even if can no longer get into the bootloader you should still be able to unbrick the hardware if flash using cJTAG via TCK and TMS.

https://electrolama.com/radio-docs/advanced/flash-jtag/

https://www.ti.com/tool/CC-DEVPACK-DEBUG

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

VoyteckPL commented 2 years ago

I have the same problem. What is the reset button for? How can I revert to coordinator software?

Hedda commented 2 years ago

How can I revert to coordinator software?

To revert you just need to flash a coordinator firmware again (CC1352P2_CC2652Plaunchpad*.zip):

https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_3.x.0/bin

https://github.com/Koenkk/Z-Stack-firmware/tree/develop/coordinator/Z-Stack_3.x.0/bin

To flash suggest you test this -> https://github.com/JelmerT/cc2538-bsl/pull/114 (and report flashing success or not there).

What is the reset button for?

If you need to manually enter bootloader then you should hold the "boot" button before plugging dongle into USB port.

image

VoyteckPL commented 2 years ago

How can I revert to coordinator software?

To revert you just need to flash a coordinator firmware again (CC1352P2_CC2652Plaunchpad*.zip):

https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_3.x.0/bin

https://github.com/Koenkk/Z-Stack-firmware/tree/develop/coordinator/Z-Stack_3.x.0/bin

To flash suggest you test this -> JelmerT/cc2538-bsl#114 (and report flashing success or not there).

The problem is the it doesn't go into bootloader mode.... I hold boot button when plugging it in.

Hedda commented 2 years ago

The problem is the it doesn't go into bootloader mode.... I hold boot button when plugging it in.

With this patch you should no longer need to press any buttons at all as it will enter BSL via software -> https://github.com/JelmerT/cc2538-bsl/pull/114

(downlad "ITead_Sonoff_Zigbee-delay" branch -> https://github.com/JelmerT/cc2538-bsl/tree/feature/ITead_Sonoff_Zigbee-delay )

More information and discussion about automatically start of BSL mode on Itead Sonoff USB stick here -> https://github.com/JelmerT/cc2538-bsl/issues/113

npirtube commented 2 years ago

Hi xxsirosxx would you mind sharing a download link for the SmartRF Flash Programmer tool?

From the TI website it is impossible to download it and I can't find it anywhere to download.

xxsirosxx commented 2 years ago

Hi I would rather recommend ZigStar. https://github.com/xyzroe/ZigStarGW-MT

Hedda commented 2 years ago

Hi I would rather recommend ZigStar. https://github.com/xyzroe/ZigStarGW-MT

FYI, ZigStar GW Multi tool doesn't yet support flashing USB adapters using Silabs CP2102N like ITead Sonoff USB Plus Dongle, see:

https://github.com/xyzroe/ZigStarGW-MT/issues/2

would you mind sharing a download link for the SmartRF Flash Programmer tool?

From the TI website it is impossible to download it and I can't find it anywhere to download.

The official links should work now again as parts of their website were just temporarily down for maintenance:

https://www.ti.com/tool/download/FLASH-PROGRAMMER-2

davrodfer commented 2 years ago

Is it possible to flash without c/jTag? With Raspberry only?

These are my steps in an raspberry-pi:

export BASEDIR=`~/sonoff_dongle/`
mkdir -p $BASEDIR
cd $BASEDIR
git clone https://github.com/JelmerT/cc2538-bsl.git
git clone https://github.com/Koenkk/Z-Stack-firmware.git
unzip Z-Stack-firmware/coordinator/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_*.zip
sudo service zigbee2mqtt stop
pip3 install pyserial intelhex python-magic
Hedda commented 2 years ago

@davrodfer But will that work if first have accidentally flashed it with the wrong firmware image and messed up the bootloader?

Maybe check out this: https://gist.github.com/hwhw/fc43892785aa84913d03495c97b0f25a

That is written for CC2538 but could be maybe be similar if it works without TDI and TDO. As what you needed is a cJTAG programming mode because CC2652 uses that by default. cJTAG mode only uses RESET, TCK and TMS pins, as CC2652 doesn't have TDI and TDO. You of course also need POWER (VCC) and GROUND.

So if you "bricked it" then you will need to "unbrick it" by flashing firmware via a c/JTAG debug probe instead of flashing it via USB.

That is, if you do not have a working bootloader then think it will need to flash via the 2-pin cJTAG (a.k.a C-JTAG or c/JTAG) and not just common JTAG SWD as TI CC2652 debug do not use SWD and SWDCLK, etc. but instead only TMS and TCK (cJTAG is not SWD/SWDCLK). See details at → Flash Firmware using c/JTAG - Electrolama

https://electrolama.com/radio-docs/advanced/flash-jtag/

Looking at pictures on ITead’s product page for the Sonoff CC2552P board you see that no SWD and SWDCLK pads are exposed, but it does expose TMS and TCK pads so those is what you need to use.

So will probably need cJTAG debug probe (e.i. external debugger adapter) with TMS and TCK, and thus you will need to use a cJTAG compatible debugger probe adapter like Texas Instruments XDS110 or a clone of TI’s XDS110.

image

Again, the official Texas Instruments TMDSEMU110-U XDS110 JTAG Debug Probe is a bit expensive and currently looks to be out-of-stock, but cheap clones of XDS110 JTAG debug probe should work, see example:

https://aliexpress.com/item/4000751867419.html

https://www.ti.com/tool/TMDSEMU110-U

andreytse commented 2 years ago

Sorry for off topic and stupid question, but if I will flash dongle with router firmware, did it start working like zigbee network extender? No need to be connected directly to "computer"? Just simple 5VDC power supply like phone charger will be enough?

ptvoinfo commented 2 years ago

@andreytse Yes, it works as an extender. You need 5V only.

io53 commented 2 years ago

@davrodfer But will that work if first have accidentally flashed it with the wrong firmware image and messed up the bootloader?

Maybe check out this: https://gist.github.com/hwhw/fc43892785aa84913d03495c97b0f25a That is written for CC2538 but could be maybe be similar if it works without TDI and TDO. As what you needed is a cJTAG programming mode because CC2652 uses that by default. cJTAG mode only uses RESET, TCK and TMS pins, as CC2652 doesn't have TDI and TDO. You of course also need POWER (VCC) and GROUND.

So if you "bricked it" then you will need to "unbrick it" by flashing firmware via a c/JTAG debug probe instead of flashing it via USB.

That is, if you do not have a working bootloader then think it will need to flash via the 2-pin cJTAG (a.k.a C-JTAG or c/JTAG) and not just common JTAG SWD as TI CC2652 debug do not use SWD and SWDCLK, etc. but instead only TMS and TCK (cJTAG is not SWD/SWDCLK). See details at → Flash Firmware using c/JTAG - Electrolama

https://electrolama.com/radio-docs/advanced/flash-jtag/

Looking at pictures on ITead’s product page for the Sonoff CC2552P board you see that no SWD and SWDCLK pads are exposed, but it does expose TMS and TCK pads so those is what you need to use.

So will probably need cJTAG debug probe (e.i. external debugger adapter) with TMS and TCK, and thus you will need to use a cJTAG compatible debugger probe adapter like Texas Instruments XDS110 or a clone of TI’s XDS110.

image

Again, the official Texas Instruments TMDSEMU110-U XDS110 JTAG Debug Probe is a bit expensive and currently looks to be out-of-stock, but cheap clones of XDS110 JTAG debug probe should work, see example:

https://aliexpress.com/item/4000751867419.html

https://www.ti.com/tool/TMDSEMU110-U

As the TI Launchpad devkits has onboard XDS110, I guess those can be used for flashing also. Way cheaper than an official standalone XDS110 and as a bonus you can use it as coordinator/router too :).

Hedda commented 2 years ago

As the TI Launchpad devkits has onboard XDS110, I guess those can be used for flashing also. Way cheaper than an official standalone XDS110 and as a bonus you can use it as coordinator/router too :).

Yes the TI LAUNCHXL-CC26xR1 and the TI LAUNCHXL-CC1352P does have integrated XDS110 debugger, however a less expensive stand-alone option today for an officially supported debugger adapter is the Texas Instruments CC-DEVPACK-DEBUG for ~$15(US):

https://www.ti.com/tool/CC-DEVPACK-DEBUG

However, the official TMDSEMU110-U XDS110 JTAG Debug Probe is still a better option for developers as offer more options:

https://www.ti.com/tool/TMDSEMU110-U

The original Texas Instruments XDS110 JTAG debug probe is a bit expensive but cheap clones of it should also work. Examples:

https://aliexpress.com/item/4000751867419.html

https://aliexpress.com/item/32976279419.html

Also, note that original Segger J-Link V9 (legacy) debug probes does not support cJTAG, so need at least Segger J-Link V10 series:

https://wiki.segger.com/J-Link_Model_Overview

Electrolama posted a handy pinout reference for CC-DEVPACK-DEBUG:

https://electrolama.com/radio-docs/advanced/flash-jtag/

image

Two GUI tools to use with CC-DEVPACK-DEBUG are SmartRF Flash Programmer v2 (Windows OS only) or UniFlash (cross-platform).

shudack commented 2 years ago

In the path you need to remove the spaces. I noticed that you have spaces in path: "...ee Stick/CC1352P2..." Try to put the hex file in C:\

E.g.: C:\CC1352P2_CC2652P_launchpad_coordinator_20211217.hex

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

heapxor commented 2 years ago

Hello, i tried to flash firmware using official docx and app Flashprogrammer crashed during the process... So i opened device, pressed button to get booaloader etc... and reflashed

Initiate access to target: COM5 using 2-pin cJTAG. Reading file: C:/Users/xxx/Downloads/cc2538-bsl-master/CC1352P2_CC2652P_launchpad_router_20220125.hex. Start flash erase ... Erase finished successfully. Start flash programming ... Programming finished successfully. Start flash verify ... Skip verification of unassigned page: 23. Skip verification of unassigned page: 24. Skip verification of unassigned page: 25. Skip verification of unassigned page: 26. Skip verification of unassigned page: 27. Skip verification of unassigned page: 28. Skip verification of unassigned page: 29. Skip verification of unassigned page: 30. Skip verification of unassigned page: 31. Skip verification of unassigned page: 32. Skip verification of unassigned page: 33. Skip verification of unassigned page: 34. Skip verification of unassigned page: 35. Skip verification of unassigned page: 36. Skip verification of unassigned page: 37. Skip verification of unassigned page: 38. Skip verification of unassigned page: 39. Skip verification of unassigned page: 40. Skip verification of unassigned page: 41. Skip verification of unassigned page: 42. Page: 0 verified OK. Page: 1 verified OK. Page: 2 verified OK. Page: 3 verified OK. Page: 4 verified OK. Page: 5 verified OK. Page: 6 verified OK. Page: 7 verified OK. Page: 8 verified OK. Page: 9 verified OK. Page: 10 verified OK. Page: 11 verified OK. Page: 12 verified OK. Page: 13 verified OK. Page: 14 verified OK. Page: 15 verified OK. Page: 16 verified OK. Page: 17 verified OK. Page: 18 verified OK. Page: 19 verified OK. Page: 20 verified OK. Page: 21 verified OK. Page: 22 verified OK. Page: 43 verified OK. Verification finished successfully. Reset target ... Reset of target successful.

Even reflashed it doesnt work at all... is it possible that Crash - bricked it? In case it was bricked is it possible to unbrick?

thanks!

hvanmegen commented 2 years ago

I have the exact same problem; ordered a 2-pack of these dongles to replace my broken old zigbee stick based on the older (unstable) chips.. but I can't get them to start in bootloader/flashing-prepared mode either, no matter how long I keep the button pressed after inserting the device into an USB slot. I'm going to try and see if the https://github.com/JelmerT/cc2538-bsl/pull/114 thing works, otherwise I just spent 32 euro's on 2 underweight paperweights..

hvanmegen commented 2 years ago

I got it to work after I installed the CP210x Universal driver @ https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers.

Then when I ran this command in Windows Powershell (after installing Python and running pip install pyserial intelhex):

$comports = Get-WMIObject Win32_SerialPort; $comports |Get-PnpDeviceProperty -InstanceId {$_.pnpdeviceid} -Keyname DEVPKEY_Device_BusReportedDeviceDesc |ForEach-Object { foreach($comport in $comports) {if ($comport.pnpdeviceid -eq $_.instanceid) { new-object psobject -property @{COMPORT = $comport.deviceid; 'Device-Name' = $_.data} } } }

It then showed the device plugged into the COM3 port:

> $comports = Get-WMIObject Win32_SerialPort; $comports |Get-PnpDeviceProperty -InstanceId {$_.pnpdeviceid} -Keyname DEVPKEY_Device_BusReportedDeviceDesc |ForEach-Object { foreach($comport in $comports) {if ($comport.pnpdeviceid -eq $_.instanceid) { new-object psobject -property @{COMPORT = $comport.deviceid; 'Device-Name' = $_.data} } } }

COMPORT Device-Name
------- -----------
COM3    Sonoff Zigbee 3.0 USB Dongle Plus

After that I could run the command to flash the device into coordinator mode by running python cc2538-bsl.py -p COM3 -evw --bootloader-sonoff-usb .\coordinator.hex. (after copying the coordinator firmware to coordinator.hex in the directory of the python script, obviously)

Tstrijker commented 2 years ago

I got it to work after I installed the CP210x Universal driver @ https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers.

Then when I ran this command in Windows Powershell (after installing Python and running pip install pyserial intelhex):

$comports = Get-WMIObject Win32_SerialPort; $comports |Get-PnpDeviceProperty -InstanceId {$_.pnpdeviceid} -Keyname DEVPKEY_Device_BusReportedDeviceDesc |ForEach-Object { foreach($comport in $comports) {if ($comport.pnpdeviceid -eq $_.instanceid) { new-object psobject -property @{COMPORT = $comport.deviceid; 'Device-Name' = $_.data} } } }

It then showed the device plugged into the COM3 port:

> $comports = Get-WMIObject Win32_SerialPort; $comports |Get-PnpDeviceProperty -InstanceId {$_.pnpdeviceid} -Keyname DEVPKEY_Device_BusReportedDeviceDesc |ForEach-Object { foreach($comport in $comports) {if ($comport.pnpdeviceid -eq $_.instanceid) { new-object psobject -property @{COMPORT = $comport.deviceid; 'Device-Name' = $_.data} } } }

COMPORT Device-Name
------- -----------
COM3    Sonoff Zigbee 3.0 USB Dongle Plus

After that I could run the command to flash the device into coordinator mode by running python cc2538-bsl.py -p COM3 -evw --bootloader-sonoff-usb .\coordinator.hex. (after copying the coordinator firmware to coordinator.hex in the directory of the perl script, obviously)

The CP210x Universal driver solved the problem for me. If your on Windows check if the driver are correly installed for the com port. Thank you @hvanmegen for you solution.

janmashat commented 2 years ago

Have any Windows users tried this docker path? https://github.com/JelmerT/cc2538-bsl/issues/120

kanapka94 commented 2 years ago

I got it to work after I installed the CP210x Universal driver @ https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers.

Then when I ran this command in Windows Powershell (after installing Python and running pip install pyserial intelhex):

$comports = Get-WMIObject Win32_SerialPort; $comports |Get-PnpDeviceProperty -InstanceId {$_.pnpdeviceid} -Keyname DEVPKEY_Device_BusReportedDeviceDesc |ForEach-Object { foreach($comport in $comports) {if ($comport.pnpdeviceid -eq $_.instanceid) { new-object psobject -property @{COMPORT = $comport.deviceid; 'Device-Name' = $_.data} } } }

It then showed the device plugged into the COM3 port:

> $comports = Get-WMIObject Win32_SerialPort; $comports |Get-PnpDeviceProperty -InstanceId {$_.pnpdeviceid} -Keyname DEVPKEY_Device_BusReportedDeviceDesc |ForEach-Object { foreach($comport in $comports) {if ($comport.pnpdeviceid -eq $_.instanceid) { new-object psobject -property @{COMPORT = $comport.deviceid; 'Device-Name' = $_.data} } } }

COMPORT Device-Name
------- -----------
COM3    Sonoff Zigbee 3.0 USB Dongle Plus

After that I could run the command to flash the device into coordinator mode by running python cc2538-bsl.py -p COM3 -evw --bootloader-sonoff-usb .\coordinator.hex. (after copying the coordinator firmware to coordinator.hex in the directory of the python script, obviously)

It works ! Also after installation Universal Drivers Sonof Dongle appeared in Flash Programmer 2

hvanmegen commented 1 year ago

Very glad to see that me posting my solution here helped at least 2 other people.. We are The Community, my friends.. stay awesome!

david-steg commented 1 year ago

I still have "ERROR: Timeout waiting for ACK/NACK after 'Synch (0x55 0x55)" :(.