-
-
Notifications
You must be signed in to change notification settings - Fork 634
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request] Ability for Z-Wave JS to perform OTW firmware updates of Z-Wave 700 series USB sticks like the Silabs UZB-7, Aeotec Z-Stick 7, and Zooz USB 700 Series Z-Wave Plus S2 Stick #2545
Comments
As long as the standard Silabs Gecko bootloader is used it should be also able to upgrade firmware via XMODEM binary transfer: As such a workaround could be to port or modify Elelabs EZSP Firmware Update Utility and/or walthowd firmware updater image: https://github.com/Elelabs/elelabs-zigbee-ezsp-utility https://github.com/walthowd/husbzb-firmware While Elelabs EZSP Firmware Update Utility is made for Silabs Zigbee adapters it works with EFR32 that have a similar bootloader(?). PS: Like other Z-Wave 700 sticks it is based on EFR32ZG14 Zen Gecko Z-Wave and require CP210x USB to UART Bridge VCP Drivers. https://www.silabs.com/documents/public/schematic-files/PHD14501.zip |
I'm not saying this isn't worthwhile, but one issue is that the firmware is bundled with Simplicity Studio. If OTW was supported, from where would you get the file? By the point you install that to get the file you're already one click from upgrading in Simplicity Studio. |
Being able to download the software and then just point to a bin file (or whatever the extension is) to update is much easier than installing additional software and having to run it. This is especially true if you are running zwavejs in a headless environment on a non-Ubuntu host. |
It doesn't work that way though. You have to run Simplicity Studio to tell it to install the additional tools for zwave to have it install the next 2-3 GB including the zwave controller. At least I think that is the point at which it is installing the file. The whole thing is a series of enormous downloads. If someone can verify that it installs the file on the Mac version (which can install but not run the zwave controller), or that it is installed in the first download, then it is of much greater utility. |
FTR, I just emailed Zooz and Aeotec to see if they intend to distribute firmware files directly for their sticks either now or in the future. As indicated above, SiLabs documents suggest that OTW updates for the UZB-7, and likely the other 700 sticks, is via the XMODEM protocol. Baud rate is 115200 bps. https://www.silabs.com/community/wireless/z-wave/knowledge-base.entry.html/2019/01/04/z-wave_700_programm-4Hx0 Rather than try to use one of the Python implementations linked, there is at least one XMODEM module for Node.js. https://github.com/exsilium/xmodem.js/ |
I guess the question here is also about if the Z-Wave JS project/community should even bother to ask for permission before hosting and/or distributing commercial companies self-contained copyrighted OTW firmware images in their unmodified binary blob format (e.i. .gbl, .ebl, .hex, .s37, .bin, .img, etc.). Distributing unmodified copyrighted firmware binary blobs is usually fine as long as you simply do not ask for permission. You would be using these OTW firmware image files for their intended purpose and that should not hurt the company in any way. It is probably better not to ask and just do, wait and hope that they will not send your cease and desist letter. I am guessing that the chances are much higher than you are more likely to get a no as the answer if you ask in advance than them stopping you later if you do not ask at all in the first place. Not sure if fully legal or not but from what I can tell hardware manufacturers normally do not actively chase or sue open-source projects for simply hosting and/or distributing their companies self-contained binary blobs such as firmware image files or driver binaries as long as they are not modified in any way or used for anything other then their intended purposes. For reference, see examples https://github.com/Koenkk/Z-Stack-firmware/ and https://github.com/Koenkk/zigbee-OTA Maybe not quite covered by "Fair use" or "Fair dealing" |
FYI, one of the benefits of the firmware updater Docker image by walthowd is that it contains scripts to probe/scan to detect which exact adapter it is and if the adapter supports it can automatically restart it into bootloader-mode so it can upgrade "automagically" https://github.com/walthowd/husbzb-firmware But yes, for Z-Wave JS purpose it would probably be better to just borrow inspiration from that concept for a new implementaion. |
We've already decided we are not interested in hosting firmware images. It's a copyright violation and we want to work with manufacturers. SiLabs has been supportive, as has Aeotec and Zooz. They ship us pre-release devices to test and samples when there are problems. SiLabs answers our questions. It's not worth it. We've already asked and have some agreement with Aeotec, Zooz, and Inovelli as a start to push their firmware updates through the UI we just haven't built out the functionality yet. |
I've confirmed that Zooz doesn't intend to issue firmware updates for their sticks. Aeotec has no present plans to do so as the source code from SiLabs isn't available yet for them to build their own. They've asked SiLabs if they'd be allowed to distribute the bundled file if we supported this. |
Well that sucks - I hope if enough of us ask they will change their mind. |
It's all the same firmware so if anyone of them post it that would work. Aeotec is still working with SiLabs to see if they can post the firmware. |
Aeotec now has a 'how-to' upgrade firmware guide with download links for the Aeotec Z-Stick 7 GBL firmware files for OTW: https://help.aeotec.com/support/solutions/articles/6000252296-update-z-stick-7-sdk-7-15 For serial commands see: The SerialAPI command 0x27 FUNC_ID_AUTO_PROGRAMMING will drop the 700 series into the bootloader. Send the binary string below. 01h, 03h, 00h, 27h, DBh will drop into the bootloader as described in the 500 series INS11681 section 5.2 |
Anyone want to brick their Zooz? |
I do not have a Zooz USB 700 Series Stick, but know that flashing that EFR32ZG14 firmware for US Frequency should not brick it. PS: Check out additional flashing instructions for OTW Firmware Upgrade via Simplicity Studio v5 Z-Wave Tool in #2544 and #2549 |
Confirmed manual process to upgrade working in Linux. Credit to cpw:
|
Aeotec put together detailed instructions. Oddly for some reason zwavejs2mqtt has to be running for this to work. We need to look into that more as we may be missing an initialization step or something. |
For another perspective, here's my guide: https://gist.github.com/kpine/f7206cfc5625b4c2c54a8f6ceb6aa2ca I went through the process today and wanted something to refer to in the future. I did not have zwavejs2mqtt running, it didn't seem like a good idea to me. |
FYI, just picked up a Zooz ZST10 700. It came installed with SDK version 7.15.01. Either the stick I received does not support controller OTW firmware updates, or something is different than the others. I attempted to install multiple newer versions of FW and all fail. From the OTW guide:
PC-Controller, minicom, and zw_programmer all fail. The bootloader is installed, and the fw version is newer. I'm wondering if they are using different encryption keys than are used for the Silicon Labs GBL files, or the keys are not installed?
|
@kpine If you have a Windows OS machine then maybe try the instructions I posted in #2544 for Silicon Labs UZB-7 USB Stick: Originally posted by @Hedda in #2544 (comment) Note! Users should first update firmware to a later GA (General Availability) version of firmware before using UZB-7 as a commercial product. Tip! You can perform local firmware upgrade using OTW (Over The Wire) on UZB7 USB stick using Z-Wave 700 Serial API firmware GBL XModem file via the "OTW Firmware Upgrade" option in Silabs "Z-Wave PC Controller" tool that gets installed with Simplicity Studio. Quick Start-Up Guide to flash UZB-7 USB stick with latest firmwareHere is a quick start-up guide on how to perform OTW Firmware Upgrade on UZB-7 using "Z-Wave PC Controller" tool in Simplicity Studio. Prerequisites: To actually get/download the latest firmware file for Z-Wave 700 USB stick you need to register for a free Silicon Labs Community account at https://community.silabs.com/SL_CommunitiesSelfReg and install Simplicity Studio v5 for your operating system, start it and login to install + update the Z-Wave technology type SDK package inside Simplicity Studio. See https://www.silabs.com/developers/simplicity-studio
FYI, if use default directories for Simplicity Studio + the Z-Wave technology type package GBL firmware binary files should after install be in: C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2\protocol\z-wave\Apps\bin\gbl Silabs UZB-7 USB Stick uses an EFR32ZG14 SoC so you need to select the latest ZW SerialAPI Controller firmware for it and your RF region. So for example, currently, currently the latest firmware file (Version 7.16.2.0 / Version 7.16 Build 267) for the UZB7 USB sticks for Europe (RF region) is: "ZW_SerialAPI_Controller_7.16.2_267_EFR32ZG14_REGION_EU.gbl" Respectively, currently, the latest firmware file (Version 7.16.2.0 / Version 7.16 Build 267) for the UZB7 USB sticks for the United States / North America (RF region) is: "ZW_SerialAPI_Controller_7.16.2_267_EFR32ZG14_REGION_US.gbl" PS: Move information is available in INS13114 Z-Wave PC based Controller v5 User Guide from Silicon Labs: |
I don't see anything in your reply that isn't something I've already tried. Is there some new information there? |
I'll just ask Zooz. |
And yes, the region matches the firmware files I tried, US. For good measure, I applied the region setting even though it was already listed as US. In total I tried 3 files:
My UZB7 is currently running 7.16.2, I had no problem upgrading it with that and 7.15.4. |
Hope you get a better answer than I did - I asked when the stick was still pre-release and they stated then they won't support upgrades to it. |
They won’t support upgrades to it but that’s not what I asked them. Supporting upgrades is different than affirmatively blocking upgrades. In any event, we’ll see what our contact has to say. |
Plugged my Zooz ZST10 into my Win10 laptop and gave Simplicity Studio OTW a shot. Same error as @kpine - this was at ZW_SerialAPI_Controller_7.16.3_297_EFR32ZG23_REGION_US.gbl Nothing of substance to add here, really. I have had my stick for maybe 6 weeks preinstalled with 7.15. |
Can you all try a different version? I'm curious if it's just an issue with 7.16.3. |
FYI, not sure if Silicon Labs will upload 7.17.2 GBL and future updates on GitHub but they did at least upload 7.17.1 here: https://github.com/SiliconLabs/gecko_sdk https://github.com/SiliconLabs/gecko_sdk/branches https://github.com/SiliconLabs/gecko_sdk/releases Example: https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.0/protocol/z-wave/Apps/bin/gbl GitHub web interface offers a truncated list so click the "Go to file" on GitHub and enter " Otherwise have to register for a free Silabs account and download + install the Silicon Labs Simplicity Studio application: https://www.silabs.com/developers/simplicity-studio PS: Gecko SDK 7.17 was the first version they published on GitHub and not sure if they will continue to publish all there. |
Hmm, doesn't make much sense then. Why are only "some users" affected? I was successful using the Silicon Labs file, and others were too, so what's the difference? The file Zooz is distributing (via their guide) is identical to the Silicon Labs file. Sorry, I know you're only passing along the message, but the explanation is missing something. ❯ sha256sum *.gbl
ef0b004cb62c118d0a59b1b82b432385c4a9ff6f4cef1cd9cc708c1b9c5bf880 ZST10-700-ZW_SerialAPI_Controller_7_17_1_344_ZGM130S_REGION_US.gbl
ef0b004cb62c118d0a59b1b82b432385c4a9ff6f4cef1cd9cc708c1b9c5bf880 ZW_SerialAPI_Controller_7_17_1_344_ZGM130S_REGION_US.gbl |
I have one I purchased in Dec 2021 and it upgraded fine. I am guessing that something missed on their (Zooz) end when flashing a number of units then shipped to customers is triggering this issue. If that is the case, then only customers who received units with improper firmware may run into this issue. In their response they stated they have a tool to reflash the dongle properly, that overcomes the same/older firmware limitation. Unless these users are down (no zwave), then it sounds like a solution (new file from SiLabs fixing issue) is only 2 weeks away and users will be able to update. If I were them, I'd wait instead of shipping my zwave controller off as transit time to and back along with handling will likely eat up most of the time anyway. To clarify - I am assuming there is a difference between the first bring up of the hardware zwave controller, and later firmware updates. Something along the lines of a bootloader needing to be loaded first using a JTAG programmer (or similar), and future updates being enabled by this existing code loaded at the manufacturing stage. I have no idea whether it is the case here but this is what I've seen before on other hardware. |
Very good possibility, however, mine is from April 2021 and I flashed without issue. |
Hi, i have a ZST10 700, and have issue with dead node every time. i have try with Simplicity studio to flash to version 17.1 but got error 0x50. if i understand, a new version will came out in 1-2 week 17.2 to correct this issue? or it is possible to update with another way? thanks for your time, Patrick |
@lappat That specific problem is really off-topic for this request about an OTW feature, so that is instead discussed here -> #3906 |
FYI, here is direct links for EU and US regions to 7.17.2 firmware image download for the most common Z-Wave 700 series chips:
As mentioned before, Silicon Labs are now releasing on GitHub so other regions and different chips can also be found by selecting "Go to file" on https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.0/protocol/z-wave/Apps/bin/gbl and then entering " |
Having the same issue updating firmware on the Zooz zst10-700. |
Did you click OTW or OTA? Sticks use OTW. Also, make sure the fw file isn't corrupted. Also, is that the 700 stick? They have another with the same name. |
definetely OTW - ota doesnt provide me with the options to update the firmware with the dialog screenshots shown says its the 700 Bought this: |
it doesnt say 700 on the stick though - crud wonder if something happened and i got an older one |
As OP can I suggest maybe post in the discussions section instead as this issue tracker is for an OTW feature request to zwave-js: https://github.com/zwave-js/node-zwave-js/discussions Maybe a create new dedicated discussion there about "Zooz 700 Series Z-Wave Plus S2 USB Stick ZST10 700" similar to these: |
Again, as OP I suggest posting in the discussions section instead as this issue tracker is for an OTW feature request to zwave-js: https://github.com/zwave-js/node-zwave-js/discussions Maybe a create new dedicated discussion there about "Zooz 700 Series Z-Wave Plus S2 USB Stick ZST10 700" similar to these: |
@kpine how do you get the latest supported version for each model? I see 7.18.1 for the Z-Pi 7 and 7.18.3 for the UZB-7 but they use the same exact firmware, in fact I'm using 7.18.3 on the Z-Pi as well. |
Not sure if its code could also be reused for OTW firmware update flashing of Silicon Labs EFR32 series of SoCs for Z-Wave 700 and Z-Wave 800, but FYI, puddly and agners (developers from the Home Assistant project) are currently working on a Python-based "Universal Silicon Labs Flasher" (universal-silabs-flasher) library/CLI-tool that uses XMODEM for OTW firmware update flashing of Silicon Labs EFR32 series of SoCs for Zigbee and Thread. https://github.com/puddly/universal-silabs-flasher That Python script communicates with radios using the application CLI to first automatically enter the bootloader mode and then it flashes a firmware image with XMODEM, so maybe could replace the first application CLI part to also allow Silicon Labs EFR32 series of SoCs with Z-Wave firmware to automatically enter the bootloader? I believe that all Silicon Labs EFM32 and EFR32 series of SoCs (including Z-Wave 700 and Z-Wave 800) use the standard Silabs Gecko bootloader so once in bootloader mode it could, in theory, also be made to upgrade Z-Wave Controller firmware using GBL image files via XMODEM binary transfer, or? https://community.silabs.com/s/article/z-wave-700-programming-uzb7-controller-stick https://www.silabs.com/documents/public/user-guides/ug266-gecko-bootloader-user-guide.pdf https://www.silabs.com/documents/public/user-guides/ug489-gecko-bootloader-user-guide-gsdk-4.pdf puddly's "Universal Silicon Labs Flasher" library/CLI-tool is in turn meant to be used as a dependency in Home Assistant's official "SiliconLabs Zigbee/OpenThread Multiprotocol Add-on" (I believe puddly and agners is working on that tool for Nabu Casa): https://github.com/home-assistant/addons/tree/master/silabs-multiprotocol That Home Assistant addon is currently meant for handling both Silabs multiprotocol dependencies and offer ability to perform OTW firmware update flashing of Silicon Labs EFR32-based "Home Assistant SkyConnect USB Stick" for Zigbee and Thread: https://www.home-assistant.io/skyconnect/ (As well as same for integrated Silabs EFR32 Zigbee/Thread radio in "Home Assistant Yellow" -> https://yellow.home-assistant.io/ ) |
xmodem ain't that bad, definitely better than the shitty Aeotec Z-Stick Windows executable that bricks your stick on VMs: https://youtu.be/sGl3b394JsQ |
I go by what the vendor is providing, e.g.: https://aeotec.freshdesk.com/support/solutions/articles/6000252296-update-z-stick-7-with-windows |
Ah ok, but I think they're just too lazy to keep that page updated with Silabs' latest. |
No, they just test the images before recommending that users upgrade. |
Please respect that this specific feature request thread is not for asking for help how to flash Z-Wave adapters by different means! Again, please post off-topic support in discussions section instead as this issue tracker is only for TW feature request to zwave-js. https://github.com/zwave-js/node-zwave-js/discussions No offence is meant, I just don't want this feature request thread to continue with off-topic subjects and get unreadable for it. Risk of Thread Hijacking according Urban Dictionary to https://www.urbandictionary.com/define.php?term=Thread%20Hijacking So please instead post a new discussion thread there or look if any of the existing discussions are actually on-topic, see examples: |
@AlCalzone Slightly off-topic but as a follow-up question I am sure many end-users are wondering if you now also have plans on adding an easy-to-use OTW firmware update feature to the frontend GUI of the official Home Assistant integration for Z-Wave JS? |
@Hedda does he work on the HASS frontend as well? Btw you can already use zwavejs-ui with hass and have it integrated into the app. |
Z-Wave JS UI has support already. HA support is in the works too 👍🏻 |
@AlCalzone Awesome to hear that also Home Assistant support is in the works too!
@darkbasic Not sure if AlCalzone will also actively work on the Z-Wave JS integration's frontend / GUI parts in Home Assistant (I think that the frontend / UI parts for Z-Wave JS integration have so far mostly been done by raman325 and bramkragten), however, it was covered in Home Assistant's "Building the Open Home" newsletter that AlCalzone (Dominic Griesel) has recently been fill-time employed by Nabu Casa (Home Assistant's founders company/organization) with focus on improving the @zwave-js project among other things. https://building.open-home.io/a-new-home-for-our-newsletter/ https://www.nabucasa.com/about/ PS: One of the ongoing forever goals of Home Assistant founders / Nabu Casa is "Streamlining Experiences", e.g. more GUI usage: https://www.home-assistant.io/blog/2022/01/19/streamlining-experiences/ |
Please consider adding support to flashing OTW firmware ZW Serial API Controller GBL updates on Z-Wave 700 series USB sticks.
This is a enhancement feature request for OTW to first automatically enter the bootloader and then flash firmware GBL image file.
The same OTW upgrade process and flash method for ZW SerialAPI Controller Firmware over UART serial interface should also be applicable to all adapters based on ZGM130/ZGM130S or ZGM230/ZGM230S radio modules and EFR32ZG14 or FR32ZG23 SoCs.
https://www.silabs.com/documents/public/data-sheets/DSH14483.pdf
https://www.silabs.com/documents/public/data-sheets/efr32zg14-datasheet.pdf
https://www.silabs.com/documents/public/data-sheets/zgm130s-datasheet.pdf
OTW programming of Silabs UZB7 Controller Stick and other EFR32ZG14 or ZGM130S based Z-Wave 700 series controllers:
https://community.silabs.com/s/article/z-wave-700-otw-of-controller
https://community.silabs.com/s/article/z-wave-700-programming-uzb7-controller-stick
https://www.silabs.com/community/wireless/z-wave/knowledge-base.entry.html/2019/01/04/z-wave_700_programm-4Hx0
https://www.silabs.com/community/wireless/z-wave/forum.topic.html/will_serialapi_imagesupporttheserialbootloader-Wwib
Aeotec posted these OTW upgrade guides for Aeotec Z-Stick 7:
https://help.aeotec.com/support/solutions/articles/6000252997-update-z-stick-7-through-raspian-os
https://help.aeotec.com/support/solutions/articles/6000252296-update-z-stick-7-sdk-7-15
Zooz posted this OTW upgrade guide for Zooz ZST10 700 Z-Wave Stick:
https://www.support.getzooz.com/kb/article/931-how-to-perform-an-ota-firmware-update-on-your-zst10-700-z-wave-stick/
UZB-7 BRD1001A dongle is the official Z-Wave 700 reference design from Silabs SLWSTK6050A Z-Wave 700 Wireless Starter Kit:
https://www.silabs.com/development-tools/wireless/z-wave/z-wave-700-starter-kit
https://www.silabs.com/development-tools/wireless/z-wave/z-wave-long-range-700-starter-kit
Surprisingly the SLUSB001A / SLUSB7000A UZB-7 looks like the most affordable Z-Wave 700 USB adapters readily available today:
https://www.google.com/search?q=SLUSB001A
PS: This is related to the questions about firmware posted in the discussion section -> #2544
PPS: This is a follow-up feature request to #1357 which was about adding support for SLUSB001A (SLUSB7000A) UZB-7 USB stick.
The text was updated successfully, but these errors were encountered: