[RELEASE] Z-Wave Firmware Updater

LZW30 bricked. No matter if I reset twice like people have mentioned, it always returns to wake your sleepy device. You get one command... just one, and then it's done. :frowning:

Wait. Not bricked. If I change back to Eric's driver and air gap it, it works after the reboot just fine. I just went through 3 attempts back and forth and every time when I return to Eric's driver it works.

So the switch isn't the problem, it's something to do with the firmware updater :frowning:

Here's what happened the first time I tried... every attempt after this gets the wake your sleepy device:

dev:6212020-05-23 09:54:31.386 pm debugskip: SwitchBinaryReport(value:0, targetValue:0, duration:0)
dev:6212020-05-23 09:54:17.569 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:54:05.559 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:53:53.574 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:53:41.826 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:53:29.581 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:53:17.536 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:53:05.568 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:52:53.559 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:52:41.566 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:52:29.663 pm debugGot request for fragment #:1 packing report and sending
dev:6212020-05-23 09:52:29.529 pm infoOK. The device will initiate the firmware update of the target specified in the Firmware Update Meta Data Request Get Command
dev:6212020-05-23 09:52:29.057 pm debug7A03031E040175D600002800
dev:6212020-05-23 09:52:29.039 pm debugFirmware Descriptor: [wFirmWareCommonSize:32710, wFirmWareBank1Size:31940, wFirmWareBank2Size:27700, wFirmWareBank3Size:27829, manufacturerId:798, firmwareId:1025, checksum:49301] 
dev:6212020-05-23 09:52:28.768 pm infocalculating crc...
dev:6212020-05-23 09:52:27.712 pm debugOTZ Headers: [compressedLength:93525, crc16compressed:2025, unCompressedCrc16:839, scramblingKey:65903c6e0ff121eb2903cbeff022, firmwareDescriptorChecksum:49301, fastLzLevel:1]
dev:6212020-05-23 09:52:27.671 pm infogot otz compressed image reading compression header
dev:6212020-05-23 09:52:27.668 pm infofirmware total bytes: 93552
 dev:6212020-05-23 09:52:27.665 pm infoSorted all the bytes. cleaning up some memory...
dev:6212020-05-23 09:52:27.661 pm debugParser: EOF
dev:6212020-05-23 09:52:24.751 pm debugParser: 16 bit shift: 0x1
dev:6212020-05-23 09:52:13.699 pm debugParser: 16 bit shift: 0x0
dev:6212020-05-23 09:52:13.671 pm debugpacking all the bytes...
dev:6212020-05-23 09:52:12.412 pm debugfirmwareMdReport: checksum 19745 firmwareId: 1025 manufacturerId: 798 maxFragmentSize: null firmwareTargets: 0
dev:6212020-05-23 09:52:12.404 pm debugFirmwareMDReport: FirmwareMdReport(manufacturerId:798, firmwareId:1025, checksum:19745, firmwareUpgradable:false, numberOfTargets:0, maxFragmentSize:null, firmwareIds:[])

After this, every attempt (with single or double air-gaps all the same) just stops after the firmware descriptor and the unadorned long hex string:

[dev:621](http://hubitat/logs#dev621)2020-05-23 10:55:05.876 pm [debug](http://hubitat/device/edit/621)7A03031E040175D600002800
[dev:621](http://hubitat/logs#dev621)2020-05-23 10:55:05.859 pm [debug](http://hubitat/device/edit/621)Firmware Descriptor: [wFirmWareCommonSize:32710, wFirmWareBank1Size:31940, wFirmWareBank2Size:27700, wFirmWareBank3Size:27829, manufacturerId:798, firmwareId:1025, checksum:49301]

Have you tried the steps in this post? They have worked for all of my switches.

3 Likes

Although I have only used this with the Inovelli Red dimmers, it has worked extremely well for me and obviously for others as well. Go back and follow @Terk's post.

1 Like

@bcopeland Bryan, this utility is forever making my Hubitat home automation habit easier. I'm a bit slow sometimes, but today I had an epiphany, cut an old power cable up, and made a "device flashing" wiring harness.

Now, I can join in wall devices before I install them, flash them, exclude them, and then install them with the newest firmware already in place and join them in their final location. Your app makes it easy as pie. Brilliant!

S.

4 Likes

I have never needed to attach a power cord to a pie. I have always just used a fork. Some people over complicate everything. :wink:

3 Likes

Poor man's way of warming it. Quick and decorative.

S.

3 Likes

Yes, that double reset was what I was referring to when I said (ambiguously)

Timing can be difficult because it processes it so quickly, so I tried it more than a dozen times. Even when I get the timing perfectly so that the switch has rebooted fully before the parsing is complete and it tries to tell the switch... same result.

EtA: I just realized I was misinterpretting the instruction as "air gap" meaning both out and in again. So I redid it it by leaving it airgapped until it prompted to wake. No matter how many times or how quickly I pushed it back in it never "went to the next step"

It does however continue to function as a light switch just fine. But the updater never gets past the first "wake your sleep device" stage no matter how long I wait. See light on/off logs below:

[dev:621](http://hubitat/logs#dev621)2020-05-24 12:44:23.685 pm [debug](http://hubitat/device/edit/621)skip: SwitchBinaryReport(value:0, targetValue:0, duration:0)

[dev:621](http://hubitat/logs#dev621)2020-05-24 12:44:20.024 pm [debug](http://hubitat/device/edit/621)skip: SwitchBinaryReport(value:255, targetValue:0, duration:0)

I just updated my second Zen21. An exclude and include alone didn't work. I had to exclude it, then factory reset it (tap-tap-tap and hold on the upper paddle for 10 seconds), and then include it and it worked great.

Interesting. I had a couple that took more than 1 exclude cycle to exclude them...but I've never had to factory reset. Good to know for the future!

S

I had one switch out of my 15 that wouldn't go to the next step the first day I tried it and it was like the 8th switch I had done, I must have tried it 7 times that day. A couple of days later when it was the last switch I had to get updated I tried it again and it worked the first time like the rest of the switches, no idea why (maybe because the hub had been shutdown for a few minutes between there for something else?).

Any way to set up the updater to allow a direct update from the local machine without having to do it via URL (ie: click a "Browse" button and have it update from its location on the desktop)? I'm able to use the SimpleHTTPServer app, but it would make is much easier to do updates.

1 Like

Not as yet.. As there is no functionality for this in the driver framework

Before I update the Inovelli Red Dimmer, does it act like the Zooz devices where you have to re-pair it? Hoping not to deal with that, since I'm starting to get apps set up to handle the functionality in hubitat and do not want to have to redo them all like I did with the Zooz.

1 Like

Nope.. the red dimmer doesn't need a re-pair when you update.. I think this is happening on the zooz units because they added features and even added command classes which makes the node information frame different..

2 Likes

I'm struggling to update some inovelli red series dimmers. Here are the logs from me attempting to update one of my devices. I updated 2 when I only had a few devices on my network. I've since moved over the rest of my devices, so I have about 30 inovelli devices running and 10-15 other branded devices. Now, I cant seem to update any inovelli device. Each device I've tried updating seems to fail in a similar way. It never seems to get beyond fragment 1. Any ideas?

dev:2952020-05-26 08:54:13.424 am debugGot request for fragment #:1 packing report and sending
dev:2952020-05-26 08:54:01.439 am debugGot request for fragment #:1 packing report and sending
dev:2952020-05-26 08:54:01.201 am infoOK. The device will initiate the firmware update of the target specified in the Firmware Update Meta Data Request Get Command
dev:2952020-05-26 08:54:00.479 am debug7A03031E0101FFBD00002E00
dev:2952020-05-26 08:54:00.462 am debugFirmware Descriptor: [wFirmWareCommonSize:32748, wFirmWareBank1Size:28672, wFirmWareBank2Size:32402, wFirmWareBank3Size:32703, manufacturerId:798, firmwareId:257, checksum:23067]
dev:2952020-05-26 08:54:00.238 am infocalculating crc...
dev:2952020-05-26 08:53:59.577 am debugOTZ Headers: [compressedLength:101325, crc16compressed:23183, unCompressedCrc16:62946, scramblingKey:45f02275ff275e4475e4175e42, firmwareDescriptorChecksum:23067, fastLzLevel:1]
dev:2952020-05-26 08:53:59.547 am infogot otz compressed image reading compression header
dev:2952020-05-26 08:53:59.545 am infofirmware total bytes: 101352
dev:2952020-05-26 08:53:59.544 am infoSorted all the bytes. cleaning up some memory...
dev:2952020-05-26 08:53:59.542 am debugParser: EOF
dev:2952020-05-26 08:53:54.956 am debugParser: 16 bit shift: 0x1
dev:2952020-05-26 08:53:45.011 am debugParser: 16 bit shift: 0x0
dev:2952020-05-26 08:53:44.959 am debugpacking all the bytes...
dev:2952020-05-26 08:53:43.427 am debugfirmwareMdReport: checksum 5607 firmwareId: 257 manufacturerId: 798 maxFragmentSize: 46 firmwareTargets: 1
dev:2952020-05-26 08:53:43.424 am debugFirmwareMDReport: FirmwareMdReport(manufacturerId:798, firmwareId:257, checksum:5607, firmwareUpgradable:false, numberOfTargets:1, maxFragmentSize:46, firmwareIds:[4660])
dev:2952020-05-26 08:53:41.701 am infoVersionReport- applicationVersion:1.35
dev:2952020-05-26 08:53:41.699 am infoVersionReport- zWaveProtocolVersion:6.4
dev:2952020-05-26 08:53:40.721 am infoFirmwareUpdateMd version:4
dev:2952020-05-26 08:52:24.840 am infoVersionReport- applicationVersion:1.35
dev:2952020-05-26 08:52:24.838 am infoVersionReport- zWaveProtocolVersion:6.4

1 Like

Out of curiosity.. Try this version:

No luck, it had the same result.

Current States

  • currentFirmwareVersion : 1.35
  • firmwareFragmentSize : 40
  • firmwareId : 0101
  • firmwareTarget : 0
  • firmwareUpdateProgress : FAILED: The device was unable to receive the requested firmware data
  • firmwareUploadPercent : 0%
  • lockedBy : None
  • manufacturerId : 031E

dev:2952020-05-26 10:10:22.520 am debugGot request for fragment #:1 packing report and sending
dev:2952020-05-26 10:10:10.521 am debugGot request for fragment #:1 packing report and sending
dev:2952020-05-26 10:09:58.526 am debugGot request for fragment #:1 packing report and sending
dev:2952020-05-26 10:09:46.618 am debugGot request for fragment #:1 packing report and sendingdev:2952020-05-26 10:09:46.238 am infoOK. The device will initiate the firmware update of the target specified in the Firmware Update Meta Data Request Get Command

:thinking:

1 Like

Do a z-wave repair.. Then go back to the original z-wave firmware updater code

@bcopeland I note a change in your profile name. Are congrats in order here?

7 Likes