Pengutronix: Rückblick auf 2023 - Teil II
Im zweiten Teil unseres Rückblicks widmen wir uns unter anderem den Arbeiten unseres Grafik- und Multimedia-Teams, das wieder über den gesamten Linux-Stack, vom Kernel über mesa bis hin zu Pipwire, Weston und Webkit eine ganze Reihe an Bugfixes, Erweiterungen und Anpassungen untergebracht hat, um die Anforderungen aus verschiedensten Kunden-Projekten abzudecken.
Neben dem Entwickeln von Patchen ist natürlich auch der Kontakt mit der Community und das 'Dranbleiben' an aktuellsten Themen rund um 'Embedded Linux' für uns als Dienstleister ein Selbstverständnis. Daher waren wir wieder auf zahlreichen Konferenzen und Veranstaltungen präsent, teils nur als Teilnehmer, meist aber auch mit eigenen Vorträgen zu aktuellen Themen, die wir in diesem Teil nochmal als Überblick auflisten.
Grafik & Multimedia
Neben dem GPU Kernel-Treiber etnaviv und der 3D Grafik-Bibliothek mesa, für die wir auch in diesem Jahr diverse Optimierungen und Fehlerkorrekturen eingebracht haben, gab es noch eine Reihe weiterer spannender Projekte im Bereich Video und Audio an denen Pengutronix-Mitarbeiter mitgewirkt haben und die wir im folgenden kurz vorstellen.
PipeWire
PipeWire findet bei uns in verschiedenen Projekten Verwendung, da es ermöglicht, Video-Streams vergleichsweise einfach zwischen Applikationen zu teilen. So kann zum Beispiel eine Applikation ein Kamerabild auf dem Bildschirm anzeigen, während eine andere Applikation dasselbe Bild enkodiert und aufzeichnet.
Für diese Anwendungsfälle haben wir viele kleine Fehlerbehebungen in PipeWire gemacht. Unter anderem wurde von uns der JPEG-Support in der pipewiresink und das Laden der videotestsrc repariert.
Damit tragen wir dazu bei, dass PipeWire neben dem Routing von Audio-Streams auch für Video-Streams geeignet ist.
GStreamer
Auf der GStreamer Conference 2023 wurde das von uns entwickelte uvcsink Element vorgestellt. Das Element erlaubt es, ein UVC Gadget (also im Prinzip die Kamera-Seite einer USB Kamera) mit einer GStreamer-Pipeline zu betreiben. Man muss nur die entsprechenden Formate konfigurieren und eine Pipeline starten, die die Videodaten von einer beliebigen Quelle an eine uvcsink schickt. Schon kann man auf einem anderen Rechner den Video-Stream wie bei einer ganz normalen USB-Kamera empfangen.
Daneben haben wir natürlich auch bei GStreamer viele kleine Fehler behoben, die bei den speziellen Anwendungsfällen unserer Kunden auftreten und an die vorher niemand gedacht hat.
WebKit
In Embedded-Linux-Systemen werden immer häufiger Browser zur UI-Darstellung benutzt. Perfekt dafür geeignet ist WPE (https://wpewebkit.org/) - ein WebKit-Port mit Fokus auf Embedded.
Die offensichtliche Eingabemethode ist dabei ein Touch-Display. Beim Verarbeiten von Touch-Events haben wir einige Verbesserungen Upstream gebracht:
- "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)
Die Pointer-Event-API erlaubt dabei größtmögliche Flexibilität, z.B. beim Interpretieren von Gesten. Hier fehlte bisher Unterstützung von Touch-Events. Diese API konnten wir als neues Feature Upstream bringen.
Alle Patche sind im aktuellen Stable-Release 2.42 enthalten. Tipp: Folge #006 unseres Podcasts beschäftigt sich ebenfalls mit dem Thema "Embedded Browser".
Weston
Im November wurde Weston 13 released, der viele neue Features enthält, die von uns entwickelt wurden. Durch Multi-Backend Support und GL-Renderer-Support für VNC und PipeWire, sind Anwendungsfälle, bei denen die Bildschirmausgabe gleichzeitig auf dem Netzwerk verfügbar sein soll, deutlich effizienter und einfacher zu konfigurieren.
Eine detailliertere Übersicht über die neuen Features von Weston 13 gibt es im Blogpost Was ist neu in Weston 13?.
Vorträge und Veranstaltungen
Bei Pengutronix haben wir in diesem Jahr auf die Veröffentlichung von Vortragsaufzeichnungen über unseren YouTube-Kanal verzichtet und präsentierten stattdessen auf zahlreichen Veranstaltungen vor Ort. Danke der professionellen Arbeit vieler Community-Events, gibt es einen Großteil der Vorträge auf verschiedensten Plattformen zum Nachgucken für kalte Wintertage.
Im Februar waren wir auf der FOSDEM in Brüssel,
- "Having Something To Hide: Trusted Key Storage in Linux" von Ahmad Fatoum
- "Delta-like Streaming of (encrypted) OTA Updates for RAUC" von Enrico Jörns
- "So you want to build a deterministic networking system: A gentle introduction to Time Sensitive Networking" von 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" von Michael Olbrich
- "Building FPGA Bitstreams with Open-Source Tools" von Michael Tretter
- "Pulse-Width-Modulation (PWM) is easy, isn't it? Turning it off and on again" von Uwe Kleine-König
und auf dem OpenEmbedded Workshop in Brüssel:
- "unified key access and code signing in oe-core" von Jan Lübbe
Im März auf den CLT in Chemnitz:
- "Einfache VPNs mit Wireguard" von Rouven Czerwinski
- "Der Linux Kernel Entwicklungs-Workflow" von Rouven Czerwinski
- "Vim - Mach es einfach!" von Marie Mann
- "Linux-Systeme automatisiert auf echter Hardware testen" von Chris Fiege
- "Heimspiel für deine Daten: Die (einfache) Cloud von zu Hause" von Holger Assmann
- "Wenn Geräte an Bäumen wachsen: Linux Device-Tree Portierung" von Ahmad Fatoum
- "SSH - Schweizer Taschenmesser fürs Netzwerk" von Björn Lässig
- "Kameras in Chromium mit PipeWire und xdg-desktop-portal" von Michael Olbrich
Direkt im Anschluss waren wir, zusammen mit unserer Schwester-Firma Linux Automation GmbH, mit einem Stand auf der Embedded World in Nürnberg vertreten und haben dort unsere Demos zu Open-Source-FPGA-Tooling, Open-Source-Grafik auf dem Rockchip RK3568, 3D-Beschleunigung mit WPE WebKit, OTA-Field-Updates, Hardware-Test-Automatisierung und T1L Ethernet präsentiert und viele interessante Gespräche geführt.
Im Juni auf der EOSS in Prag, Tschechien:
- "Low level Ethernet specific magic for embedded devices" von Oleksij Rempel
- "Do the Time Warp - The Rocky Horror PTP Show: Verification of Network Time Synchronization in the Real World" von Johannes Zink
- "Why are GPUs (not) fast - a trip through the driver stack" von Lucas Stach
- "Yocto DevDay: Quick Development Cycles with NFS-Root: A Prototype Tool" von Enrico Jörns
Im Juli auf dem Bosch-OSS-Day in Stuttgart:
- "Community Collaboration Patterns: Addressing Risk and Complexity" von Jan Lübbe
- "From Vulnerable to Vigilant: A 10+ Year Roadmap for Embedded Software Maintenance" von Jan Lübbe
- "Exploring RAUC: A Flexible Building Block for Embedded Linux Updates" von Rouven Czerwinski
Im September auf der All Systems Go in Berlin,
- "Exploring RAUC: A Flexible Building Block for Embedded Linux Updates" von Rouven Czerwinski
auf der gStreamer Conference in A Coruña, Spanien,
- "Building your own USB camera with GStreamer" von Michael Grzeschik
auf der 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?" von Johannes Zink
und auf der Embedded Recipes in Paris, Frankreich.
- "One Image to Rule Them All: Portably Handling Hardware Variants" von Ahmad Fatoum
Im Oktober auf der XDC in A Coruña, Spanien:
- "Wayland Shells for Embedded Systems" von Michael Tretter
Im Dezember auf dem ESE-Kongress in Sindelfingen:
- "Build-Systeme für die effiziente Embedded-Linux-Entwicklung" von Bastian Krause
Darüber hinaus haben wir die Euro Python, die Kernel Recipes und die FrOSCon genutzt, um uns mit den Entwickler*innen aus der Community zu treffen und auszutauschen.