Pengutronix 2023: A Year in Review - Part I

Another exciting yet challenging year has passed. We are a year closer to the Y2038 problem, OpenSSL 1.1.1 is finally history, kernel v4.14 from 2017 will finally be discontinued in four weeks, upcoming LTS kernels will only be supported for two years. The relevance of Linux, not just in embedded systems, is soaring. Simultaneously, the European (Open Source) software world faces necessary but challenging transformations, heralded by the upcoming Cyber Resilience Act.

A good opportunity to pause for a moment in this hustle and bustle, reflect and look back on the past year 2023 and what it has given us as Pengutronix.

We start the first part of our year in review with an overview of our main contributions to open source projects, most notably the Linux Kernel, into which the majority of development hours for various projects continue to flow. But also projects like Barebox, RAUC, or labgrid, which are primarily maintained by Pengutronix developers, have received groundbreaking innovations or extensions that we would like to briefly discuss.

In the two following parts of this series, we will then look back on our activities in the field of graphics and multimedia, as well as the developments of our hardware company Linux Automation GmbH.

Contributions to the Linux Kernel

In 2023, 17 developers from our team introduced about 2500 changes to over 4000 files in the kernel, covering a wide range of topics. These included minor spelling corrections, major cross-subsystem clean-up operations, bug fixes, cleanups, simplifications, drivers for previously unsupported hardware components, and additions to device trees for new and supported hardware.

For instance, Oleksij Rempel expanded the DSA driver for the widely used Microchip "KSZ" switches to support Wake on LAN (WoL) and Access Control Lists

At the end of the year, our colleague Uwe Kleine-König took over the maintenance of the PWM subsystem from long-time maintainer Thierry Reding and will be responsible for it after the upcoming 6.7 release.

Barebox Bootloader

Barebox Bootloader saw a continuation of the monthly release cycle in 2023 with 1677 changes from 53 contributors, including 19 from Pengutronix. Highlights include:

The likely highlights of the v2024.01.0 release include expanded support for the STM32MP13 and bidirectional communication with OP-TEE for controlling TrustZone-exclusive clocks.

RAUC

For RAUC, the open-source embedded Linux updater, three feature releases were published this year:

v1.9 in March added a new InspectBundle D-Bus API for querying detailed information about a bundle, supporting both local bundle files and URLs on an HTTPS server.

v1.10 in June brought more granular progress messages during installation and the ability to provide additional system information to "handlers."

v1.11 in December enabled sending additional headers to the HTTPS update server (e.g., device serial number, type, variant) and configurable event logs for long-term traceability of software installations on a device.

Besides new features, we improved CI using sanitizers and integrated RAUC into OSS-Fuzz. After adding meson as a new build system in the v1.9 release, autotools were removed in the current v1.11 release. Last but not least, the documentation was further improved. Many thanks to everyone who contributed to RAUC!

Labgrid

Labgrid, the hardware control framework, saw its most visible change this year in the form of new logging. This makes the nested steps, such as those a test suite must perform to provision a board, much more traceable. Not only the output has been improved, but also the input via labgrid-client is now easier thanks to Bash completion. This also includes specifying resource names, as they now support all relevant subcommands. Places with multiple resources of the same type can now be easily used via labgrid-client. In addition to the usual mix of smaller features and fixes, the list of drivers and resources is steadily growing.

Internally, we have switched to a new, date-based versioning scheme, which better suits the project's continuous development than the previous semantic versioning. Also internal, but hopefully noticeable, is the separation of Coordinator and Client/Library/Pytest-Plugin/Exporter during installation. This brings simpler dependency management. Due to the simpler installation, labgrid can now be used even better, for example, as a library.

OpenEmbedded & Yocto

After presenting our approach for the uniform use of signature keys on hardware tokens at the OE Workshop right after FOSDEM, the necessary code was included in the meta-openembedded layer.

In oe-core, in addition to version bumps, typo fixes, and documentation adjustments to the Upstream-Status field of patches, we also brought some initial clean-up work to the test code around oe-selftest upstream. These are part of our efforts to make barebox available as a bootloader in oe-core to the community.

In total, we contributed 22 patches to meta-oe this year. In oe-core, there were almost 42, twice as many, but unfortunately still fewer than we would like according to our own standards. This point will definitely be on the list of good resolutions for 2024.

PTXdist

The compiler wrapper in PTXdist has become stricter this year, now filtering all accesses to paths outside the BSP build directory. This change enhances the build system's independence from the host system, leading to greater reproducibility of build artifacts.

In macros for building Python packages, there is now support for projects using pyproject.toml instead of setup.py, reflecting the recent standard shift in Python packaging. Support for Rust software with Cargo as a build system has also been expanded. For embedded devices typically in the field for over 10 years, Y2K38 compatibility for processing timestamps beyond 2038 is crucial. In conjunction with the OSELAS.Toolchain 2023.07.0, the glibc version 2.37 now offers support for this.

The majority of changes in PTXdist, as in previous years, focused on updating software versions and packaging new software.

DistroKit

DistroKit has seen three new releases this year, introducing many updated software versions, bug fixes, and some new features to our PTXdist reference distribution DistroKit.

A significant portion of the patches revolved around integrating our update framework RAUC on v7a and v8a platform boards. This includes mechanics for creating a data partition at runtime, independent of system partitions. Minor additions now allow booting a system via Android's Fastboot protocol instead of from an SD card, or using a single Barebox recipe for all boards on the v8a platform. The Microchip SAMA5D3 EDS board is a newly supported platform.

umpf - Universal Magic Patch Functionator

Strong tools are the backbone of productive development work as they avoid tedious tasks and careless errors. This is also true for our patch management for customer BSPs. Where Git reaches its limits in juggling many long-standing feature branches, our internally used tool umpf comes into play; it is used for managing and merging Git-based topic branches, especially in complex and long-maintained projects like our customer kernel repositories.

This year, in line with our open source and mainline-first strategy, we decided to release this tool as open-source software, allowing not only knowledgeable customers but also the interested community to benefit from it.

In our blog post umpf - Git on a New Level, we provide a deeper insight into the functionality and use of umpf.