Device
| Field |
Value |
| Brand |
Shelly |
| Model |
Wave Plug S (EU) |
| Catalog file |
firmwares/shelly/qnpl-0A112EU.json |
manufacturerId |
0x0460 |
productType |
0x0002 |
productId |
0x0087 |
| Current firmware |
10.4.0 |
| Target firmware |
12.2 |
Symptom
Firmware update is offered by the OTA registry and starts successfully. All fragments are transmitted (100% progress), but the device then rejects the update:
[Node 009] Sending firmware fragment 9856 / 9856
[Node 009] Firmware update (part 1 / 1) failed with status Error_InvalidFirmwareTarget
HA entity update.steckerleiste_firmware reports in_progress: false, installed version remains 10.4.0.
Context
- Z-Wave JS Add-on: 1.4.0 (Home Assistant Core 2026.6.2)
- The update attempt was triggered via Home Assistant's update entity
- The catalog entry for
qnpl-0A112EU.json does not specify an explicit target field in the upgrade files (defaults to target 0 per _example.json)
Possibly related
This failure pattern is identical to #107 (Aeotec ZW187), where all fragments transfer successfully but the device returns Error_InvalidFirmwareTarget. The root cause in that issue remains unresolved.
I'm not sure whether the issue lies in the catalog entry (e.g. incorrect/missing target field) or in the firmware binary itself. Happy to provide additional Z-Wave JS debug logs if that helps diagnose — what information would be most useful?
Additional notes
This issue was discovered after fixing a separate KeyError: 'continuesToFunction' crash in zwave-js-server-python that was preventing the update attempt from even starting (fixed in zwave-js-server-python#1435, available in 0.72.0). With that bug fixed, the Error_InvalidFirmwareTarget now surfaces as the actual failure.
Device
firmwares/shelly/qnpl-0A112EU.jsonmanufacturerId0x0460productType0x0002productId0x0087Symptom
Firmware update is offered by the OTA registry and starts successfully. All fragments are transmitted (100% progress), but the device then rejects the update:
HA entity
update.steckerleiste_firmwarereportsin_progress: false, installed version remains10.4.0.Context
qnpl-0A112EU.jsondoes not specify an explicittargetfield in the upgrade files (defaults to target 0 per_example.json)Possibly related
This failure pattern is identical to #107 (Aeotec ZW187), where all fragments transfer successfully but the device returns
Error_InvalidFirmwareTarget. The root cause in that issue remains unresolved.I'm not sure whether the issue lies in the catalog entry (e.g. incorrect/missing
targetfield) or in the firmware binary itself. Happy to provide additional Z-Wave JS debug logs if that helps diagnose — what information would be most useful?Additional notes
This issue was discovered after fixing a separate
KeyError: 'continuesToFunction'crash inzwave-js-server-pythonthat was preventing the update attempt from even starting (fixed in zwave-js-server-python#1435, available in 0.72.0). With that bug fixed, theError_InvalidFirmwareTargetnow surfaces as the actual failure.