IoT Zephyr

Zephyr Weekly Update – zspdx is getting some love

The Zephyr community is definitely back to full-speed after the short holiday break, and I feel like I really need to re-think the format of these weekly updates so that I can be more efficient in putting them together, while still providing you with more insights than what you’d get from just looking at the git log! Anyways, that’s an implementation detail, and you’re probably here for this week’s update, and not for reading my random thoughts 🙂

A new script to help you migrate boards to v2 model

Last week, I mentioned how Zephyr is transitioning to a new, better, model to describe SoCs and boards. To help with this transition, Gerard Marull has released a script that assists with migrating a group of boards to the new model. (PR #67423)

SBOM generation improvements

Thanks to PR #66182 by Thomas Gagneret, the modules that are composing a Zephyr application are now properly captured as actual packages when generating the SBOM (Software Bill of Materials) files.

##### Package: mbedtls

PackageName: mbedtls
SPDXID: SPDXRef-mbedtls-sources
PackageDownloadLocation: NOASSERTION
PackageLicenseConcluded: Apache-2.0
PackageLicenseDeclared: NOASSERTION
PackageCopyrightText: NOASSERTION
PackageLicenseInfoFromFiles: Apache-2.0
FilesAnalyzed: true
PackageVerificationCode: 53b2e7743712704ce9b05f8e17bc4eaba8776ddd

FileName: ./library/aes.c
SPDXID: SPDXRef-File-aes.c
FileChecksum: SHA1: ff7a9b66046c0de1a36bcd7c09a2307fb860aeb4
FileChecksum: SHA256: 5915d2544f3b93ed37f88a22b2d2e795447267119b553619231b75d83457679a
LicenseConcluded: Apache-2.0
LicenseInfoInFile: Apache-2.0
FileCopyrightText: NOASSERTION


As a reminder, generating the SBOM files for a Zephyr build, and therefore capturing the fingerprint of all the source files ending up in your application so that you can better assess if you’re impacted by software vulnerabilities further down the road, is something you can do in just a few lines.

New documentation pages

There’s been several substantial and most welcome additions made to the following areas of the documentation:

  • A new network configuration guide walks you through the multiple Kconfig options that are available to you to configure your network stack, from buffers sizes to fine-tuning TCP options or configuring the TLS stack. Thank you Jukka for all the work on this one!
  • Users of the CANbus subsystem will be happy to now have a complete reference for the can shell command. Thanks, Brix!
  • Now that we have a gpio-kbd-matrix driver available, Fabio wrote a super detailed cheatsheet for all the various options it offers depending on the actual layout and wiring of your keyboards, and the hardware capabilities of your GPIO controller.
  • In order to help navigate what kind of emulators/simulators are available to you, there is some great and steady progress being made to the Zephyr’s device emulators/simulators page, so I definitely encourage you to check it out to catch up on some of the things you probaby didn’t know existed 🙂

Boards & SoCs

  • A new variant of the Panasonic PAN1783A, the PAN1783A-PA, has been added (PR #66620)
  • The Seeed Studio LoRa-E5 mini from Seeed Studio is a LoRa devkit with a pretty small form factor, and based on STM32WLE5JC MCU. (PR #64279)
  • The Kincony KC868-A32 board features 32 relays that can be used for home automation scenarios, as they’re rated for 220V/10A. What I find interesting with this board is that it has a Devicetree that can actually be an interesting reference for anyone interested in understanding how to configure an I/O expander (a PCF8574 in this particular case). (PR #66404)

SoC driver updates

  • Support for FlexCAN added on NXP UCANS32K1SIC. (PR #67006)

General drivers

  • Fabio describes it as the “last installment (maybe) of the general purpose input drivers” :), this week a new analog axis input driver has been added to allow to map values read on an ADC channel to changes on an input axis.
    The driver offers several configuration options such as calibrating min/max readings corresponding to the two ends of the axis, of course, but also setting a deadzone (don’t report changes when axis is mostly in the center of the range), etc. (PR #66600)
  • Similar to the keyboard matrix driver, the gpio-keys driver can now be used in “polling” mode, in order to easily configure GPIO input keys even when the port doesn’t support interrupts (or you’re simply out of interrupts in your interrupt controller…). (PR #67208)
  • A new driver zephyr,w1-gpio driver allows to use any GPIO as a 1-Wire master, using bit-banging. (PR #65948)
  • The Bosch BMA4xx series of accelerometers is now supported. (PR #66242)
  • A new driver has been added for controlling WS2812 LED strips on RP2040 (Raspberry Pi Pico), using the PIO (Programmable Input Output) framework. It’s really funny to see how concise PIO programs typically are. (PR #55226)
  • MAX20355 regulator now supports “ship mode”, i.e. turning the PMIC off. (PR #67222)


  • A new ztest shell command allows to run test suites and individual test cases directly from the Zephyr shell — neat! (PR #58374)
  • A new riscv32_virtual board, emulated with Renode, can be used as an alternative to qemu for testing RISC-V 32 applications.
  • Bluetooth Public Broadcast Profile (PBP) API and implementations are now available, allowing sources to allows sources to create a Public Broadcast Announcement, as well as parse Public Broadcast Announcements.
    The issue to add PBP support to Zephyr was opened over two years ago, so it is great to see this finally land! (PR #60777)
  • Events related to access point mode are now exposed by the Wi-Fi manager, and you can better feedback on e.g. why an AP enable operation failed. (PR #67015)
  • New available POSIX APIs:
    • sem_open(), sem_unlink() & sem_close()
    • sigprocmask()
    • clock_getcpuclockid()

A big thank you to the 11 individuals who had their first pull request accepted this week, 💙 🙌: @andreeaDumitrache, @pamolloy, @ssnover, @RICCIARDI-Adrien, @jkandasa, @hcd-bdltd, @LukaszMadejGrinn, @walzsi, @Jonathan-Hamberg, @tgagneret-embedded, and @jzipperer-fb.

As always, I very much welcome your thoughts and feedback in the comments below!

If you enjoyed this article, don’t forget to subscribe to this blog to be notified of upcoming publications! And of course, you can also always find me on Twitter and Mastodon.

Catch up on all previous issues of the Zephyr Weekly Update:

By Benjamin Cabé

Benjamin Cabé is a technology enthusiast with a passion for empowering developers to build innovative solutions. He has invented an award-winning open source and open hardware artificial nose that he likes to use as an educational platform for people interested in diving into the world of embedded development.
He is currently a Developer Advocate for the Zephyr Project at the Linux Foundation and lives near Toulouse, France, where he enjoys baking sourdough bread with the help of his artificial nose.

Leave a Reply

Your email address will not be published. Required fields are marked *