[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

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.

Silicon Labs UZB-7 (Silabs SKU: SLUSB001A/SLUSB7000A) (based on EFR32ZG14)
Aeotec Z-Stick 7  - Z-Wave 700 series USB adapter/dongle/stick (based on EFR32ZG14)
Aeotec Z-Pi 7 - Z-Wave 700 series gateway development board (based on EFR32ZG14)
Zooz USB 700 Series Z-Wave Plus S2 Stick ZST10 700 (based on ZGM130S)
Z-Wave.Me RaZberry 7 (zme_razberry7 by Smart Systems Ltd. Z-Wave.Me) (based on ZGM130S)
Z-Wave.Me RaZberry 7 Pro (zme_razberry7 by Smart Systems Ltd. Z-Wave.Me) (based on ZGM130S)

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 -> https://github.com/zwave-js/node-zwave-js/discussions/2544
PPS: This is a follow-up feature request to https://github.com/zwave-js/node-zwave-js/issues/1357 which was about adding support for SLUSB001A (SLUSB7000A) UZB-7 USB stick.

As long as the standard Silabs Gecko bootloader is working it should be also able to upgrade firmware via XMODEM binary transfer
https://silabs-prod.adobecqms.net/content/usergenerated/asi/cloud/content/siliconlabs/en/community/wireless/z-wave/knowledge-base/jcr:content/content/primary/blog/z-wave_700_programm-4Hx0.social.0.10.html
As such a workaround could be to utilize Elelabs EZSP Firmware Update Utility and/or walthowd firmware updater image for it:
https://github.com/Elelabs/elelabs-zigbee-ezsp-utility
https://github.com/walthowd/husbzb-firmware
PS: Like other Z-Wave 700 sticks it's 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

One issue is that the firmware is bundled with Simplicity Studio and it is a copyright violation to distribute it on our own. If OTW was supported, from where would you get the file?

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.

FTR, I just emailed Zooz and Aeotec to see if they intend to distribute firmware files directly for their sticks either now or int he future.

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.

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.
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"
https://en.wikipedia.org/wiki/Fair_use
https://en.wikipedia.org/wiki/Fair_dealing

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/

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.

https://siliconlabs.force.com/s/article/z-wave-700-programming-uzb7-controller-stick?s1oid=00DA0000000L2
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
https://cn.silabs.com/documents/public/user-guides/INS11681-Instruction-500-Series-Z-Wave-Chip-Programming-Mode.pdf
Aeotec Z-Stick 7 now has a 'how-to' upgrade firmware guide with download links for the GBL firmware files for OTW:
https://help.aeotec.com/support/solutions/articles/6000252296-update-z-stick-7-sdk-7-15

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

Anyone want to brick their Zooz?

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

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 https://github.com/zwave-js/node-zwave-js/discussions/2544 and https://github.com/zwave-js/node-zwave-js/discussions/2549

Confirmed upgrade working in Linux. Credit to cpw:

installed minicom
figured out where device was (/dev/ttyUSB0 for me)
unplugged/plugged in device
in a shell: stty 115200 cs8 -cstopb -F /dev/ttyUSB0
then in same shell: printf '\x01\x03\x00\x27\xDB' >/dev/ttyUSB0
configure minicom: minicom -s important: turn hw flow control OFF here, set baud etc
run minicom: minicom -D /dev/ttyUSB0
press enter a bunch of  times, you'll see menu as demoed. (may need to replug stick to get this to happen)
select 1 in menu to flash. in minicom, use ctrl shift S, select xmodem, and specify path to file. Upload should proceed (it'll take a minute)
press 2 once upload is complete in minicom to "run" the new firmware.

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:

If you may get error 0x50 or 0x18 during ZGM130S or EFR32ZG14 controller firmware update, please make sure the bootloader and encryption keys have already been flashed into the device via SWD interface before you perform the OTW/OTA update. UZB-7 does not expose the SWD interface, it is required to open the plastic box and connect its SWD interface to programmer in this situation. Besides, ensure the gbl file being load contains an increased firmware version comparing the one that the device is currently running.

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?
root@dev:/app/bin# ./zw_programmer -s /dev/ttyUSB0 -p ZW_SerialAPI_Controller_7.16.3_297_EFR32ZG14_REGION_US.gbl
Using serial device /dev/ttyUSB0
Connected to Serial device: OK
Serial version: 9, Chip type: 7, Chip version: 0, SDK: 7.15.01, SDK Build no: 178 SDK git hash:<PHONE_NUMBER>3536373839414243444546
Chip library: 7, ZW protocol: 7.15, NVM: bridge7.15
nvm_id: bridge7.15
Auto Programming enabled

Gecko Bootloader v1.12.01
1. upload gbl
2. run
3. ebl info
BL >1

begin uploadnumbytes: 159488, oldnumbytes: 159452
Enter C(67) ACK(1) NAK (2)
Received: d
unknown char received d
Enter C(67) ACK(1) NAK (2)
Received: a

unknown char received a
Enter C(67) ACK(1) NAK (2)
Received: 0
unknown char received 0
Enter C(67) ACK(1) NAK (2)
Received: 43 C
Received C
2106708837 Sending Firmware file to Gecko module
|send_data 0 159488 1                                |
Sent 0 bytes, remaining:159488 bytes
>sent offset :0
new offset :128
sending 133 bytes: 0x01 0x01 0xfe
Enter C(67) ACK(1) NAK (2)
Received: 18

2106708869 Received CANError in transmission
Closing Serial connection

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.

@kpine If you have a Windows OS machine then maybe try the instructions I posted in https://github.com/zwave-js/node-zwave-js/discussions/2544 for Silicon Labs UZB-7 USB Stick:
Originally posted by @Hedda in https://github.com/zwave-js/node-zwave-js/discussions/2544#discussioncomment-1323267
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 firmware
Here 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

Connect/plug-in the Z-Wave 700 Controller USB stick to your computer.
Z-Wave 700 Controller USB sticks will normally use a Silabs CP2102N USB-to-serial converter chip for the MCU SoC so if needed by your operating system then install the Virtual COM Port (VCP) drivers and CP210x VCP Drivers from Silicon Labs. The latest drivers are available at https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers (for Windows 10 download and install the "CP210x Universal Windows Driver" package).
If using Windows 10 then be sure to disable Energy Saving Mode on the virtual com port so the dongle does not go into sleep: https://silabs-prod.adobecqms.net/community/wireless/z-wave/knowledge-base.entry.html/2020/06/04/uzb7_not_accessibleonwindows10-0Dw1
Start and run the "Z-Wave PC Controller" from Simplicity Studio from under the Tools menu.
Click on the “Setting-wheel” in the Right-Top corner of the Z-Wave PC Controller tool and select “Silicon Labs CP210x USB
to UART Bridge”. Click OK.
Click on "NVM Backup/Restore" select a folder and file path to backup files to in order to keep your a backup network stored. Make sure to name it with something like "ZWave_USB_Stick_Backup_date_and_time". Click on Backup.
Click the "OTW Firmware Upgrade" box and select the correct GBL file, (taking note that if you do not select a firmware with a version that is newer than your existing version you will get an error an upgrade will fail as downgrade or reflashing same version is not possible here). Firmware upgrade should be started and completed automatically.

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 <IP_ADDRESS> / 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 <IP_ADDRESS> / 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:
https://www.silabs.com/documents/public/user-guides/INS13114-Z-Wave-PC-Based-Controller-v5-User-Guide.pdf

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.

I'll just ask Zooz.

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.

I tried several, with the same failure.

ZW_SerialAPI_Controller_7.15.4_256_EFR32ZG14_REGION_US.gbl
ZW_SerialAPI_Controller_7.16.2_267_EFR32ZG14_REGION_US.gbl
ZW_SerialAPI_Controller_7.16.3_297_EFR32ZG14_REGION_US.gbl

Here is a picture of my PCB.

Wow, thanks for opening it. It looks like it's using a different Z-Wave SOC than the UZB7? ZGM130S vs. EFR32ZG14. Maybe the file we want is ZW_SerialAPI_Controller_7.16.3_297_ZGM130S_REGION_US.gbl?

Looks like it. Wonder why they swapped the chip.

ZW_SerialAPI_Controller_7.16.3_297_ZGM130S_REGION_US.gbl worked for me. Nice work @kars85 !
root@dev:/app/bin# ./zw_programmer -s /dev/ttyUSB0 -t
Using serial device /dev/ttyUSB0
Connected to Serial device: OK
Serial version: 9, Chip type: 7, Chip version: 0, SDK: 7.16.03, SDK Build no: 41 SDK git hash:<PHONE_NUMBER>3030303030303030303030
Chip library: 7, ZW protocol: 7.16, NVM: bridge7.16
nvm_id: bridge7.16
Closing Serial connection

What program did you use for this? It looks easier than our method with minicom.

It's the zw_programmer utility included with the Z/IP Gateway. It's easy to use, but it's difficult to build. It was listed as in option in the OTW guide I linked above.

What license is the source under?

I believe it's proprietary.
❯ cat LICENSE
/* © 2014 Silicon Laboratories Inc. */

No problem @kpine - here's to good luck moving forward with the project.

Just built zw_programmer on mac, and used it to update a zooz 700 stick with ZW_SerialAPI_Controller_7.16.3_297_ZGM130S_REGION_US.gbl, it worked the same as @kpine. Thanks!
I wonder whether it'd be worth it to ask SiLabs if they'd be willing to MIT license the zw_programmer source. It is included in the Z/IP SDK, but they wouldn't have to open the whole SDK...

AFAIK there is a way to do it via the serial API that zwave-js uses - as long as there is a bootloader already installed on the device. I've not yet figured out which commands though.

For 700-series, the zw_programmer program update is exactly the same as using minicom. It just enables auto-programming mode and interacts with the bootloader and sends the file with xmodem. The 500-series flashes the NVR (NVM?) using functionality provided by the Z/IP gateway library. That might be tough to get right.

That Python script you sent me the other day does the 500 though, so those commands are know.

Maybe... that method (OTW) only works for certain devices (according to the comments).

I think that's because they're distributing the FW as part of the script. The method in zw_programmer only differentiates 500 vs 700. And it doesn't look that complicated.

At @AlCalzone request, adding this reference for later:
https://github.com/drzwave/ZWaveOTW

It may now be possible to implement this feature since the firmware is recently published to GitHub for direct download? As of Gecko SDK (GSDK) Suite 4.0 the firmware files are now at: https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.0/protocol/z-wave/Apps/bin/gbl
The changes are described in this Knowledge Article: https://community.silabs.com/s/article/Notes-on-the-recent-Simplicity-Studio-version-5-3-0-0-release?language=en_US

It may now be possible to implement this feature since the firmware is recently published to GitHub for direct download? As of Gecko SDK (GSDK) Suite 4.0 the firmware files are now at: https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.0/protocol/z-wave/Apps/bin/gbl
The changes are described in this Knowledge Article: https://community.silabs.com/s/article/Notes-on-the-recent-Simplicity-Studio-version-5-3-0-0-release?language=en_US

The 700 series firmware has been available from Aeotec for some time. And you could always download Simplicity Studio to get it. The OTW Upgrade feature itself is on our roadmap.

The 700 series firmware has been available from Aeotec for some time. And you could always download Simplicity Studio to get it. The OTW Upgrade feature itself is on our roadmap.

The 700 series firmware has been available from Aeotec for some time, though this will be more up to date.

For reference, Aeotec looks to only provide direct download links for their latest tested GBL firmware files for OTW in how-to guide:
https://help.aeotec.com/support/solutions/articles/6000252296-update-z-stick-7-with-windows
Aeotec as such does not look to have a repository with revision control so could download older firmware if need to downgrade.

The stick won't let you downgrade at all. The bootloader will only accept a new fw that is a version bump. You can't even redo the current version.

The stick won't let you downgrade at all. The bootloader will only accept a new fw that is a version bump. You can't even redo the current version.

I've read somewhere something about the _255 version to enable getting around version limitations. What I read seemed to be written backwards as it said the version number was coded to 255 to enable a downgrade... maybe I read incorrectly.
Anyhow I just updated my Aeotec and Zooz 700 series sticks to 7.17 using the appropriate files in the Simplicity Studio SDK folder. To upgrade I used OTW in Zwave PC Controller.

Could you provide a link to what you’re talking about? I haven’t heard that and it would be helpful to fake it into a downgrade.

@blhoward2 https://community.silabs.com/s/question/0D58Y00008C5A5PSAV/difference-between-firmware-files?language=en_US

The _v255 just has the firmware version set to 255, this is intended to be used for OTA/OTW testing only, as it is required to load a gbl file having a greater firmware version when performing firmware upgrade for a ZGM130S or EFR32ZG14 device.

It’s not going off the file name though. I think that means they made the version .255 when they built the file so it was a higher version.

@blhoward2 Yes, there is a v255 file. See here:
https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.0/protocol/z-wave/Apps/bin/gbl

Right, but that just lets you reapply the same version again (a second time) in order to test OTA upgrades. It doesn’t let you downgrade.

@blhoward2 I am sure you are right, but I thought I read otherwise. If you can't downgrade, what happens when you install the v255 version? Won't that prevent you from installing the next release?

I think it's probably 7.17.255. So 7.18 would be higher.

For some reason the folder is limited to 1000 files. I thought I was able to view the files before

you'll likely have to clone the repo and view them locally

I’m happy for someone to prove me wrong, I’m just not sure how it would work otherwise. Or what the point of the restriction would be if they were going to distribute a file also that broke it.

Sorry, I didn't think the link I posted needed any extra commentary. Downgrades are not supported obviously, based on that link. The _v255 file is strictly for developers or QA.

@kpine - any further progress?  I am having the same issue trying to upgrade a zooz 700 stick from 7.15 to <IP_ADDRESS>4.  I can get into the bootloader - but no file transfer... xmodem times out.  bootloader v1.12.01.  All other methods (simplicity studio, pc_controller) all fail as well.

Sorry, I don't have any more suggestions. I had no issue updating my UZB7 (using zw_programmer), and my Zooz using PC Controller.

@kpine @bmcdonnell158
Hi, Just updated my Zooz 700 from 7.15 to 7.17.1 using Simplicity studio OTW.
I am not sure that your are aware but the Zooz 700 stick is using a different chipset than the other stick like the Aeotec. Aeotec is using the  EFR32ZG14 and the zooz is using the ZGM130S. Therefore the file for Zooz 700 stick for the us is:
ZW_SerialAPI_Controller_7_17_1_344_ZGM130S_REGION_US.gbl
The documentation out there is good for the general upgrade process but is really vague, when it comes to selecting the proper file based on the chipset the USB Stick is using.
Hope this help

@vezinpi Thanks, but we figured that out over two months ago. 😉 I also have it documented in my upgrade guide.

From Zooz support regarding errors when upgrading firmware on ZST10 700 in Simplicity Studio.

We found that the previous file provided by Silicon Labs was missing some components and for some users, resulted in the error you're seeing. We've since been provided with a different file and have created new instructions for the update - however, they couldn't be applied if the original file was already attempted.

There are two options for a solution:

We can initiate warranty service for your ZST10 700. Since you're in the US, you can send the stick back to us and we can reset the stick with a special tool in-house (which unfortunately can't be done remotely).
We can wait for the 7.18 firmware to update the stick with that (since the same firmware cannot be applied unfortunately).

We currently don't know of a release date for the next firmware update though.

We found that the previous file provided by Silicon Labs was missing some components and for some users, resulted in the error you're seeing. We've since been provided with a different file and have created new instructions for the update - however, they couldn't be applied if the original file was already attempted.

Do you know what the "previous" file Zooz is referring to is? Are they referring to a file they were using in manufacturing, meaning users are affected depending on when they purchases their controller?

We currently don't know of a release date for the next firmware update though.

I was told that 7.17.2 should come out in roughly 2 weeks. Not sure what this means for the Zooz stick though.

Do you know what the "previous" file Zooz is referring to is? Are they referring to a file they were using in manufacturing, meaning users are affected depending on when they purchased their controller?

They were referring to ZW_SerialAPI_Controller_7_17_1_344_ZGM130S_REGION_US.gbl

They were referring to ZW_SerialAPI_Controller_7_17_1_344_ZGM130S_REGION_US.gbl

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 "ZW_SerialAPI_Controller_7_17".
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.

Why are only "some users" affected?

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.

I am assuming there is a difference between the first bring up of the hardware zwave controller, and later firmware updates

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

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?

@lappat That specific problem is really off-topic for this request about an OTW feature and instead it is discussed here -> https://github.com/zwave-js/node-zwave-js/issues/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:
https://github.com/SiliconLabs/gecko_sdk/blob/gsdk_4.0/protocol/z-wave/Apps/bin/gbl/ZW_SerialAPI_Controller_7_17_2_406_EFR32ZG14_REGION_EU.gbl?raw=true
https://github.com/SiliconLabs/gecko_sdk/blob/gsdk_4.0/protocol/z-wave/Apps/bin/gbl/ZW_SerialAPI_Controller_7_17_2_406_EFR32ZG14_REGION_US.gbl?raw=true
https://github.com/SiliconLabs/gecko_sdk/blob/gsdk_4.0/protocol/z-wave/Apps/bin/gbl/ZW_SerialAPI_Controller_7_17_2_406_ZGM130S_REGION_EU.gbl?raw=true
https://github.com/SiliconLabs/gecko_sdk/blob/gsdk_4.0/protocol/z-wave/Apps/bin/gbl/ZW_SerialAPI_Controller_7_17_2_406_ZGM130S_REGION_US.gbl?raw=true

Silicon Labs UZB-7 (Silabs SKU: SLUSB001A/SLUSB7000A) (based on EFR32ZG14)
Aeotec Z-Stick 7 - Z-Wave 700 series USB adapter/dongle/stick (based on EFR32ZG14)
Aeotec Z-Pi 7 - Z-Wave 700 series gateway development board (based on EFR32ZG14)
Zooz USB 700 Series Z-Wave Plus S2 Stick ZST10 700 (based on ZGM130S)
Z-Wave.Me RaZberry 7 (zme_razberry7 by Smart Systems Ltd. Z-Wave.Me) (based on ZGM130S)
Z-Wave.Me RaZberry 7 Pro (zme_razberry7 by Smart Systems Ltd. Z-Wave.Me) (based on ZGM130S)

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 "ZW_SerialAPI_Controller_7_17_2_406_" (for web download must then go to the GiHub web page first and then click "Download").

Having the same issue updating firmware on the Zooz zst10-700.
I've tried with the new 7.17.2 images from Zooz' site as well as the gecko_sdk one linked above. Both fail with error 0x50. Seems contacting Zooz for warranty might be the only option.

then

then

then crash

can someone help me with this?
I have a ZooS zst10 s2 stick
thanks!

Did you click OTW or OTA? Sticks use OTW. Also, make sure the fw file isn't corrupted.

definetely OTW - ota doesnt provide me with the options to update the firmware with the dialog screenshots shown
says its the 700 Bought this:
https://www.amazon.ca/gp/product/B07GNZ56BK/ref=ppx_od_dt_b_asin_title_s00?ie=UTF8&psc=1

it doesnt say 700 on the stick though

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:
https://github.com/zwave-js/node-zwave-js/discussions/2544
https://github.com/zwave-js/node-zwave-js/discussions/2549
https://github.com/zwave-js/node-zwave-js/discussions/4112

 then  then  then crash
can someone help me with this? I have a ZooS zst10 s2 stick thanks!

im having exactly the same issue right now. did you ever solve this?

can someone help me with this? I have a ZooS zst10 s2 stick thanks!

im having exactly the same issue right now. did you ever solve this?

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:
https://github.com/zwave-js/node-zwave-js/discussions/2544
https://github.com/zwave-js/node-zwave-js/discussions/2549
https://github.com/zwave-js/node-zwave-js/discussions/4112

@vezinpi Thanks, but we figured that out over two months ago. wink I also have it documented in my upgrade guide.

How do you get the latest supported version for each model? I see 7.18.1 for the Z-Pi 7 but 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.

@vezinpi Thanks, but we figured that out over two months ago. wink I also have it documented in my upgrade guide.

@kpine how do you get the latest supported version for each model? I see 7.18.1 for the Z-Pi 7 but 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 it could also be reused for OTW firmware update flashing of Silicon Labs EFR32 series of SoCs for Z-Wave, but FYI, puddly and agners 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
I think those too use the standard Silabs Gecko bootloader so it should, in theory, be also able to upgrade Z-Wave Controller firmware via XMODEM binary transfer, or?
https://silabs-prod.adobecqms.net/content/usergenerated/asi/cloud/content/siliconlabs/en/community/wireless/z-wave/knowledge-base/jcr:content/content/primary/blog/z-wave_700_programm-4Hx0.social.0.10.html
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/
https://community.home-assistant.io/t/home-assistant-skyconnect-usb-stick-announced-will-be-compatible-with-both-zigbee-and-thread-including-matter-chip-over-thread/433594
(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

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 Hijacking
So please instead post a new discussion thread there or look if any of the existing discussions are actually on-topic, see examples:
https://github.com/zwave-js/node-zwave-js/discussions/2549
https://github.com/zwave-js/node-zwave-js/discussions/2544
https://github.com/zwave-js/node-zwave-js/discussions/4112

@AlCalzone Slightly off-topic but as a follow-up question I am sure many users are wondering if you now also have plans on adding an OTW firmware update feature to frontend GUI for 700-series of the official Home Assistant integration for Z-Wave JS?
https://www.home-assistant.io/integrations/zwave_js/
https://github.com/zwave-js/node-zwave-js/blob/master/docs/api/controller.md#updating-the-firmware-of-the-controller-otw
https://github.com/zwave-js/node-zwave-js/pull/5321

@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 👍🏻

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!

@Hedda does he work on the HASS frontend as well?

@darkbasic Not sure if AlCalzone (Dominic Griesel) also activly work on the Z-Wave JS integration's frontend / GUI in Home Assistant (I think that the frontend / UI parts for Z-Wave JS integration has so far mostly been done by raman325 and bramkragten), however, it was covered in Home Assistant's "Building the Open Home" news letter 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/


Optimize Rebalancing Transactions

After the network upgrade, rebalancing will be quite expensive, around .2 ICX per transaction. We need to optimize gets/sets and other operations, and perhaps re-write in Java as well.

Since i have not solved caching in the loans contract it might be more expensive. But have not tried either.


Thomas Was Alone [PCSE00258]

Game summary

Game name: Thomas Was Alone
Game serial: PCSE00258

Vita3K summary

Version: v0.1
Build number: 311-e4d7a67
Commit hash: https://github.com/vita3k/vita3k/commit/e4d7a67

Test environment summary

Tested by: HorrorTroll
OS: Windows 8.1
CPU: Intel Core i5-4200H
GPU: Nvidia Geforce GTX 950M
RAM: 6 GB DDR3

Issues

Crash
Screenshots
Not for moment
Log
vita3k.log
Patch vita3k.log
Recommended labels

Crash

Double listed


Enable integration testing on Windows.

This depends on the windows instance being able to run Docker.

Windows instance can now run Docker - this can proceed.

@chanseokoh feel free to take over #745 - I was trying to get it working there

Does anyone know how to restart the docker daemon on the Kokoro Windows machine? I'm trying to reload daemon.json config. I tried Net stop com.docker.service and Net start com.docker.service, and although they seem to work, I'm having trouble making it reload the config.

The Docker Daemon page notes:

CONFIGURATION RELOAD BEHAVIOR
Some options can be reconfigured when the daemon is running without requiring to restart the process. We use the SIGHUP signal in Linux to reload, and a global event in Windows with the key Global\docker-daemon-config-$PID.

At first net start/stop com.docker.service seemed to work but doesn't really look like, and now I'm trying sc start/stop com.docker.service as told by the Kokoro folks. However, sc is asynchronous, so still digging into it.

Just an update:
I think net start/stop and sc start/stop are effectively same except that sc simply makes a request and does not block. Although sc stop does stop the Docker service and I can verify it's STOPPED state, I can still do docker images or docker pull, so I think either it's not really stopping the daemon or there is another daemon running. Waiting for the Kokoro folks for an answer.
BTW, I'm doing this so that I can enable experimental features of the Docker daemon and pass the --platform linux flag.

Update:
On the Kokoro Windows machine, tasklist showed there were two processes com.docker.service and dockerd.exe running. I believe net|sc start|stop is supposed to work, but in reality, it only started/stopped com.docker.service and had no effect on dockerd.exe at all.
So I ended up doing below to turn on the experimental features of the Docker daemon:

Manually kill dockerd.exe: Taskkill /IM dockerd.exe /F
Update %ProgramData%\Docker\config\daemon.json to flip the value of experimental

Passing --experimental when starting dockerd won't work; it will complain you can't set it with both daemon.json and the flag.

{
  "registry-mirrors":[],
  "insecure-registries":[],
  "experimental":true,
  "hosts":["tcp://<IP_ADDRESS>:2375","npipe://"]
}

Update %PATH% so that I can run dockerd.exe. (For some unknown reason on Kokoro, I can't access the binary directly.)
set PATH=%ProgramFiles%\Docker\Docker\resources;%JAVA_HOME%\bin;%PATH%
Manually start the Docker daemon: CMD /C START dockerd.

However, unfortunately, passing --platform linux to Docker did not work on Kokoro, returning the error invalid Platform OS "linux". Haven't looked into why in detail, but it appears that Linux Containers for Windows (LCOW) is not supported by the Windows OS in the Kokoro machine: https://github.com/docker/for-win/issues/2241#issuecomment-408444877 Seems like another dead end.


HTML5 Console

I'm trying to get the HTML5 console to work, but comes up as black blank screen no matter what. I already tried running ./run --token-plugin TokenFile --token-source /tmp/kvm-vdi 5959 with no --daemon, and get the following error:
<IP_ADDRESS>: SSL connection but '/var/www/html/kvm-vdi/websockify/self.pem' not found
Upon seeing this, I did go and change the value in run.js file in spice_html5 folder from wss to ws, but still no luck.
Any suggestions? Not sure why it is still looking for the .pem file when it should be running now in HTTP mode (not HTTPS)?

In order to run non-https websocket service, your dashboard should also be running on http.

The dashboard is running on HTTP...is there something special I need to change with the dashboard? Did a basic install following all the steps and never said anything about changing something with the dashboard?

Just checked my settings again, and I do not have anything pointing to HTTPS at all...

And...now its working out of the blue...very strange...I'll keep monitoring and close out later on if issue does not come back...


Tcl

What programming language should we add?
Tcl
What is the official website for the language?
tcl.tk or tcl-lang.org (same).
Is this a language that comes in many variants? If so, which variant should we support?
Like LISP, there are lots of clones of Tcl, but there is one popular implementation called just Tcl/Tk (with Tk being the GUI toolkit).
Does the language have an official logo? Yes:

link to example of logo: https://tcl.tk/images/plume.png

attribution rights of logo: I've been granted permission by the author. Do you need documentation for this forwarded by email, or do you explicitly need for the logo to be published under a CC license (Wikipedia style), or would it work if I asked the author (David Zolli) to drop by this thread and grant access?
Email:

From: Simon Shine<EMAIL_ADDRESS>Subject: License of plume logo at tcl-lang.org
Date: Monday, November 26, 2018 8:13 AM
Dear webmaster at tcl-lang.org
I write to ask about the license of the logo located at:
https://tcl.tk/images/plume.png

I do this because I intend to create a "language track" for Tcl at Exercism.io.
For each language track there is a logo which they derive from something recognizable for the language.
You can see the logos at:
https://exercism.io/

Exercism is an open source project with all of their source code available on GitHub:
https://github.com/exercism

Since the plume appears to be the most recognizable logo for Tcl, I'd like to ask permission to use this logo in derived form for the language track at Exercism.
Is the logo already in a CC-like license, or can permission be granted for this particular use?
Kindly,
Simon Shine

Response 1:

From: Steve Landers<EMAIL_ADDRESS>Subject: Re: License of plume logo at tcl-lang.org
Date: Monday, November 26, 2018 11:05 AM
Hi Simon,
The plume logo was produced by David Zolli (kroc).  He’ll be able to definitely say whether it is OK to use.
I’ve copied David on this email
Steve

Response 2 (permission granted):

From: David Zolli<EMAIL_ADDRESS>Subject: Re: License of plume logo at tcl-lang.org
Date: Monday, November 26, 2018 12:50 PM
Hi Steve and Simon,
Feel free to use it as you need. No problem for me.
Kind regards,

Is there a testing framework available for the language?
Yes, there are several.
I am recommended to use tcltest.
Is this language listed as 'supported' by Prism.js? Yes:

Prism's canonical spelling: Tcl, tcl.
file extension: .tcl

Who will be leading the effort to launch the track?
Me, @sshine. I'll also mentor it.
I believe it will be a low-traffic track like Standard ML.

@sshine This is great! I don't need further permission for the logo. We don't use the logo directly, but design an exercism track logo inspired by/based on the logo.
I'll get this repository set up for you in the next few days.


Make sure RpcService will release RPC requests exactly once no matter the request is successful or not + Tests

Done.


adding service_provider for EL7 for jenkins-slave service

For consistency sake, if we are using service_provider for the jenkins master service, we should probably add the ability to use it for the jenkins-slave service on the slaves as well.

Does this resolve an issue you are experiencing?  The service_provider nonsense came about due to a core puppet problem that should be resolved for puppet > 4.5.

IIRC--On CentOS7 boxes, the module drops a systemv init script for the jenkins-slave service and you either need to reload systemd or tell Puppet to treat it like it would for CentOS6 (by the provider).

Upon review of #692 that probably solves this issue...

@alvin-huang That is good news.  #692 isn't quite ready yet but I hope to merge it today.


schema validation error starting from version 1.70.0

Some confluent_schema deployed resources became corrupted starting from provider version 1.70.0.
Example:
main.tf:
terraform {
  required_providers {
    confluent = {
      source  = "confluentinc/confluent"
      version = "1.68.0"
    }
  }
}

provider "confluent" {
  schema_registry_id            = var.schema_registry_id
  schema_registry_rest_endpoint = var.schema_registry_rest_endpoint
  schema_registry_api_key       = var.schema_registry_api_key
  schema_registry_api_secret    = var.schema_registry_api_secret
}

resource "confluent_schema" "avas-sbx-value-1" {
  subject_name       = "avas-sbx-value"
  schema             = file( join("/", [ path.root, "schemas", "avas-sbx-value-v1.schema.json"]) )
  format             = "JSON"
  hard_delete        = var.hard_delete
  recreate_on_update = true
}

avas-sbx-value-v1.schema.json:
{
  "$id": "/schemas/avas-sbx",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "Some description",
  "definitions": {
    "Error": {
      "additionalProperties": true,
      "properties": {
        "errorCode": {
          "type": "string"
        },
        "errorMessage": {
          "type": "string"
        }
      },
      "required": [
        "errorCode"
      ],
      "title": "Error",
      "type": "object"
    }
  },
  "oneOf": [
    {
      "additionalProperties": true,
      "properties": {
        "runName": {
          "type": "string"
        },
        "errorCode": {
          "type": "string"
        },
        "message": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            }
          ]
        },
        "libraryPoolId": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            }
          ]
        }
      },
      "required": [
        "runName",
        "errorCode"
      ]
    },
    {
      "additionalProperties": true,
      "properties": {
        "runName": {
          "type": "string"
        },
        "errors": {
          "items": {
            "$ref": "#/definitions/Error"
          },
          "type": "array"
        },
        "libraryPoolId": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            }
          ]
        }
      },
      "required": [
        "runName",
        "errors"
      ]
    }
  ],
  "title": "title-1",
  "type": "object"
}

variables.tf:
variable "hard_delete" {
  type = bool
}
variable "schema_registry_id" {
  type        = string
}
variable "schema_registry_rest_endpoint" {
  type        = string
}
variable "schema_registry_api_key" {
  type        = string
}
variable "schema_registry_api_secret" {
  type        = string
}

terraform init/terraform plan passed successfully.
If we will bump provider version from 1.68.0 to 1.70.0 - we will receive the error for terraform plan:
Planning failed. Terraform encountered an error while generating this plan.

╷
│ Error: error updating Schema "lsrc-abcdef/avas-sbx-value/100123": reimport the current resource instance and set recreate_on_update = false to evolve a schema using the same resource instance.
│ In this case, on an update resource instance will reference the updated (latest) schema by overriding schema_identifier, schema and version attributes and the old schema will be orphaned.
│
│   with confluent_schema.avas-sbx-value-1,
│   on main.tf line 17, in resource "confluent_schema" "avas-sbx-value-1":
│   17: resource "confluent_schema" "avas-sbx-value-1" {
│
╵

state file (partially masked):
{
  "version": 4,
  "terraform_version": "1.7.5",
  "serial": 5,
  "lineage": "111a1111-b2b2-cc3c-444d-5555e55ee555",
  "outputs": {},
  "resources": [
    {
      "mode": "managed",
      "type": "confluent_schema",
      "name": "avas-sbx-value-1",
      "provider": "provider[\"registry.terraform.io/confluentinc/confluent\"]",
      "instances": [
        {
          "schema_version": 0,
          "attributes": {
            "credentials": [],
            "format": "JSON",
            "hard_delete": true,
            "id": "lsrc-abcdef/avas-sbx-value/100123",
            "metadata": null,
            "recreate_on_update": true,
            "rest_endpoint": null,
            "ruleset": null,
            "schema": "{\n  \"$id\": \"/schemas/avas-sbx\",\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"description\": \"Some description\",\n  \"definitions\": {\n    \"Error\": {\n      \"additionalProperties\": true,\n      \"properties\": {\n        \"errorCode\": {\n          \"type\": \"string\"\n        },\n        \"errorMessage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"errorCode\"\n      ],\n      \"title\": \"Error\",\n      \"type\": \"object\"\n    }\n  },\n  \"oneOf\": [\n    {\n      \"additionalProperties\": true,\n      \"properties\": {\n        \"runName\": {\n          \"type\": \"string\"\n        },\n        \"errorCode\": {\n          \"type\": \"string\"\n        },\n        \"message\": {\n          \"oneOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ]\n        },\n        \"libraryPoolId\": {\n          \"oneOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ]\n        }\n      },\n      \"required\": [\n        \"runName\",\n        \"errorCode\"\n      ]\n    },\n    {\n      \"additionalProperties\": true,\n      \"properties\": {\n        \"runName\": {\n          \"type\": \"string\"\n        },\n        \"errors\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Error\"\n          },\n          \"type\": \"array\"\n        },\n        \"libraryPoolId\": {\n          \"oneOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ]\n        }\n      },\n      \"required\": [\n        \"runName\",\n        \"errors\"\n      ]\n    }\n  ],\n  \"title\": \"title-1\",\n  \"type\": \"object\"\n}",
            "schema_identifier": 100123,
            "schema_reference": [],
            "schema_registry_cluster": [],
            "subject_name": "avas-sbx-value",
            "version": 1
          },
          "sensitive_attributes": [],
          "private": "abcDef=="
        }
      ]
    }
  ],
  "check_results": null
}

I also noticed that the error may be resolved by compressing schema file in terraform and state (schema section):
avas-sbx-value-v1.schema.json:
{"$id":"/schemas/avas-sbx","$schema":"http://json-schema.org/draft-07/schema#","description":"Some description","definitions":{"Error":{"additionalProperties":true,"properties":{"errorCode":{"type":"string"},"errorMessage":{"type":"string"}},"required":["errorCode"],"title":"Error","type":"object"}},"oneOf":[{"additionalProperties":true,"properties":{"runName":{"type":"string"},"errorCode":{"type":"string"},"message":{"oneOf":[{"type":"null"},{"type":"string"}]},"libraryPoolId":{"oneOf":[{"type":"null"},{"type":"string"}]}},"required":["runName","errorCode"]},{"additionalProperties":true,"properties":{"runName":{"type":"string"},"errors":{"items":{"$ref":"#/definitions/Error"},"type":"array"},"libraryPoolId":{"oneOf":[{"type":"null"},{"type":"string"}]}},"required":["runName","errors"]}],"title":"title-1","type":"object"}

state:
{
  "version": 4,
  "terraform_version": "1.7.5",
  "serial": 5,
  "lineage": "111a1111-b2b2-cc3c-444d-5555e55ee555",
  "outputs": {},
  "resources": [
    {
      "mode": "managed",
      "type": "confluent_schema",
      "name": "avas-sbx-value-1",
      "provider": "provider[\"registry.terraform.io/confluentinc/confluent\"]",
      "instances": [
        {
          "schema_version": 0,
          "attributes": {
            "credentials": [],
            "format": "JSON",
            "hard_delete": true,
            "id": "lsrc-abcdef/avas-sbx-value/100123",
            "metadata": null,
            "recreate_on_update": true,
            "rest_endpoint": null,
            "ruleset": null,
            "schema": "{\"$id\":\"/schemas/avas-sbx\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"description\":\"Some description\",\"definitions\":{\"Error\":{\"additionalProperties\":true,\"properties\":{\"errorCode\":{\"type\":\"string\"},\"errorMessage\":{\"type\":\"string\"}},\"required\":[\"errorCode\"],\"title\":\"Error\",\"type\":\"object\"}},\"oneOf\":[{\"additionalProperties\":true,\"properties\":{\"runName\":{\"type\":\"string\"},\"errorCode\":{\"type\":\"string\"},\"message\":{\"oneOf\":[{\"type\":\"null\"},{\"type\":\"string\"}]},\"libraryPoolId\":{\"oneOf\":[{\"type\":\"null\"},{\"type\":\"string\"}]}},\"required\":[\"runName\",\"errorCode\"]},{\"additionalProperties\":true,\"properties\":{\"runName\":{\"type\":\"string\"},\"errors\":{\"items\":{\"$ref\":\"#/definitions/Error\"},\"type\":\"array\"},\"libraryPoolId\":{\"oneOf\":[{\"type\":\"null\"},{\"type\":\"string\"}]}},\"required\":[\"runName\",\"errors\"]}],\"title\":\"title-1\",\"type\":\"object\"}",
            "schema_identifier": 100123,
            "schema_reference": [],
            "schema_registry_cluster": [],
            "subject_name": "avas-sbx-value",
            "version": 1
          },
          "sensitive_attributes": [],
          "private": "abcDef=="
        }
      ]
    }
  ],
  "check_results": null
}

^^ In this case terraform plan runs without errors.
The check appears to have failed due to space/line break characters.

Thanks for reporting this issue @AlexVasiukov! We did fix #318 and #293 in 1.70.0 (context).
Could you try to run terraform refresh -target=confluent_schema.avas-sbx-value-1?

@linouk23, sure, here is an output:
terraform refresh -target=confluent_schema.avas-sbx-value-1 -var-file=local-variables.tfvars -state=avas-sbx.json
╷
│ Warning: Resource targeting is in effect
│
│ You are creating a plan with the -target option, which means that the result of this plan may not represent all of the changes requested by the current configuration.
│
│ The -target option is not for routine use, and is provided only for exceptional situations such as recovering from errors or mistakes, or when Terraform specifically
│ suggests to use it as part of an error message.
╵
╷
│ Error: error updating Schema "lsrc-nvpwqz/avas-sbx-value/100861": reimport the current resource instance and set recreate_on_update = false to evolve a schema using the same resource instance.
│ In this case, on an update resource instance will reference the updated (latest) schema by overriding schema_identifier, schema and version attributes and the old schema will be orphaned.
│
│   with confluent_schema.avas-sbx-value-1,
│   on main.tf line 17, in resource "confluent_schema" "avas-sbx-value-1":
│   17: resource "confluent_schema" "avas-sbx-value-1" {
│
╵

The full debug could be found in attach
tf-refresh.txt

Hi @linouk23,
Do you have any updates regarding this issue?

Seems like it's related to the recent https://github.com/confluentinc/terraform-provider-confluent/pull/322 change 🤔

Hi @AlexVasiukov,
Thank you for the patience and I have successfully reproduced this issue from my side, I think the complete order to sequence is:
With TF provider 1.68.0:
terraform init
terraform plan
terraform apply

Then switch to provider 1.70.0:
terraform init -upgrade
terraform plan

Finally the issue is reproduced.

Hi @AlexVasiukov,
We have already identify the root cause, basically the issue is that, during TF plan, the schema comparison custom diff function between existing and new schema should be done in a semantic way, instead of syntactical way.
Which means if the differences are only tabs, newlines, ordering of the JSON properties, etc., the new schema should still be considered as the same as the existing one.
We are testing the potential fix internally and will update once it's ready, thank you.

fixed in v1.81.0 release

@AlexVasiukov let us know whether v1.81.0 resolves this issue, thank you!


Error message for host registration, Add Service & Add registries not clearing

v0.27.0-rc1
Steps:

Go to host registration
Click on Something else: radio button and click on Save with nothing in it (a Please provide a DNS name or IP address error will come up)
Click on Cancel button or switch the radio button back to "this site's address" and click save
Go back to Host Registration

Results:
The error message is still up even thou I resolved the problem
Expected:
No error message
Comments:
The same thing is happening in Add service and Add registries.

Version - master UI 3/17
Verified fixed


[Bug]: catalog table filtering problem

What happened?
We have created two catalogs, zj_catalog and error_catalog, during our usage.  Some tables in zj_catalog are in a pending state if no catalog selection is made.  However, when zj_catalog is selected, there are no corresponding tables in pending, and searching for the tables directly is also unsuccessful.  Moreover, these tables have not been planned or executed, and they are stuck in the pending state.

Affects Versions
0.7.0
What table formats are you seeing the problem on?
No response
What engines are you seeing the problem on?
No response
How to reproduce
No response
Relevant log output
No response
Anything else
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Thanks to feed back.
First, what you searched is optimizer group, not catalog, please pay attention on the hint of searchbox
Second, I believe the long pending status is a scheduling issue which has been discussed in some online discussions.  I raise a PR to fix the issue. I suggest you to take a review and try if this could solve your problem after merged:
https://github.com/apache/amoro/pull/3203


Airflow Scheduler fails to start with the latest charts

What is your question?
Airflow Version: 2.0.0-python-3.6
MySQL - 5.7.25
I am able to bring up WebUI, Flower, Redis using the given charts. However, running into issues with scheduler. Any help in understanding the problem will be of great help. Below is the exception:

k8s-master101:~ $ kubectl logs -n dwh-idev airflow-idev-scheduler-989c9cb8b-4jmb4
*** upgrading airflow db...
/home/airflow/.local/lib/python3.6/site-packages/airflow/configuration.py:320 DeprecationWarning: The base_log_folder option in [core] has been moved to the base_log_folder option in [logging] - the old setting has been used, but please update your config.
/home/airflow/.local/lib/python3.6/site-packages/airflow/configuration.py:320 DeprecationWarning: The dag_processor_manager_log_location option in [core] has been moved to the dag_processor_manager_log_location option in [logging] - the old setting has been used, but please update your config.
usage: airflow [-h] GROUP_OR_COMMAND ...
positional arguments:
GROUP_OR_COMMAND
Groups:
celery         Celery components
config         View configuration
connections    Manage connections
dags           Manage DAGs
db             Database operations
kubernetes     Tools to help run the KubernetesExecutor
pools          Manage pools
providers      Display providers
roles          Manage roles
tasks          Manage tasks
users          Manage users
variables      Manage variables
Commands:
cheat-sheet    Display cheat sheet
info           Show information about current Airflow and environment
kerberos       Start a kerberos ticket renewer
plugins        Dump information about loaded plugins
rotate-fernet-key
airflow command error: argument GROUP_OR_COMMAND: airflow upgradedb command, has been removed, please use airflow db upgrade, see help above.
Rotate encrypted connection credentials and variables
scheduler      Start a scheduler instance
sync-perm      Update permissions for existing roles and DAGs
version        Show the version
webserver      Start a Airflow webserver instance
optional arguments:
-h, --help         show this help message and exit
/home/airflow/.local/lib/python3.6/site-packages/airflow/configuration.py:320 DeprecationWarning: The base_log_folder option in [core] has been moved to the base_log_folder option in [logging] - the old setting has been used, but please update your config.
/home/airflow/.local/lib/python3.6/site-packages/airflow/configuration.py:320 DeprecationWarning: The dag_processor_manager_log_location option in [core] has been moved to the dag_processor_manager_log_location option in [logging] - the old setting has been used, but please update your config.
DB: mysql+mysqldb://airflow:***@mysql.myserver.com:3306/airflow
[2021-02-04 00:20:59,041] {db.py:678} INFO - Creating tables
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
*** adding Airflow variables...
/home/airflow/.local/lib/python3.6/site-packages/airflow/configuration.py:320 DeprecationWarning: The base_log_folder option in [core] has been moved to the base_log_folder option in [logging] - the old setting has been used, but please update your config.
/home/airflow/.local/lib/python3.6/site-packages/airflow/configuration.py:320 DeprecationWarning: The dag_processor_manager_log_location option in [core] has been moved to the dag_processor_manager_log_location option in [logging] - the old setting has been used, but please update your config.
usage: airflow variables [-h] COMMAND ...
airflow variables command error: argument COMMAND: invalid choice: '/home/airflow/variables-pools/variables.json' (choose from 'delete', 'export', 'get', 'import', 'list', 'set'), see help above.
Manage variables
positional arguments:
COMMAND
delete    Delete variable
export    Export all variables
get       Get variable
import    Import variables
list      List variables
set       Set variable
optional arguments:
-h, --help  show this help message and exit

Customizing the template for scheduler-deployment.yaml worked for me as the commands changed for 2.0.0.
The following two commands
...
&& airflow variables -i /home/airflow/variables-pools/variables.json \
...
&& airflow pools -i /home/airflow/variables-pools/pools.json \
...

Should be changed to
...
&& airflow variables import /home/airflow/variables-pools/variables.json \
...
&& airflow pools import /home/airflow/variables-pools/pools.json \
...

@agkee, Thanks for the pointer. This did the trick and the scheduler is up now.

Anyone got ldap authentication successfully worked?
I added the below in my values.
web:
extraPipPackages:
- "apache-airflow[ldap]"
- "pyldap"
However running into this problem when spinning up webserver:

*** installing extra pip packages...
Requirement already satisfied: apache-airflow[ldap] in /home/airflow/.local/lib/python3.6/site-packages (2.0.0)
Collecting pyldap
Downloading pyldap-3.0.0.post1-py3-none-any.whl (3.0 kB)
Requirement already satisfied: flask<2.0,>=1.1.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.1.2)
Requirement already satisfied: json-merge-patch==0.2 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.2)
Requirement already satisfied: colorlog==4.0.2 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (4.0.2)
Requirement already satisfied: flask-appbuilder~=3.1.1 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (3.1.1)
Requirement already satisfied: sqlalchemy<2,>=1.3.18 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.3.20)
Requirement already satisfied: gunicorn<20.0,>=19.5.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (19.10.0)
Requirement already satisfied: flask-swagger==0.2.13 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.2.13)
Requirement already satisfied: lockfile>=0.12.2 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.12.2)
Requirement already satisfied: dill<0.4,>=0.2.2 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.3.3)
Requirement already satisfied: cryptography>=0.9.3 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (3.2.1)
Requirement already satisfied: flask-wtf<0.15,>=0.14.3 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.14.3)
Requirement already satisfied: markupsafe<2.0,>=1.1.1 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.1.1)
Requirement already satisfied: pendulum~=2.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (2.1.2)
Requirement already satisfied: funcsigs<2.0.0,>=1.0.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0.2)
Requirement already satisfied: python-slugify<5.0,>=3.0.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (4.0.1)
Requirement already satisfied: pandas<2.0,>=0.17.1 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.1.4)
Requirement already satisfied: tenacity~=6.2.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (6.2.0)
Requirement already satisfied: croniter<0.4,>=0.3.17 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.3.36)
Requirement already satisfied: apache-airflow-providers-sqlite in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0.0)
Requirement already satisfied: importlib-resources~=1.4 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.5.0)
Requirement already satisfied: importlib-metadata~=1.7; python_version < "3.9" in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.7.0)
Requirement already satisfied: markdown<4.0,>=2.5.2 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (3.3.3)
Requirement already satisfied: urllib3<1.26 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.25.11)
Requirement already satisfied: sqlalchemy-jsonfield~=1.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0.0)
Requirement already satisfied: requests<2.24.0,>=2.20.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (2.23.0)
Requirement already satisfied: werkzeug>=1.0.1,~=1.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0.1)
Requirement already satisfied: pygments<3.0,>=2.0.1 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (2.7.2)
Requirement already satisfied: termcolor>=1.1.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.1.0)
Requirement already satisfied: psutil<6.0.0,>=4.2.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (5.7.3)
Requirement already satisfied: argcomplete~=1.10 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.12.2)
Requirement already satisfied: unicodecsv>=0.14.1 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.14.1)
Requirement already satisfied: apache-airflow-providers-ftp in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0.0)
Requirement already satisfied: graphviz>=0.12 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.15)
Requirement already satisfied: apache-airflow-providers-imap in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0.0)
Requirement already satisfied: lazy-object-proxy<1.5.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.4.3)
Requirement already satisfied: jinja2<2.12.0,>=2.10.1 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (2.11.2)
Requirement already satisfied: marshmallow-oneofschema>=2.0.1 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (2.1.0)
Requirement already satisfied: typing-extensions>=3.7.4; python_version < "3.8" in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (<IP_ADDRESS>)
Requirement already satisfied: flask-login<0.5,>=0.3 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.4.1)
Requirement already satisfied: python-nvd3~=0.15.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.15.0)
Requirement already satisfied: tabulate<0.9,>=0.7.5 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.8.7)
Requirement already satisfied: flask-caching<2.0.0,>=1.5.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.9.0)
Requirement already satisfied: thrift>=0.9.2 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.13.0)
Requirement already satisfied: connexion[flask,swagger-ui]<3,>=2.6.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (2.7.0)
Requirement already satisfied: iso8601>=0.1.12 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (0.1.13)
Requirement already satisfied: pep562~=1.0; python_version < "3.7" in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0)
Requirement already satisfied: python-dateutil<3,>=2.3 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (2.8.1)
Requirement already satisfied: rich==9.2.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (9.2.0)
Requirement already satisfied: cached-property~=1.5 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.5.2)
Requirement already satisfied: itsdangerous>=1.1.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.1.0)
Requirement already satisfied: alembic<2.0,>=1.2 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.4.3)
Requirement already satisfied: apache-airflow-providers-http in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0.0)
Requirement already satisfied: attrs<21.0,>=20.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (20.3.0)
Requirement already satisfied: python-daemon>=2.1.1 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (2.2.4)
Requirement already satisfied: jsonschema~=3.0 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (3.2.0)
Requirement already satisfied: cattrs<1.1.0,>=1.0; python_version <= "3.6" in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.0.0)
Requirement already satisfied: tzlocal<2.0.0,>=1.4 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.5.1)
Requirement already satisfied: setproctitle<2,>=1.1.8 in /home/airflow/.local/lib/python3.6/site-packages (from apache-airflow[ldap]) (1.2)
Collecting ldap3>=2.5.1; extra == "ldap"
Downloading ldap3-2.9-py2.py3-none-any.whl (430 kB)
Collecting python-ldap>=3.0.0b1
Downloading python-ldap-3.3.1.tar.gz (379 kB)
Requirement already satisfied: click>=5.1 in /home/airflow/.local/lib/python3.6/site-packages (from flask<2.0,>=1.1.0->apache-airflow[ldap]) (7.1.2)
Requirement already satisfied: marshmallow<4,>=3 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (3.9.1)
Requirement already satisfied: prison<1.0.0,>=0.1.3 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (0.1.3)
Requirement already satisfied: sqlalchemy-utils<1,>=0.32.21 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (0.36.8)
Requirement already satisfied: marshmallow-sqlalchemy<0.24.0,>=0.22.0 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (0.23.1)
Requirement already satisfied: Flask-JWT-Extended<4,>=3.18 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (3.25.0)
Requirement already satisfied: email-validator<2,>=1.0.5 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (1.1.2)
Requirement already satisfied: PyJWT>=1.7.1 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (1.7.1)
Requirement already satisfied: colorama<1,>=0.3.9 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (0.4.4)
Requirement already satisfied: Flask-OpenID<2,>=1.2.5 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (1.2.5)
Requirement already satisfied: Flask-SQLAlchemy<3,>=2.4 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (2.4.4)
Requirement already satisfied: apispec[yaml]<4,>=3.3 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (3.3.2)
Requirement already satisfied: marshmallow-enum<2,>=1.5.1 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (1.5.1)
Requirement already satisfied: Flask-Babel<2,>=1 in /home/airflow/.local/lib/python3.6/site-packages (from flask-appbuilder~=3.1.1->apache-airflow[ldap]) (1.0.0)
Requirement already satisfied: PyYAML>=3.0 in /home/airflow/.local/lib/python3.6/site-packages (from flask-swagger==0.2.13->apache-airflow[ldap]) (5.3.1)
Requirement already satisfied: cffi!=1.11.3,>=1.8 in /home/airflow/.local/lib/python3.6/site-packages (from cryptography>=0.9.3->apache-airflow[ldap]) (1.14.4)
Requirement already satisfied: six>=1.4.1 in /home/airflow/.local/lib/python3.6/site-packages (from cryptography>=0.9.3->apache-airflow[ldap]) (1.15.0)
Requirement already satisfied: WTForms in /home/airflow/.local/lib/python3.6/site-packages (from flask-wtf<0.15,>=0.14.3->apache-airflow[ldap]) (2.3.3)
Requirement already satisfied: pytzdata>=2020.1 in /home/airflow/.local/lib/python3.6/site-packages (from pendulum~=2.0->apache-airflow[ldap]) (2020.1)
Requirement already satisfied: text-unidecode>=1.3 in /home/airflow/.local/lib/python3.6/site-packages (from python-slugify<5.0,>=3.0.0->apache-airflow[ldap]) (1.3)
Requirement already satisfied: pytz>=2017.2 in /home/airflow/.local/lib/python3.6/site-packages (from pandas<2.0,>=0.17.1->apache-airflow[ldap]) (2020.4)
Requirement already satisfied: numpy>=1.15.4 in /home/airflow/.local/lib/python3.6/site-packages (from pandas<2.0,>=0.17.1->apache-airflow[ldap]) (1.19.4)
Requirement already satisfied: natsort in /home/airflow/.local/lib/python3.6/site-packages (from croniter<0.4,>=0.3.17->apache-airflow[ldap]) (7.1.0)
Requirement already satisfied: zipp>=0.4; python_version < "3.8" in /home/airflow/.local/lib/python3.6/site-packages (from importlib-resources~=1.4->apache-airflow[ldap]) (3.4.0)
Requirement already satisfied: typing>=3.6; python_version < "3.7" in /home/airflow/.local/lib/python3.6/site-packages (from sqlalchemy-jsonfield~=1.0->apache-airflow[ldap]) (<IP_ADDRESS>)
Requirement already satisfied: certifi>=2017.4.17 in /home/airflow/.local/lib/python3.6/site-packages (from requests<2.24.0,>=2.20.0->apache-airflow[ldap]) (2020.11.8)
Requirement already satisfied: idna<3,>=2.5 in /home/airflow/.local/lib/python3.6/site-packages (from requests<2.24.0,>=2.20.0->apache-airflow[ldap]) (2.10)
Requirement already satisfied: chardet<4,>=3.0.2 in /home/airflow/.local/lib/python3.6/site-packages (from requests<2.24.0,>=2.20.0->apache-airflow[ldap]) (3.0.4)
Requirement already satisfied: clickclick>=1.2 in /home/airflow/.local/lib/python3.6/site-packages (from connexion[flask,swagger-ui]<3,>=2.6.0->apache-airflow[ldap]) (20.10.2)
Requirement already satisfied: inflection>=0.3.1 in /home/airflow/.local/lib/python3.6/site-packages (from connexion[flask,swagger-ui]<3,>=2.6.0->apache-airflow[ldap]) (0.5.1)
Requirement already satisfied: openapi-spec-validator>=0.2.4 in /home/airflow/.local/lib/python3.6/site-packages (from connexion[flask,swagger-ui]<3,>=2.6.0->apache-airflow[ldap]) (0.2.9)
Requirement already satisfied: swagger-ui-bundle>=0.0.2; extra == "swagger-ui" in /home/airflow/.local/lib/python3.6/site-packages (from connexion[flask,swagger-ui]<3,>=2.6.0->apache-airflow[ldap]) (0.0.8)
Requirement already satisfied: dataclasses<0.8,>=0.7; python_version >= "3.6" and python_version < "3.7" in /home/airflow/.local/lib/python3.6/site-packages (from rich==9.2.0->apache-airflow[ldap]) (0.7)
Requirement already satisfied: commonmark<0.10.0,>=0.9.0 in /home/airflow/.local/lib/python3.6/site-packages (from rich==9.2.0->apache-airflow[ldap]) (0.9.1)
Requirement already satisfied: python-editor>=0.3 in /home/airflow/.local/lib/python3.6/site-packages (from alembic<2.0,>=1.2->apache-airflow[ldap]) (1.0.4)
Requirement already satisfied: Mako in /home/airflow/.local/lib/python3.6/site-packages (from alembic<2.0,>=1.2->apache-airflow[ldap]) (1.1.3)
Requirement already satisfied: docutils in /home/airflow/.local/lib/python3.6/site-packages (from python-daemon>=2.1.1->apache-airflow[ldap]) (0.16)
Requirement already satisfied: setuptools in /usr/local/lib/python3.6/site-packages (from python-daemon>=2.1.1->apache-airflow[ldap]) (51.0.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /home/airflow/.local/lib/python3.6/site-packages (from jsonschema~=3.0->apache-airflow[ldap]) (0.17.3)
Requirement already satisfied: pyasn1>=0.4.6 in /home/airflow/.local/lib/python3.6/site-packages (from ldap3>=2.5.1; extra == "ldap"->apache-airflow[ldap]) (0.4.8)
Requirement already satisfied: pyasn1_modules>=0.1.5 in /home/airflow/.local/lib/python3.6/site-packages (from python-ldap>=3.0.0b1->pyldap) (0.2.8)
Requirement already satisfied: dnspython>=1.15.0 in /home/airflow/.local/lib/python3.6/site-packages (from email-validator<2,>=1.0.5->flask-appbuilder~=3.1.1->apache-airflow[ldap]) (1.16.0)
Requirement already satisfied: python3-openid>=2.0 in /home/airflow/.local/lib/python3.6/site-packages (from Flask-OpenID<2,>=1.2.5->flask-appbuilder~=3.1.1->apache-airflow[ldap]) (3.2.0)
Requirement already satisfied: Babel>=2.3 in /home/airflow/.local/lib/python3.6/site-packages (from Flask-Babel<2,>=1->flask-appbuilder~=3.1.1->apache-airflow[ldap]) (2.9.0)
Requirement already satisfied: pycparser in /home/airflow/.local/lib/python3.6/site-packages (from cffi!=1.11.3,>=1.8->cryptography>=0.9.3->apache-airflow[ldap]) (2.20)
Requirement already satisfied: defusedxml in /home/airflow/.local/lib/python3.6/site-packages (from python3-openid>=2.0->Flask-OpenID<2,>=1.2.5->flask-appbuilder~=3.1.1->apache-airflow[ldap]) (0.6.0)
Building wheels for collected packages: python-ldap
Building wheel for python-ldap (setup.py): started
Building wheel for python-ldap (setup.py): finished with status 'error'
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-agq0oacm/python-ldap/setup.py'"'"'; file='"'"'/tmp/pip-install-agq0oacm/python-ldap/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-4eb0eftk
cwd: /tmp/pip-install-agq0oacm/python-ldap/
Complete output (78 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.6
copying Lib/ldapurl.py -> build/lib.linux-x86_64-3.6
copying Lib/ldif.py -> build/lib.linux-x86_64-3.6
creating build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/init.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/async.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/asyncsearch.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/cidict.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/compat.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/constants.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/dn.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/filter.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/functions.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/ldapobject.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/logger.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/modlist.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/pkginfo.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/resiter.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/sasl.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/syncrepl.py -> build/lib.linux-x86_64-3.6/ldap
creating build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/init.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/deref.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/libldap.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/openldap.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/pagedresults.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/ppolicy.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/psearch.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/pwdpolicy.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/readentry.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/sessiontrack.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/simple.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/sss.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/vlv.py -> build/lib.linux-x86_64-3.6/ldap/controls
creating build/lib.linux-x86_64-3.6/ldap/extop
copying Lib/ldap/extop/init.py -> build/lib.linux-x86_64-3.6/ldap/extop
copying Lib/ldap/extop/dds.py -> build/lib.linux-x86_64-3.6/ldap/extop
copying Lib/ldap/extop/passwd.py -> build/lib.linux-x86_64-3.6/ldap/extop
creating build/lib.linux-x86_64-3.6/ldap/schema
copying Lib/ldap/schema/init.py -> build/lib.linux-x86_64-3.6/ldap/schema
copying Lib/ldap/schema/models.py -> build/lib.linux-x86_64-3.6/ldap/schema
copying Lib/ldap/schema/subentry.py -> build/lib.linux-x86_64-3.6/ldap/schema
copying Lib/ldap/schema/tokenizer.py -> build/lib.linux-x86_64-3.6/ldap/schema
creating build/lib.linux-x86_64-3.6/slapdtest
copying Lib/slapdtest/init.py -> build/lib.linux-x86_64-3.6/slapdtest
copying Lib/slapdtest/_slapdtest.py -> build/lib.linux-x86_64-3.6/slapdtest
running egg_info
writing Lib/python_ldap.egg-info/PKG-INFO
writing dependency_links to Lib/python_ldap.egg-info/dependency_links.txt
writing requirements to Lib/python_ldap.egg-info/requires.txt
writing top-level names to Lib/python_ldap.egg-info/top_level.txt
reading manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'Doc/.build'
writing manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
creating build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/README -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/ca.conf -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/ca.pem -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/client.conf -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/client.key -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/client.pem -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/gencerts.sh -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/gennssdb.sh -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/server.conf -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/server.key -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/server.pem -> build/lib.linux-x86_64-3.6/slapdtest/certs
running build_ext
building '_ldap' extension
creating build/temp.linux-x86_64-3.6
creating build/temp.linux-x86_64-3.6/Modules
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DHAVE_SASL -DHAVE_TLS -DHAVE_LIBLDAP_R -DHAVE_LIBLDAP_R -DLDAPMODULE_VERSION=3.3.1 -DLDAPMODULE_AUTHOR=python-ldap project -DLDAPMODULE_LICENSE=Python style -IModules -I/usr/local/include/python3.6m -c Modules/LDAPObject.c -o build/temp.linux-x86_64-3.6/Modules/LDAPObject.o
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1

ERROR: Failed building wheel for python-ldap
Running setup.py clean for python-ldap
Failed to build python-ldap
Installing collected packages: python-ldap, pyldap, ldap3
Running setup.py install for python-ldap: started
Running setup.py install for python-ldap: finished with status 'error'
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-agq0oacm/python-ldap/setup.py'"'"'; file='"'"'/tmp/pip-install-agq0oacm/python-ldap/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-e4c3oyl1/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/airflow/.local/include/python3.6m/python-ldap
cwd: /tmp/pip-install-agq0oacm/python-ldap/
Complete output (78 lines):
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.6
copying Lib/ldapurl.py -> build/lib.linux-x86_64-3.6
copying Lib/ldif.py -> build/lib.linux-x86_64-3.6
creating build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/init.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/async.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/asyncsearch.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/cidict.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/compat.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/constants.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/dn.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/filter.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/functions.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/ldapobject.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/logger.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/modlist.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/pkginfo.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/resiter.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/sasl.py -> build/lib.linux-x86_64-3.6/ldap
copying Lib/ldap/syncrepl.py -> build/lib.linux-x86_64-3.6/ldap
creating build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/init.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/deref.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/libldap.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/openldap.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/pagedresults.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/ppolicy.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/psearch.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/pwdpolicy.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/readentry.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/sessiontrack.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/simple.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/sss.py -> build/lib.linux-x86_64-3.6/ldap/controls
copying Lib/ldap/controls/vlv.py -> build/lib.linux-x86_64-3.6/ldap/controls
creating build/lib.linux-x86_64-3.6/ldap/extop
copying Lib/ldap/extop/init.py -> build/lib.linux-x86_64-3.6/ldap/extop
copying Lib/ldap/extop/dds.py -> build/lib.linux-x86_64-3.6/ldap/extop
copying Lib/ldap/extop/passwd.py -> build/lib.linux-x86_64-3.6/ldap/extop
creating build/lib.linux-x86_64-3.6/ldap/schema
copying Lib/ldap/schema/init.py -> build/lib.linux-x86_64-3.6/ldap/schema
copying Lib/ldap/schema/models.py -> build/lib.linux-x86_64-3.6/ldap/schema
copying Lib/ldap/schema/subentry.py -> build/lib.linux-x86_64-3.6/ldap/schema
copying Lib/ldap/schema/tokenizer.py -> build/lib.linux-x86_64-3.6/ldap/schema
creating build/lib.linux-x86_64-3.6/slapdtest
copying Lib/slapdtest/init.py -> build/lib.linux-x86_64-3.6/slapdtest
copying Lib/slapdtest/_slapdtest.py -> build/lib.linux-x86_64-3.6/slapdtest
running egg_info
writing Lib/python_ldap.egg-info/PKG-INFO
writing dependency_links to Lib/python_ldap.egg-info/dependency_links.txt
writing requirements to Lib/python_ldap.egg-info/requires.txt
writing top-level names to Lib/python_ldap.egg-info/top_level.txt
reading manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'Doc/.build'
writing manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
creating build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/README -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/ca.conf -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/ca.pem -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/client.conf -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/client.key -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/client.pem -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/gencerts.sh -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/gennssdb.sh -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/server.conf -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/server.key -> build/lib.linux-x86_64-3.6/slapdtest/certs
copying Lib/slapdtest/certs/server.pem -> build/lib.linux-x86_64-3.6/slapdtest/certs
running build_ext
building '_ldap' extension
creating build/temp.linux-x86_64-3.6
creating build/temp.linux-x86_64-3.6/Modules
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DHAVE_SASL -DHAVE_TLS -DHAVE_LIBLDAP_R -DHAVE_LIBLDAP_R -DLDAPMODULE_VERSION=3.3.1 -DLDAPMODULE_AUTHOR=python-ldap project -DLDAPMODULE_LICENSE=Python style -IModules -I/usr/local/include/python3.6m -c Modules/LDAPObject.c -o build/temp.linux-x86_64-3.6/Modules/LDAPObject.o
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-agq0oacm/python-ldap/setup.py'"'"'; file='"'"'/tmp/pip-install-agq0oacm/python-ldap/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-e4c3oyl1/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/airflow/.local/include/python3.6m/python-ldap Check the logs for full command output.
WARNING: You are using pip version 20.2.4; however, version 21.0.1 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.

I am able to resolve this by installing the following in the image for LDAP authentication.
apt-get install build-essential python3-dev python2.7-dev libldap2-dev libsasl2-dev slapd ldap-utils tox lcov valgrind


Feature derive defmt for debug printing of enums

To be able to print signals with an enum with no_std I added defmt to format the enum values so they can be printed for debugging right away. This is done with an optional flag to enable this feature.

@wallem89 I saw your PR and remembered I implemented defmt support a couple of months back, too. :facepalm:
I've submitted it as #91. It's similar to yours but I also implemented Format for message structs.

@wallem89 I saw your PR and remembered I implemented defmt support a couple of months back, too. 🤦
I've submitted it as #91. It's similar to yours but I also implemented Format for message structs.

Your PR works for me too. And i like the Format for the message structs. Let's get yours merged and into a next release!