Blog

About Time (and Timing!) — Zephyr Podcast #016

By December 19, 2025No Comments
Zephyr Podcast #016


Join the conversation: https://chat.zephyrproject.org (look for us in #podcast)

Subscribe to the podcast on your favorite platform:

The summary below was automatically generated using the assistance of AI tools.

Episode Summary

In this episode of the Zephyr Podcast, hosts Benjamin and Fabio explore the intricacies of driving RGB LED strips with Zephyr, discuss the implications of the Y2038 bug for embedded systems, and cover a variety of ecosystem news including new board support and GitHub workflow considerations.

RGB LED Strips & NeoPixel Deep Dive

Fabio shares his research on driving addressable RGB LEDs (WS2812/NeoPixel and APA102/DotStar) with Zephyr:

  • Timing Constraints: The WS2812 protocol has strict timing requirements that can cause issues on an RTOS if interrupts occur mid-transmission. A pause in the data stream resets the protocol, causing unintended flashing.
  • SPI with DMA is Key: The recommended approach is using SPI with DMA enabled. Zephyr has general-purpose drivers for both SPI and I2S backends.
  • Platform Testing: NXP boards worked out of the box. STM32 required explicit DMA configuration in the device tree. Nordic nRF52832 has a 256-byte DMA limit (only ~20 LEDs), while nRF52840 supports 65KB. An ESP32-C3 SPI driver bug was found and fixed.
  • PIO Alternative: Raspberry Pi Pico’s Programmable I/O (PIO) is well-suited for bit-banging protocols like NeoPixel, though the current Zephyr driver may need improvements.

The Return of Timing Bugs

  • Millennium Bug Fix: A pull request was merged fixing an RTC driver bug that surfaced when handling dates around 1999—a callback to Y2K issues.
  • Y2038 Bug: Reports indicate Paris’ metro system may be affected by the 32-bit time overflow on January 19, 2038 at 3:14 AM. Fortunately, Zephyr uses 64-bit time representation by default and will issue warnings if you try to build with a C library using 32-bit time_t.

Rust & Linux News

  • Rust No Longer Experimental in Linux: A simple commit removing the “experimental” label marks Rust as an official part of the Linux kernel.
  • First Linux Rust CVE: The first CVE related to Rust code in Linux was announced shortly after—a reminder that memory-safe languages still require defensive programming.

Ecosystem & Community Updates

  • ZSciLib Needs a Maintainer: The open-source scientific library for embedded systems is looking for new maintainers. It includes useful data structures and functions for manipulating physical quantities, rotations, and sensor data.
  • PullApprove Evaluation: The Zephyr project is exploring PullApprove, a GitHub extension for more granular PR approval requirements (e.g., requiring reviews from each affected subsystem maintainer).
  • GitHub Self-Hosted Runner Pricing: GitHub announced (and then reconsidered) charging $0.002/minute for self-hosted runners on private repos. Zephyr uses over 1.2 million minutes per month on its own infrastructure—a significant resource for the community.
  • Heap Overhead Macro: A new macro from Jordan to approximate heap overhead in memory calculations.
  • Cleanup Classes: Pieter is proposing the introduction of “cleanup” classes inspired by the Linux kernel for improved resource management.
  • Visual Devicetree Configuration: A new video demonstrating visual approaches to navigating and configuring devicetree.
  • HealthyPi 6: A Zephyr-powered health monitoring platform currently crowdfunding.

New SoCs & Boards

  • Realtek AmebaDplus: A new SoC with Bluetooth and Wi-Fi (including 5 GHz support).
  • FocalTech FT9001: A general-purpose MCU now supported in Zephyr.
  • Sipeed M0S Dock: A tiny, ~$2 board with a Bouffalo Labs SoC, with Wi-Fi 6 and Bluetooth 5.2.
  • ESP32-S3-GEEK: A USB dongle-style board with an LCD display and extensive connectivity options.