[SNEAK PEEK] Z-Wave firmware updating inside HE

@aaiyar You go to this website and at the bottom click the link to request the firmware update.. It will bring you to their ticket system to create a ticket..

https://www.support.getzooz.com/kb/article/297-zen22-dimmer-change-log/

Looks like there have been a few changes since 2.0:

VER. 2.01 (released 12/2017)

Hardware:

  • Removed logo from paddle

Firmware: 20.15

  • Added a setting to enable/disable LED indicator
  • Added communication signaling from LED indicator (blinks when in inclusion/exclusion mode)

VER. 2.02 (released 4/2018)

Firmware: 1.06

  • Added OTA firmware updates
  • Added ramp rate control (slow / fast only)

VER. 2.03 (released 10/2018)

Firmware: 1.07

  • Added double-tap from off to full brightness
  • Added a setting to control status after power failure

VER. 3.0 (released 3/2019)

Hardware:

  • Updated back cover for easier installation (larger terminal holes)
  • Added foam to packaging

Firmware: 3.0

  • Changed association settings to send separate reports for manual and Z-Wave control
  • Added S2 security
  • Added the ability to switch between LED modes with 6 quick clicks
  • Added Built-in Timer
  • Added full ramp rate control
  • Added minimum and maximum brightness level settings
  • Added double-tap from on to full / maximum brightness
  • Added the ability to reset the switch to factory settings from the device directly
  • Added the ability to control load by pressing any of the paddles

VER. 3.01

Hardware:

  • Made the LED indicator smaller
  • Terminal screws arrive loose (unscrewed) for easier installation

Firmware: 3.01

  • Added scene control
  • Added double-tap behavior control
  • Added the ability to disable local control

VER. 3.02

Firmware: 3.02

  • Reduced manual control delay related to scene control functionality
2 Likes

Thanks! Done.

1 Like

And the firmware updates are pretty safe.. There are crc checksums everywhere..

Whole image crc, compressed area crc, firmware descriptor crc, some other crc in the firmware descriptor, and crc checks on each of the 2,500+ zwave packets... They went a little overboard with the CRCs...

2 Likes

Trust.. During this development process I have made many mistakes and the devices have just rejected them..

1 Like

If I had any Z-wave devices I would have loved to test this :slight_smile: It's a cool thing to write!

1 Like

No, there isn't. I've talked to Jasco numerous times about this and each time the response is always the same... It is along the lines that if you find an issue with your device and there is a new firmware they will replace it if it is under warranty. Otherwise, no updates. In fact, I've tried to pull firmware to make my own images from my switches/dimmers in case I could push them to my lower version switches and dimmers and that doesn't seem to work either. I've never been able to pull anything from them.

A long while back I found a web page that outlined the process of soldering wires onto the hardware to get an image but I haven't tried that and I'm not sure where/if I saved the page.

It's one of the reasons I have started buying from companies that release firmware images.

@bcopeland Pretty neat POC you have going on here.

4 Likes

BTW.. To anyone who still thinks HE is under-powered.. This code should prove otherwise..

It downloads a firmware image off the internet in hex format..
Parses it into binary
Runs CRC16 on the whole image
Reads header information
Decompresses the firmware image
Reads the firmware descriptors
Selects the correct firmware update target based on the descriptor and meta data
And then processes 2,500+ requests for individual parts of the firmware and computes a crc16 checksum on each of these packets..

On my production hub... while it's doing other automatons... In fact you can see a stall in the firmware transfer as motion lighting turned off all the lights in the room that I was transferring the image to... The stall is not a slow down.. The spec is designed to pause firmware fragment requests when there is increased activity on the mesh..

6 Likes

Benchmark that sucker. :stuck_out_tongue: :wink:

5 Likes

This is awesome news! Great work!

Now, if only Fibaro would actually allow updates through anything other than their own controllers... :frowning_face:

At least I'll be able to update some of my Aeotec devices, though.

1 Like

There is more than one Mike in these Communities. :wink:
I had thought about putting your tag in there and putting a smiley after it but thought perhaps if you were actually rewriting the drives and couldn't spare the time. :wink:

2 Likes

Mike has a lot more on his plate than just drivers..

5 Likes

I am only kidding. I know all of the HE team have more to do than they have time for. That they have any time to participate here is amazing.

8 Likes

Major progress today..

  • Major reorganization / code cleanup
  • parsing of hex and otz file formats
  • Support for firmware update MD CC v1-4
  • Firmware activation on CC v4+
  • Support for all status report messages

Tested on aeotec multisensor 6 - firmware update md cc v2
Tested on inovelli red dimmer - firmware update md cc v4

10 Likes

Also tested on .hex format file and .otz (compressed)

and added support for FastLZ level 2 compression just had level 1 before..

4 Likes

Wow man! I can't believe you're working on this! Thanks a ton!

I'm real new here, just got my HE last week, but I am loving it. I've been known to write some code, but haven't done so with my home automation stuff (aside from basic manipulations to ST drivers).

Will PM you with my GitHub name....

1 Like

I have the following Aeotec firmwares extracted for the beta..

US, EU, and AU regions
ZW100 - MultiSensor 6 - V1.13
ZW116 - Nanosmartswitch - V2.01
ZW132 - DualNanoSwitch - V2.02
ZW139 - NanoSwitch - V2.00
ZW141 - NanoShutter - V3.01

6 Likes

Can't wait to see the code! :nerd_face:
For the past months I have been doing this with my secondary controller, now having a direct way is even nice!

2 Likes

Todo list for today:

  • Locking mechanism - To prevent accidental or impatient double click
  • Memory cleanup of data that is no longer used
  • Reduction of debug logging - and adding of enable debug logging preference
  • Add reminder for wakeup of sleepy devices on no response after x time
  • Test of parser on hex files that need 0xFF byte padding (boot loader area)
  • Work on update MD CC v5+ packets
5 Likes

It is underpowered for many uses, And your specific app working does not "prove otherwise".

And that is not to take away from your work - it's pretty cool, even if it isn't something I'll personally use.

I would not like to get into the Middle of this, but, the Hub is able to be a 'well powered' Home Automation Hub. I think it would be underpowered for tasks like gravity mapping, heat flow analysis etc. It is IO bound, but a lot of THAT is due to the 9.6k half duplex nature of some ZWave devices. The CPU on the other hand, would be doing nothing, really fast. Which, if you can have it be doing something instead, would be done, really fast. If the CPU is 'churning' on a DB retry loop or garbage collection, or any of the other potential problem areas of Java, then that speed/performance is wasted on what looks just like "nothing, really fast".

4 Likes