Koenkk / Koenkk/zigbee-OTA

OTA firmware update stalls for Legrand device

Open
#888 17 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
667
Forks
330
Avg merge
15h 19m
Merged PRs (30d)
31

Description

logs-19.txt

Summary:
OTA update for Legrand Zigbee device (e.g., Double gangs remote switch) initiates and transfers image blocks successfully, but stalls before completion.

Details:

  • Device: Double gangs remote switch (IEEE 0x0004740000b92752)
  • ManufacturerCode: 4129, imageType: 22
  • Update starts, blocks transfer as expected, controller responds with status=0
  • Progress remains at 0%, never completes
  • Near end of transfer, device sends cluster 'manuSpecificLegrandDevices' command '9', which fails:
    Failed to parse frame: Error: Cluster 'manuSpecificLegrandDevices' has no command '9'
  • Zigbee2MQTT logs: No converter available for this cluster/command
  • No "upgrade end request" or error message received from device

Possible causes:

  • Missing manufacturer-specific command support in Zigbee2MQTT/OTA handler
  • Firmware expects unsupported protocol after block transfer
  • Firmware image or device resource issue

Suggested actions:

  • Investigate support for Legrand manufacturer-specific clusters/commands post-OTA
  • Add or update converter for 'manuSpecificLegrandDevices' (command '9')
  • Confirm full OTA update sequence and post-transfer handling for Legrand devices

Relevant log excerpt:

[2025-09-30 15:12:12] zh:controller: Failed to parse frame: Error: Cluster 'manuSpecificLegrandDevices' has no command '9'
[2025-09-30 15:12:12] z2m: No converter available for '067774' with cluster 'manuSpecificLegrandDevices' and type 'raw' and data '{"data":[21,33,16,32,9,82,39,185,0,0,116,4,0,1],"type":"Buffer"}'

Log file available for full details.

Image

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the attached logs and trace the OTA sequence for the Legrand device through the post-transfer handling. Investigate how the manuSpecificLegrandDevices command 9 is parsed and how completion is detected. Done means the full update sequence completes without stalling and the behavior is covered by an appropriate verification case.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.