Categories
IoT Zephyr

Zephyr Weekly Update – Apr. 11, 2025

Hello, Zephyr enthusiasts! It’s been a couple of busy weeks as we move further into the Zephyr 4.2 development cycle. Let’s dive into some of the significant additions and improvements merged over the past couple weeks.

New CI servers are blazing fast

There are litterally hundreds of pull requests being submitted to Zephyr every week. We’re trying our best to have them go through a set of relevant tests on our continuous integration servers so that the proposed changes are effectively working, not causing regressions, etc.

With the sheer amount of pull requests involved, our servers are usually VERY busy, pretty much 24/7. Our infrastructure guru Stephanos recently completed the move to Hetzner as our new provider, and we now have a farm of very beefy AMD EPYC™ Genoa 9454P (48 cores / 96 threads!) powered servers that is significantly speeding up the times it takes for pull requests to go through CI (from several hours before to just about 20 minutes now, in most cases).

Interestingly, GitHub just announced this week that they’re making 96 vCPU runners generally available. Priced at $0.384 per minute (!) of usage, it’s a good reminder that Zephyr’s shared development model, with financial support from its member companies, brings a lot of “free” benefits to the community at large.

Twister harness for power measurement

Testing and validating power consumption of embedded systems is often a very manual and time-consuming task.

A new power harness was recently added to Twister, enabling automated power measurement and validation during test runs. As a reminder, a Twister harness is basically responsible for determining whether a given test passes or not. For example, one would often use the console harness to validate console output against e.g. a regular expression to confirm an application is working as expected.

With the new power harness, it is possible to use an external power monitor (the initial implementation supports the STMicroelectronics X-NUCLEO-LPM01A expansion board running PowerShield) to measure the current drawn by the device under test, and to express some “rules” as to what’s considered success or failure (ex. to ensure the peak consumption never goes above a given value).

The pull request that introduced this new feature (#85130) is probably the best starting point at this stage for you to get a closer look at how this works (and it looks like documentation for it is maybe a bit lacking at the moment, unfortunately). I haven’t spent a lot of time digging into this new feature just yet but I would be really curious to see people start extending it to support other popular power monitors such as Nordic’s PPK2, JouleScope, etc.

Bluetooth Hands-Free Profile (HFP) improvements

PR #77694 has recently been merged and it brings a pretty significant update to the already supported Bluetooth Hands-Free Profile (HFP) and adds support for features such as remote volume control, caller ID, memory dialing, and more (it’s over 11,000 lines of code that were added!).

New boards and SoCs

As always, way too many boards added so I am focusing on just a few 🙂

STM32MP135F-DK Discovery
  • STMicroelectronics STM32MP13 micro-processor is based on Arm Cortex-A7, and a lot of work went into not only adding support for it in Zephyr—PR #87687—but basically also introducing Zephyr support for Cortex-A7 in the first place!
    Should you want to get started with Cortex-A7 on Zephyr, I guess you best bet for now is to then use the STM32MP135 Discovery kit port which, quite naturally, was also introduced in the same PR 🙂
  • You may or may not know that Zephyr is widely used to write Embedded Controller firmwares. For example, laptops such as Chromebooks or Framework Laptops are effectively leveraging Zephyr for all kinds of low-level hardware management stuff (power management, keyboard interfacing, etc.).
    PR #87095 introduces support for ITE Tech’s IT51XXX SoC series. IT51XXX is a 32-bit RISC-V microcontroller with 128KB SRAM, 512K-1M of embedded flash, and a variety of buses and peripherals you’d expect to find on a computer motherboard (SMBus, I3C, cryptographic engine, …)
  • Two new XIAO boards from Seeed Studio: XIAO RA4M1 and XIAO MG24.

Drivers

  • A new MBOX driver for Arm MHUv3 (arm,mhuv3) has been introduced. The MHU (Message Handling Unit) is a standard hardware block found in many multi-core Arm MCUs. It is designed to facilitate low-latency signaling and message passing between different cores. (PR #82564)
    You can read more on Arm MHU here.
  • New sensor drivers added for:
    • TDK ICP201XX pressure sensor (PR #83914),
    • Liteon LTR329 ambient light sensor (PR #85453),
    • ESP32-C6 internal temperature sensor (PR #87175),
    • TI DAC161S997 DAC (PR#86285),
    • NXP PCF2123 RTC (PR #88049),
    • PAT9136 Optical Flow Sensor (PR #86747)
  • New driver for the Sitronix ST7701 display controller (PR#85569).
  • New Espressif LP UART driver targetting the Low Power core found on Espressif SoCs such as ESP32-C6 (PR #87684)
  • New driver for the TI BQ25713 battery charger IC (PR #86791).
  • The Silicon Labs EUSART driver now supports Power Management, Asynchronous API, and DMA (PR #85796).
  • I2S support was added for Espressif ESP32 and ESP32-S2 (PR #83710).
  • The Bosch BMA4xx accelerometer driver now supports streaming API (PR #83575).

Miscellaneous

  • Arduino GIGA Display Shield: Support for the display shield designed for the Arduino GIGA R1 board has been added (PR #85569).
Arduino GIGA Display Shield
  • Coredump In-Memory Backend: The coredump subsystem now features an optional in-memory backend, useful for capturing crash information on systems without persistent storage (PR #87565).
    See CONFIG_DEBUG_COREDUMP_BACKEND_IN_MEMORY.
  • Some long overdue improvements to Zephyr’s JSON library, with better support for parsing/serializing “NaN”, “Infinity”, scientific notation, and char arrays. (PR #86956 & #87580)
  • It’s know possible to suspend/resume the task watchdog, which can be useful when the system needs to go into a suspend state. (PR #87590)

A big thank you to the 41 individuals who had their first pull request accepted this week, 💙 🙌: @peterwangsz, @juickar, @seankyer, @raulgotor, @dereje-demant, @Bucknalla, @PicoBoy2017, @aisuneko, @stefan-golinschi, @KwsBaer, @thanhthe23, @pir0n, @manoj-aerlync, @fimohame, @marekmaskarinec, @Yunshao-Chiang, @tq-delimayuki, @Pharb, @kesyog, @AdamOpenshaw, @vbrzeski, @woobacca, @saimohith-google, @lukkelele, @darrenlu-ambiq, @PeggyCienet, @DavidCerrone, @ivanwagner, @derekvalleroy, @caiohbm, @jamesturton, @rob-robinson-14, @cjwinklhofer, @ajordanr-google, @echistyakov, @bukepo, @cichiwskyj, @Tim-Wang38, @Gibson431, @paultimke, and @robertperkel.

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:

Categories
IoT Zephyr

Zephyr Weekly Update – Mar. 28, 2025

Let’s catch up on some of the things that happened in Zephyr land since Zephyr 4.1 was released 3 weeks ago. Over 750 pull requests have already been merged so, like always, I’m of course only covering a very small portion of the tremendous activity of the project.

Before diving deeper, don’t forget our upcoming Zephyr Tech Talk next Wednesday, April 2, where David Brown will tell us all there is to know about Rust on Zephyr — what’s there already, what’s coming, and how you can help!

And now for your weekly-ish updates 🙂

Introducing MQTT 5.0 support

We’re getting dangerously close to reaching 90,000 issues/pull requests in the project’s GitHub repository, so it’s not often that an issue in the 20,000 range is being closed 🙂 This week, we just added support for MQTT 5.0 (the project has of course supported MQTT 3.1 for quite a while), which was tracked in issue #21633 open on Jan. 1, 2020!

MQTT 5.0 introduces several improvements over MQTT 3.1(.1), such as the addition of user properties and metadata fields in the CONNECT, PUBLISH, and SUBSCRIBE packets. It also features better error reporting, with reason codes offering clearer feedback when things go wrong.

The addition of MQTT 5.0 support should mostly be transparent for existing MQTT 3.1.1 users 🙂

New boards and SoCs

Some (only a few, really) of the new boards you will probably interested in hearing they are now supported in Zephyr:

Drivers

  • Add support for AXP2101 power management IC, which is mostly replacing the AXP192 and is used in several popular devkits from M5Stack and others. (PR #82474)
  • New driver for Bosch BMM350, a 16-bit high accuracy/low-noise magnetometer. (PR#85174)
  • Vishay VEML6031 Ambient Light Sensor (PR #85818)
  • New stepper driver for Allegro A4979 microstepping motor driver (PR #86620)
  • TDK ICM45686 IMU sensor (PR #85963)
  • PAA3905 optical flow sensor (PR #86644)

Miscellaneous


A big thank you to the 48 individuals who had their first pull request accepted since Zephyr 4.1 was released, 💙 🙌: @Abd002, @yyounxp, @lfilliot, @leonrinkel, @randyscott, @realhonbo, @mthiede-acn2, @tgcfoss, @skwort, @rdagher, @jangalda-nsc, @MichaelFeistETC, @elmo9999, @ecutm1, @nirav-agrawal, @AndreHeinemans-NXP, @XDjackieXD, @m-braunschweig, @rbudai98, @MJAS1, @DanTGL, @sctanf, @cylin-realtek, @ctourner, @WangHanChi, @dlim04, @verenascst, @Titan-Realtek, @Nitin-Pandey-01, @ckhardin, @Quizzarex, @zafersn, @thorsten-klein, @sgilbert182, @sayooj-aerlync, @tervonenja, @dewitt-garmin, @MyGh64605, @povsel, @sarchey, @etiennedm, @phb98, @petejohanson-adi, @Martdur, @ccpjboss, @JBarberU, @bia-bonobo, and @natto1784.

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:

Categories
IoT Zephyr

Zephyr Weekly Update – Jan. 24, 2025

Before diving into some recent and noteworthy updates to the Zephyr codebase since my last post, I want to draw your attention to the short Zephyr Diversity & Inclusion Survey we are conducting until the end of February.

I often get feedback along the lines of “We’re an online community, so how could we have a diversity issue? We don’t even know contributors’ gender, color, etc.!”, but the reality is that inclusion challenges can go much deeper than just gender or ethnicity. For example, some people might struggle engaging with the project due to not being comfortable with English, suffering from a disability preventing them to use some of the tools the project uses or recommends using, and so many other reasons…

This survey is a first step to better understand the diversity and inclusion issues in the Zephyr community, and an opportunity to hear about how some other projects/communities might be addressing these issues. Please take a few minutes to fill it out and share it with your friends and colleagues. The more responses we get, the better we can understand the issues and work on improving them.

A banner for "Zephyr Diversity and Inclusion Survey"

And now for your weekly updates 🙂

New boards and SoCs

Only calling out a few of the new boards, but you might be interested in hearing that a new BeagleBoard joined the party, in the form of the BeagleY-AI, a pretty beefy, TI AM67A powered, board targeting the automotive market.

BeagleY-AI

But also:

New MCTP subsystem

MCTP (Management Component Transport Protocol) is a transport layer protocol designed for communication between various management controllers within a system. MCTP is independent of the physical layer, allowing it to operate over various transport mechanisms such as PCI Express, Ethernet, USB, and more.

Thanks to PR #75743 by @teburd, a new MCTP subsystem has been introduced. This subsystem leverages the capabilities of libmctp, an open-source implementation of the MCTP protocol, and initially integrates with Zephyr’s async UART API.

Drivers

  • Microchip 10Base-T1S Ethernet PHY driver, supporting LAN865x and LAN867x PHYs (PR #81271 by @ParthibanI17164)
  • AD4114 ADC Driver, which is a single supply, multichannel, 31.25 kSPS, 24-Bit, Sigma-Delta ADC working over SPI. (PR #82816 by @pcurt)

Miscellaneous


A big thank you to the 37 individuals who had their first pull request accepted since the last post, 💙 🙌: @nhutnguyenkc, @yasinustunerg, @mcuxted, @ParthibanI17164, @ZiadElhanafy, @jhol, @tpennors, @aahmed-dewinelabs, @kbidani, @KevinTangDev, @nrbrook, @felf-zhaw, @kietavainen, @granquet, @srvanloon-priv, @nikolaptr, @CienetmarkChen, @ttwards, @narangmayank, @Jaakko-Bit, @Maartenwn, @iabdalkader, @DaGigabyte, @ofirshe, @pcurt, @gatzka, @CsBoBoNice, @td-pradecki, @ipankr, @gbmhunter, @lam-borg, @wwhheerree, @jacob-wienecke-nxp, @sebhub, @guenzel-kinexon, @silabs-BastienB, and @jcandkk.

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: