Failure to upgrade firmware to 1.57

I have several LZW31-SN - Dimmer Switches (Red) and have been trying all afternoon to upgrade from 1.44 without success. I keep getting an error similar to ‘the device was unable to receive the firmware data.’

I’m using the Hubitat (C-7: Firmware Uploader. I’ve looked through the forums and tried the trick air-gapping the switch, excluded and re-added the switch, rebooted the Hubitat, repeated all of the above in about every possible order. And yet I’m still unable to upgrade the firmware. There do not seem to be any helpful logs or errors that point to any obvious solution. How can I figure this out?

Some people have had bad luck with Hubitat’s built-in firmware updater. It sounds like you’ve tried the most reasonable troubleshooting steps.

If you still want to try updating using Hubitat, I might suggest the “community” Z-Wave firmware updater driver. You’ll need the “binary” version for the dimmers in order to update both firmware targets, so I’d look at this post for that particular version:

No guarantees that this will work, either (I can only assume most of the code is the same between the two; the community member who wrote that is now staff who wrote the built-in app).

If you’re open to using something outside of Hubitat, say Z-Wave PC Controller on a Windows computer (or ZWaveJS2MQTT, maybe) as a secondary controller or a separate network, then using that to update the firmware, most people have had pretty good luck that way. This does require a USB Z-Wave stick, of which there are several (Aeon, Zooz, HomeSeer, ZWaveMe, and the Silicon Labs reference sticks are all examples, some of which can be found for close to $20 USD and many under $30). Those instructions are here:

1 Like

That’s the updater I’ve been trying to use.

In that case, you might want to do the reverse: try the built-in Device Firmware Updater app (this is an app, not a driver; you can switch it back to your preferred driver). If that still doesn’t work, PC Controller or another “outside” option might be your only way.

1 Like

If you turn on debug logging, and look at the logs from the firmware update, is the size of the firmware an exact multiple of 40 bytes, plus 1? If so, you might be affected by the off-by-one error I documented (and fixed) in Unable to update Black Switch firmware using Hubitat - #4 by mbbush

You can see the change I made to fix it in the linked github pull request.

I had the same problem. If you’ve got S2 enabled on your dimmers, then it’s possible you’re running into the same bug I encountered. Modify the secureCommand() method at the bottom of the firmware update driver so that it looks like this:

String secureCommand(String cmd) {
    if (getDataValue("zwaveSecurePairingComplete") != "true") {
        log.debug("sending non-secure command ${cmd}")
        return cmd
    } else {
        log.debug("sending secure command ${cmd}")
        return zwaveSecureEncap(cmd)

Hopefully that works for you. I should probably submit a PR for that…