Pengutronix 2023: A Year in Review - Part II
In the second part of our review, we will focus, among other things, on the work of our graphics and multimedia team, which again covers the entire Linux stack, from the kernel to mesa to Pipwire, Weston and Webkit has accommodated a whole range of bug fixes, extensions and adjustments to cover the requirements of a wide range of customer projects.
In addition to developing patches, contact with the community and keeping up with the latest topics relating to 'Embedded Linux' are of course also a matter for us as a service provider. That's why we were present again at numerous conferences and events, sometimes just as participants, but mostly with our own lectures on current topics, which we list again as an overview in this part.
Graphics & Multimedia
Besides the GPU kernel driver etnaviv and the 3D graphics library mesa, for which we also brought various optimizations and bug fixes this year, there were several other exciting projects in the video and audio area that Pengutronix employees contributed to and that we will briefly introduce below.
PipeWire
PipeWire is used in various projects as it allows relatively easy sharing of video streams between applications. For example, one application can display a camera image on the screen while another encodes and records the same image.
We made many small bug fixes in PipeWire for these use cases. Among other things, we repaired the JPEG support in pipewiresink and the loading of videotestsrc.
This contributes to PipeWire's suitability for routing video streams in addition to audio streams.
GStreamer
At the GStreamer Conference 2023, we introduced the uvcsink element we developed. This element allows operating a UVC gadget (essentially the camera side of a USB camera) with a GStreamer pipeline. You just need to configure the appropriate formats and start a pipeline that sends video data from any source to a uvcsink. Then you can receive the video stream on another computer as if it were a normal USB camera.
Besides, we also fixed many small errors in GStreamer that occur in the special use cases of our customers and that no one had thought of before.
WebKit
In embedded Linux systems, browsers are increasingly used for UI display. Perfectly suited for this is WPE (https://wpewebkit.org/) - a WebKit port focused on embedded.
The obvious input method is a touch display. We have made several improvements upstream in processing touch events:
- "Do not skip generic touch event handling for axis event gesturing" (WebKit PR #6550)
- "Do not generate click event for long touch presses" (WebKit PR #6627)
- "Make TouchPoint ID unique" (WebKit PR #9599)
The Pointer Event API allows maximum flexibility, e.g., in interpreting gestures. Until now, support for touch events was missing here. We were able to bring this API as a new feature upstream.
All patches are included in the current stable release 2.42.
Weston
In November, Weston 13 was released, containing many new features that we developed. With Multi-Backend Support and GL-Renderer Support for VNC and PipeWire, which we developed, use cases where the screen output should be simultaneously available on the network are now much more efficient and easier to configure.
A more detailed overview of the new features of Weston 13 can be found in the blog post What's New in Weston 13?.
Talks and Events
At Pengutronix this year we are looking forward to the release of lecture recordings on our YouTube channel were not recorded and instead we presented at numerous local events. Thanks to the professional work of many community events, the majority of the lectures are available on various platforms to watch on cold winter days.
In February we were at FOSDEM in Brussels,
- "Having Something To Hide: Trusted Key Storage in Linux" by Ahmad Fatoum
- "Delta-like Streaming of (encrypted) OTA Updates for RAUC" by Enrico Jörns
- "So you want to build a deterministic networking system: A gentle introduction to Time Sensitive Networking" by Johannes Zink
- "barebox, the bootloader for Linux kernel developers" vom Marco Felsch
- "Modern Camera Handling in Chromium: Implementing Camera Access with xdg-desktop-portal and PipeWire in Chromium" by Michael Olbrich
- "Building FPGA Bitstreams with Open-Source Tools" by Michael Tretter
- "Pulse-Width-Modulation (PWM) is easy, isn't it? Turning it off and on again" by Uwe Kleine-König
at the OpenEmbedded Workshop in Brussels:
- "unified key access and code signing in oe-core" by Jan Lübbe
In March at the CLT in Chemnitz (talks only in German):
- "Einfache VPNs mit Wireguard" by Rouven Czerwinski
- "Der Linux Kernel Entwicklungs-Workflow" by Rouven Czerwinski
- "Vim - Mach es einfach!" by Marie Mann
- "Linux-Systeme automatisiert auf echter Hardware testen" by Chris Fiege
- "Heimspiel für deine Daten: Die (einfache) Cloud von zu Hause" by Holger Assmann
- "Wenn Geräte an Bäumen wachsen: Linux Device-Tree Portierung" by Ahmad Fatoum
- "SSH - Schweizer Taschenmesser fürs Netzwerk" by Björn Lässig
- "Kameras in Chromium mit PipeWire und xdg-desktop-portal" by Michael Olbrich
Directly following this, we were present with a booth at the Embedded World in Nuremberg, together with our sister company Linux Automation GmbH. There, we presented our demos on open-source FPGA tooling, open-source graphics on the Rockchip RK3568, 3D acceleration with WPE WebKit, OTA field updates, hardware test automation, and T1L Ethernet, and had many interesting conversations.
In June at the EOSS in Prague, Czech Republic:
- "Low level Ethernet specific magic for embedded devices" by Oleksij Rempel
- "Do the Time Warp - The Rocky Horror PTP Show: Verification of Network Time Synchronization in the Real World" by Johannes Zink
- "Why are GPUs (not) fast - a trip through the driver stack" by Lucas Stach
- "Yocto DevDay: Quick Development Cycles with NFS-Root: A Prototype Tool" by Enrico Jörns
In July at the Bosch-OSS-Day in Stuttgart:
- "Community Collaboration Patterns: Addressing Risk and Complexity" by Jan Lübbe
- "From Vulnerable to Vigilant: A 10+ Year Roadmap for Embedded Software Maintenance" by Jan Lübbe
- "Exploring RAUC: A Flexible Building Block for Embedded Linux Updates" by Rouven Czerwinski
In September at the All Systems Go in Berlin,
- "Exploring RAUC: A Flexible Building Block for Embedded Linux Updates" von Rouven Czerwinski
at the gStreamer Conference in A Coruña, Spain,
- "Building your own USB camera with GStreamer" by Michael Grzeschik
at the TSNA in Ludwigsburg,
- "… If You Try Sometime You’ll Find You Get What You Need - Streaming Media Over TSN Finally Made Easy by Going Mainline?" by Johannes Zink
and at the Embedded Recipes in Paris, France.
In October at the XDC in A Coruña, Spain:
- "Wayland Shells for Embedded Systems" by Michael Tretter
In December at the ESE-Kongress in Sindelfingen:
- "Build-Systeme für die effiziente Embedded-Linux-Entwicklung" by Bastian Krause
In addition, we used the Euro Python, the Kernel Recipes, and the FrOSCon as opportunities to meet and exchange ideas with developers from the community.