ITead's "Sonoff Zigbee 3.0 USB Dongle Plus" (model "ZBDongle-P") based on Texas Instruments CC2652P radio SoC/MCU

Were you able to do this? If so any chance of a few steps?

cc2538-bsl.py works

2 Likes

Yeah. If I remember right, it was something quite close to this: Flash Firmware using cc2538-bsl - Electrolama

2 Likes

Has anyone migrated there Z2MQTT from a CC2531 to one of these?

From a CC2530 + CC2591. Just make sure you use 1.21.x or higher, then no re-pairing required.

2 Likes

Thanks (also to @francisp). Is it possible to enter BSL without disassembly? The iTEAD guide implies so using a python script (but I think it only works in Windows).

EDIT: To answer my own question, the uartLog.py can still be used, but you need to remove the hardcoded COM suffix in the serial port name for it to use Linux dev paths instead.

1 Like

I removed the cover and pressed the button while inserting the stick in the USB.

1 Like

Thanks - I managed to do it without opening the case (see above).

Yes, I had only to switch usb port and comment out config option related to led (z2m throwed an error, that is not able to control led on this coordinator)
All 20 zigbee devices were recognized, but most of them showed as disconnected on the map.
I didn’t wait, but started messing around wit database and backup, finally ending up with empty list of devices. After repairing a few of them (ac powered), I noticed that all were back.
Now it is working with no issues for a few days.

Coordinator type zStack3x0
Coordinator revision 20210120

Nice! I have now also confirmed that running the attached uartLog.py script from Sonoff docx part from ITead’s HOW TO FLASH FIRMWARE TO CC2652P instructions do indeed make ITead’s Sonoff Zigbee 3.0 Plus Dongle automatically enter bootloader mode and after running that script just to get into BSL mode I could flash it directly using llama-bsl.py and cc2538-bsl.py scripts without having open the enclosure and pressing the BTL button which I too indeed found very convenient.

I first tested with llama-bsl GitHub - electrolama/llama-bsl: Python cross-platform script to upload firmware via the serial boot loader onto the CC13xx, CC2538 and CC26xx SoC.

python llama-bsl.py -p COM5 -evw CC1352P2_CC2652P_launchpad_coordinator_20210708.hex

I then also tested running the uartLog.py script again to test cc2538-bsl GitHub - JelmerT/cc2538-bsl: Python cross-platform script to upload firmware via the serial boot loader onto the CC13xx, CC2538 and CC26xx SoC.

python cc2538-bsl.py -p COM5 -evw CC1352P2_CC2652P_launchpad_coordinator_20210708.hex

Both upgrades worked fine.

You might have to manually install/upgrade a few dependencies if do not installed/upgraded properly:

python -m pip install --upgrade pip setuptools wheelpy gevent llama-bsl

python -m pip install --upgrade pip setuptools wheelpy gevent cc2538

Though it might be better to download latest llama-bsl master branch or cc2538-bsl main branch versions from https://github.com/electrolama/llama-bsl and https://github.com/JelmerT/cc2538-bsl as latest fixes might not be in a release published on PyPi via pip

Other prerequisites is that had already installed CP210x USB to UART Bridge VCP Drivers from Silicon Labs and Python for Windows (Windows Installer 64-bit version)

As mentioned the uartLog.py script also lists all active COM ports on MS Windows (tested on Windows 10) so only have you enter the number of the COM port, but note that the script is currently hardcoded for Windows COM ports so would need to be modified before it can be used under Linux.

PS: By the way, submitted “Auto BSL” support for Sonoff Plus Dongle as a feature request for llama-bsl here → Automatically start BSL mode on ITead SONOFF Zigbee 3.0 USB Dongle Plus stick adapters · Issue #11 · electrolama/llama-bsl · GitHub

2 Likes

Thank you.
So, in order to upgrade the dongle to the latest z2mqtt firmware we have to do all that complicated stuff?

I have now a cc2531 and am planning to upgrade. Im waiting to the end of November because according to Iteads web page they will have more stock available by then.

1 Like

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

1 Like

No you don’t. Just push the button and use TI’s Flash Programmer2 software.

No. I only posted those as alternative options to upgrade it without opening it or upgrading via Windows, and by including several different alternatives I made it more it sound more complex than it needs to be.

If have a Windows computer then the easiest is to follow Sonoff’s guide for Smart Flash Programmer 2. The downside with that is need to open the enclosure for button access to manually enter boot mode.

Not being able to enter BTL via “Auto BSL” using the software would mean not upgrading remotely.

That said, if don’t need alternatives or know why then follow this guide made simpler with fewer steps:

Guide for how-to upgrade firmware on Sonoff USB Plus Dongle without openning its enclosure

The main benefit of this method is that don’t need to open the dongles enclosure/casing, (this method could also be made to work across Windows, MacOS and Linux platforms if modify uartLog.py or better yet patch cc2538-bsl with working delays for CP2102N dongle uses).

  1. Install Silabs CP210x drivers (if not already installed/available, at least needed on Windows).
  2. Install Python for Windows (Windows Installer version)
  3. In command-prompt run: python -m pip install --upgrade pip setuptools wheel ​gevent cc2538
  4. Get “uartlog.zip” ZIP file package from either Sonoff docx or cc2538-bsl issue #113, open/unpack “uartLog.py” to ex. "C:\temp" then in command-prompt run: C:\temp\uartLog.py to get option and enter correct number for COM port (note that this step would no longer be needed in the future if and when “Auto BSL” gets patched with working delays for Sonoff USB Plus dongle in the cc2538-bsl script).
  5. Download latest firmware from Z-Stack-firmware/coordinator/Z-Stack_3.x.0/bin at master · Koenkk/Z-Stack-firmware · GitHub and unpack to example "C:\temp" then in command-promt run: python cc2538-bsl.py -p COM5 -evw C:\temp\CC1352P2_CC2652P_launchpad_coordinator_20210708.hex (replacing COM5 with correct COM port and right name/version and location of unpacked firmware file).

Again, this guide could relatively easily be translated to Linux or Mac OS and be further automated via scripting, (the problem there is that the uartLog.py script from Sonoff has been hardcoded for Windows COM ports so the port manager in it needs to be modified).

Tip! cc2538-bsl can be replaced by experimental llama-bsl fork if willing to test it, though it has same “Auto BSL” delay issue with Sonoff USB Plus dongle, but developer of llama-bsl is considering adding several additional features that will make it more user-friendly than cc2538-bsl:

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

PS: ITead/Sonoff own developers could of course have made this much simpler if they themselves submitted patches to cc2538-bsl script.

2 Likes

Thank you. I am using linux.
I’ll report back when/if there is stock and test the dongle :slight_smile:

1 Like

Hi all having trouble identifying which usb device this is when it’s plugged into HA. What device ID are you using in your zigbee2mqtt config?

Open Supervisor → System → Hardware

In my case it is ttyUSB0 -

1 Like

Ahhh, I thought it could be that. Thanks so much.

Not sure what I am doing wrong, hopefully someone here can point out what’s wrong as after 20 minutes on the new coordinator the devices still aren’t connected.
I am coming from a CC2531 running 1.2 firmware and going to the sonoff zibgee stick 3.0, which I have flashed with CC1352P2_CC2652P_launchpad_coordinator_20210708. Z2M is running version 1.22 and there are no errors in the log other than when I try to turn a light off and it times out on receiving a signal. I stopped z2m unplug old coordinator, plug in new coordinator. Put the new serial id in (see below) and start up z2m. I have given up twice now and put in the old coordinator and everything just works still. Any pointers would be appreciated.

data_path: /config/zigbee2mqtt
external_converters: []
devices: devices.yaml
groups: groups.yaml
homeassistant: true
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://##########
  user: #####
  password: ##########
serial:
  port: >-
    /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_c61e7dcd5e93eb11b8d11b4f3d98b6d1-if00-port0
advanced:
  log_level: warn
  pan_id: 6754
  channel: 25
  network_key:
    - 1
    - 3
    - 5
    - 7
    - 9
    - 11
    - 13
    - 15
    - 0
    - 2
    - 4
    - 6
    - 8
    - 10
    - 12
    - 13
  availability_blocklist: []
  availability_passlist: []
  report: false
device_options: {}
blocklist: []
passlist: []
queue: {}
frontend:
  port: 8099
experimental:
  new_api: true
socat:
  enabled: false
  master: pty,raw,echo=0,link=/dev/ttyZ2M,mode=777
  slave: tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5
  options: '-d -d'
  log: false
  restartdelay: 1
  initialdelay: 1