Skip to main content

Zephyr Weekly Update – Using CLion for Zephyr development

By March 22, 2024No Comments

Welcome back for another weekly update about all things that happened in Zephyr land! Without further ado, let’s dive into the highlights of the past week.

Using CLion for Zephyr development

There is always a lot of questions from people new to Zephyr on what IDE they should be using (if any), and suggestions for setting it up for Zephyr development.

It is really nice to see that the folks over at JetBrains took some time to document the instructions for using CLion to develop and debug Zephyr application, and I really encourage you to give them a try!

UART over Bluetooth LE

You may remember the Zephyr Tech Talk episode from a few weeks back where Luis Ubieda presented the work he’s been doing around making it easier to use UART over Bluetooth LE.

With PR #69881, a new implementation of Nordic UART Service (NUS) is provided. It essentially exposes to characteristics for RX/TX, allowing to mimic a UART over BLE.

A dedicated nus-console snippet makes it really easy to user UART over BLE for the Zephyr console, by allowing to redirect serial console output to a UART over NUS Devicetree instance.

MPU Support on Xtensa

MMU support was added a little while back, and it’s great to see that MPU (Memory Protection Unit) is now supported on Xtensa architectures.

PR #67938.

Boards & SoCs

  • Nuvoton NuMaker M2L31KI evaluation board is a Cortex-M23 based development board running at 72MHz and targeting IoT applications. (PR #70357)
  • Pin mappings for ST Morpho connector of supported STM32 Nucleo G0 boards have been added with PR #69693.
  • Many new peripherals have been added to the NXP RW612 SoC port, from DMA to Flash driver, counters, I2C, …. (see e.g. PR #70192)

General drivers

There were several interesting improvements around Ethernet support:

  • You can now use Ethernet drivers in “raw” mode (i.e. without building the L2 layer / MAC support). See CONFIG_ETH_DRIVER_RAW_MODE. (PR #70030)
  • It is now possible to do Ethernet MAC address filtering. (PR #69385)

And also:

  • MAX31790 is a 6-Channel PWM Fan RPM Controller. The existing PWM controller driver has been extended to now be a “multi-function device” (MFD) driver that also allows to access the “sensor” side of this IC, i.e retrieve the fan speed and fan fault information for each channel.
  • The new-ish driver for the Pixart PMW3610DM (low-power laser mouse sensor) now exposes more configuration options, ex. to set the resolution, enable “smart mode”, etc.). (PR #70248)


  • Zephyr API overview documentation page now indicates the stability level of each API. There are still many instances where the information is missing but surfacing this information will make it easier to improve and clean it up over time. (PR #61994)
  • In order to help not flood logs with log messages that are repetitive, new LOG_WARN_ONCE() macro will write a WARNING level message to the log on the first execution only. (PR #70282)
  • Ahead of the upcoming Zephyr Tech Talk about the new hardware model, some great work was done to explain the terminology inherent to SoCs and boards in the context of Zephyr. (PR #69802)
  • Percepio module has been updated to use TraceRecorder v4.8.2 and DevAlert (DFM) v2.1.0. (PR #68490)
  • POSIX:
    • Added support for pthread_attr_getscope() and pthread_attr_setscope(). (PR#68450)
    • Added support for confstr(). (PR #70274)

A big thank you to the 10 individuals who had their first pull request accepted this week, 💙 🙌: @MarinaKalashina, @Arunmanialagarsamy, @vidarbe, @SamyFrancelet, @su47flying, @grb72t3yde, @ad8sweera, @jgenssler-GiN, @ldaj00, and @eriktamlin.

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

Benjamin Cabé