[RELEASE] Z-Wave Firmware Updater

I'm not really sure what's going on. I need a little help. I tried to update a Zooz Zen21 from 3.1 to 3.4. I had the file hosted on Google Drive and used a site to get the direct download link. That part seemed to work well. I'm assuming it updated, because the switch seems to have reverted back to it's defaults.

I was using it as a scene controller with the relay disabled. Hitting the switch, I can hear the relay clicking. I also had the LED indicator light always off and it's on now when the switch is disabled. So I changed the driver in HE back to the Zooz Central Scene Switch. It's still showing the firmware is 3.1. Even after making sure the preferences are correct and hitting configure, the relay is still enabled and the LED indicator stays on.

It seems to sorta still be functional. It controls a Zwave switch that has a lamp plugged in. The wall switch doesn't do anything, but I can click the "push" button in HE and the lamps turns on, but it's very very delayed (like 3 - 5 seconds). But to turn them off, I have to go to the device list and open the plug and click "off".

1 Like

Did you exclude, and then reinclude the Zen21 from Hubitat after the firmware upgrade?

Scott

1 Like

I did not. I'm not sure how to do that. I'll look it up in a little bit, try it, and report back.

1 Like

Has anyone used this to update a Levition DZS15 switch? I see the .hex file for DZ15S, but not for DZS15. They wouldn't use the same firmware would they?

For whatever reason, on a Firmware update, Zooz devices tend to need to be Excluded and Included again.

To exclude your switch, put the hub in "Exclusion Mode" (found on the Zwave details page), and when that is running, press the upper part of the paddle 3 times fairly rapidly. If successful, the log should show "unknown zwave device excluded".

You may have to try it several times, and possibly even move your hub closer to the switch.

Once you've excluded it, use the Add Device button on the devices page, and select Zwave. Once the hub is in inclusion mode, press the bottom of the paddle three times quickly as well. It should join fairly easily.

Note, you'll want to change your rules that use the switch to use another switch (temporarily) or set up a virtual switch to fill in, and remove the switch your excluding, BEFORE you do the exclude, or you could find a bunch of broken rules that you may be forced to fix. Once you've excluded and reincluded, you can go back and update the rules and remove the placeholder.

S.

3 Likes

Excluding and re-including fixed it. But then I was having problems with the switch not functioning properly. No matter what I changed in the preferences, I could not get the relay to disable. I am just using it as a scene controller to control some lamps in our bedroom that are plugged into a Zwave plug.

I was able to get it working by using @bcopeland's Zen21 driver found here. So I think there is a bug in the built-in driver for the Zen21 running firmware 3.4. It was working fine when I was on 3.1.

3 Likes

Glad you sorted it out. Can't help with the relay issue, as I don't use my switches that way. Sorry!

S.

2 Likes

There is. I don't know if the Hubitat staff is aware of it though. The new firmware has a lot more parameters, and I was getting constant errors in the logs with the stock (built-in) driver, especially when I changed a setting or ran a configure. Bryan's updated driver works great from what I can see on my side of things.

1 Like

Thank you for this updater!! What is the context of the URL for the driver? - I'm not sure where this is running from to know the context. The driver was emailed to me, so I have it stored on a local drive on my laptop - is the "c:\users..." context correct or do I need to put this driver somewhere for the updater to find it. I ask because as I write this the Updater has been "downloading the firmware" for about 15 minutes with no status update.

1 Like

Yes. On some local or cloud web server. Many people use GitHub.

1 Like

The updater is running on the Hubitat hub. You have to put it at a URL that is accessible from there. Either a local web server or something like Google Drive.

1 Like

BTW - I don't know the programming specifics for Hubitat Drivers (seems to be a hidden system to get started) but is there a way to change a specific configuration parameter in a device if that configuration is not supported by the driver? Don't need it by control or to vary it - it's a matter of changing function upon installation, but that function is not presented in the driver interface.

1 Like

If the device is a z-wave device and you know the z-wave parameter (as well as the desired value), you can temporarily change the driver to Basic Z-wave tool, change the parameter's value, and then change back to the original driver.

You can get Basic Z-wave Tool from Hubitat's Github:

Not sure what you can do for zigbee devices ....

2 Likes

Thanks - I'll give it a try. Been trying to find references like these in the documentation!

THANKS!!

1 Like

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.

2 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