<?xml version='1.0' encoding='utf-8' ?>
<!-- Made with love by pretalx v2026.1.1. -->
<schedule>
    <generator name="pretalx" version="2026.1.1" />
    <version>0.5</version>
    <conference>
        <title>ER2026</title>
        <acronym>er2026</acronym>
        <start>2026-05-27</start>
        <end>2026-05-28</end>
        <days>2</days>
        <timeslot_duration>00:05</timeslot_duration>
        <base_url>https://cfp.embedded-recipes.org</base_url>
        <logo>https://cfp.embedded-recipes.org/media/er2026/img/ER_logo_2025_ejt2hna_niFWmWP.webp</logo>
        <time_zone_name>Europe/Paris</time_zone_name>
        
        
    </conference>
    <day index='1' date='2026-05-27' start='2026-05-27T04:00:00+02:00' end='2026-05-28T03:59:00+02:00'>
        <room name='Auditorium' guid='c57cf63d-065b-5c0d-99d7-0009b7c9e5cb'>
            <event guid='147d41a4-8470-5dbd-962d-c5a67559e6af' id='92256' code='CUMR8D'>
                <room>Auditorium</room>
                <title>Yocto Project and the Cyber Resilience Act</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-27T09:45:00+02:00</date>
                <start>09:45</start>
                <duration>00:40</duration>
                <abstract>The EU Cyber Resilience Act introduces new obligations across the software supply chain, for both manufacturers and for the new category of open source stewards. We&apos;ve been thinking about what this means for the Yocto Project - what are our obligations? And what can we do to help our users meet their obligations as manufacturers?

For manufacturers, the CRA requires the avoidance of known exploitable security issues, tracking of software components &amp; vulnerabilities, reporting to relevant Computer Security Incident Response Teams (CSIRTs) and provision of software updates for the useful lifetime of products. Today, the Yocto Project provides a repeatable build process and tooling that will help manufacturers to meet these requirements. With further development, we could make it easier to achieve the required level of security and vulnerability tracking.

For the Yocto Project itself, the requirements on open source stewards are more lightweight. We will need to align the project&apos;s cybersecurity policy with the CRA and be prepared to share information with market surveillance authorities if requested.</abstract>
                <slug>er2026-92256-yocto-project-and-the-cyber-resilience-act</slug>
                <track></track>
                
                <persons>
                    <person id='92490'>Paul Barker</person>
                </persons>
                <language>en</language>
                <description>This talk will:
- Introduce the challenges and opportunities of the CRA from the Yocto Project perspective.
- Discuss changes needed to our security policy to meet our new obligations.
- Review the existing features that we provide to help manufacturers meet their obligations: SPDX3 SBoM generation, reproducible builds and CVE tracking.
- Present a roadmap of security features that we should adopt to further help our users: secure-by-default software images, improved secure boot support, more comprehensive detail in our SBoMs and more flexible CVE tracking with sbom-cve-check.
- Invite questions and feedback from the audience.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/CUMR8D/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/CUMR8D/feedback/</feedback_url>
            </event>
            <event guid='f6dfe5fd-4204-568a-8ca1-f51bc0127747' id='91880' code='M8CYMB'>
                <room>Auditorium</room>
                <title>Booting validated containers in your car</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-27T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:40</duration>
                <abstract>Bootc is a system to boot regular container image as a full operating system, including a kernel. This gives an extremely flexibly and powerful mechanism to build, manage and deploy images to machines which reuses existing, known infrastructure and tools. However, to use this in embedded systems we also need to support for runtime validation of data (like dm-verity) and signatures (secureboot, android verified boot), which is not typically available for containers.

This talk will describe how technologies like bootc, composefs and ukiboot can be used to achive an end-to-end signed and verified boot, and demonstrate how this works in the automotive Linux platform we are building.</abstract>
                <slug>er2026-91880-booting-validated-containers-in-your-car</slug>
                <track></track>
                
                <persons>
                    <person id='91937'>Alexander Larsson</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/M8CYMB/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/M8CYMB/feedback/</feedback_url>
            </event>
            <event guid='f9b79366-9966-522e-8a2d-6df638b53be9' id='91972' code='P8A8DR'>
                <room>Auditorium</room>
                <title>Mastering Wakeup Sources in Linux: Architecture, APIs, and Constraints</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-27T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>00:40</duration>
                <abstract>In embedded systems, the ability to efficiently transition from low power states back to active operation is critical. Wakeup events are the mechanism used to communicate to the system to leave a low power state and enter an active state. However, implementing effective wakeup mechanisms requires navigation of hardware constraints, such as understanding signal routing, IRQ configurations, and determining which wakeup sources remain available when various system components are powered down.

Linux provides architecture to easily model and configure wakeup sources, allowing developers to enable wakeup sources across different platforms. This talk will cover the Linux architecture and APIs behind wakeup sources such as managing wakeup events, wake IRQs, and what considerations are needed when selecting and configuring the right wakeup source.

Additionally, this talk will open a discussion and explore the existing frameworks of modeling wakeup sources for devices that wakeup the system even when their power domain is off.</abstract>
                <slug>er2026-91972-mastering-wakeup-sources-in-linux-architecture-apis-and-constraints</slug>
                <track></track>
                
                <persons>
                    <person id='92243'>Kendall Willis</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/P8A8DR/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/P8A8DR/feedback/</feedback_url>
            </event>
            <event guid='19a5a67a-a35e-5810-b554-42e05825a5b9' id='92297' code='JHLWDM'>
                <room>Auditorium</room>
                <title>rsinit -- a tiny initramfs toolbox for embedded systems</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-05-27T13:30:00+02:00</date>
                <start>13:30</start>
                <duration>00:15</duration>
                <abstract>Traditionally, embedded systems were simple enough that an initramfs was not needed at all.
This has changed in the last recent years with new requirements, often related to verified boot.
That means that additional steps are now needed before the rootfs can be mounted.

Existing solutions, such as the Yocto initramfs-framework have significant drawbacks. The resulting initramfs is quite big (multiple megabytes) which has a noticeable impact on the boot time. And while the shell scripts make it easy to customize, robust error handling is difficult.

In this talk, Michael will introduce [rsinit](https://github.com/pengutronix/rsinit), a single-binary-initramfs for embedded systems, written entirely in Rust.
It is tiny (less than 200 KiB), very fast and &quot;just works&quot; for simple use-cases. Alternatively, it can be uses as a library to build a fully custom binary.

Beyond being small, it brings the full power of Rust to the initramfs, which allows building additional features (such as splash screens or read-ahead) without pulling in further dependencies.

Michael will present the existing features, explain the design choices and give an overview of what is planed for the future.</abstract>
                <slug>er2026-92297-rsinit-a-tiny-initramfs-toolbox-for-embedded-systems</slug>
                <track></track>
                
                <persons>
                    <person id='92524'>Michael Olbrich</person>
                </persons>
                <language>en</language>
                <description>rsinit was briefly introduced in the talk [The Cost of Security: Measuring and Reducing Boot-Time Impact ](https://osseu2025.sched.com/event/25Vso/the-cost-of-security-measuring-and-reducing-boot-time-impact-michael-olbrich-pengutronix) at ELCE 2025.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/pengutronix/rsinit">rsinit on GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/JHLWDM/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/JHLWDM/feedback/</feedback_url>
            </event>
            <event guid='79200b94-9bb8-5ef1-b21b-c09d908ba441' id='90884' code='QRSV8Q'>
                <room>Auditorium</room>
                <title>U-Boot -- Running an off the shelf distro on your embedded board</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-27T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>00:40</duration>
                <abstract>Basic UEFI support was added to U-Boot back in 2016. Back then it had
- Rudimentary UEFI support
- Ability to read/store UEFI variables to/from the U-Boot environment
- No UEFI secure boot
- No UEFI measured boot
- No capsule update support, even without authentication
- UEFI Boot Manager was just merged with only basic features

Over the years the UEFI implementation has matured making it easy to launch standard off the shelf distros in embedded hardware. We&apos;ll go through the features, starting from the initial EBBR support in U-Boot up to booting an OS (installing the OS over a disk or HTTPs as well as running live images) and all the problems we solved along the way.

- A small introduction to UEFI, EBBR and SystemReady
- How to install and boot off the shelf distros on embedded boards
- What is UEFI secure boot and how you can enable it on your hardware. Multiple options exist and it depends on the available storage -- SPI, RPMB, eMMC, SD card only etc
- How to enable and use UEFI measured boot
- EFI HTTPs boot (with lwIP and mbedTLS support)
- Authenticated capsule updates. How to add support for your board and how to use them via LVFS
- A/B update support for firmware
- SetVariable at runtime options and  why distros need it</abstract>
                <slug>er2026-90884-u-boot-running-an-off-the-shelf-distro-on-your-embedded-board</slug>
                <track></track>
                
                <persons>
                    <person id='91186'>Ilias Apalodimas</person>
                </persons>
                <language>en</language>
                <description>I plan to cover the entire lifecycle of booting distros on embedded hardware. 
My team and I have written many blog posts for Linaro over the years (https://www.linaro.org/blog?tags=u-boot) explaining most of the functionality. I&apos;d like to have a presentation on the entire end to end flow.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/QRSV8Q/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/QRSV8Q/feedback/</feedback_url>
            </event>
            <event guid='f5fc5645-4d8f-5a7c-8172-d1f6a6cdcb43' id='92277' code='ULWYUJ'>
                <room>Auditorium</room>
                <title>Open Source Tools for Secure Boot on Rockchip RK3588</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-05-27T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:15</duration>
                <abstract>Secure boot is a security feature that enables device manufacturers to ensure that a device only boots trusted and signed software. This feature depends on certain hardware capabilities like a hardware root of trust and signature verification.

The Rockchip RK3588 SoC supports these features. However, limited documentation and reliance on a closed-source vendor OP-TEE binary and development tools raise concerns regarding security and maintainability. With OP-TEE 4.9.0 and barebox v2026.02.0, users may enable and use Secure Boot on RK3588 without needing any special Rockchip tools.

In this session, Michael will show you how to enable Secure Boot on RK3588 with upstream barebox and upstream OP-TEE. He will also highlight differences between the upstream implementation and Rockchips downstream solution. Lastly, he will briefly explain technical details to help you with adapting the implementation for other Rockchip SoCs and with using the OP-TEE PTA from Linux or U-Boot.</abstract>
                <slug>er2026-92277-open-source-tools-for-secure-boot-on-rockchip-rk3588</slug>
                <track></track>
                
                <persons>
                    <person id='92510'>Michael Tretter</person>
                </persons>
                <language>en</language>
                <description>[OP-TEE Pull Request](https://github.com/OP-TEE/optee_os/pull/7661)
[barebox Patch series](https://lore.kernel.org/all/20260105-rockchip-secure-boot-v1-0-eaf5053a7d7e@pengutronix.de/)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/ULWYUJ/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/ULWYUJ/feedback/</feedback_url>
            </event>
            <event guid='ca262cb8-50c0-5def-ab51-7b359f7eacf6' id='92185' code='9RX7LL'>
                <room>Auditorium</room>
                <title>U-Boot on boot core as an always-on debug tool</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-27T14:45:00+02:00</date>
                <start>14:45</start>
                <duration>00:40</duration>
                <abstract>Contemporary SoCs perform initial system boot on a dedicated core and start the additional cores only after the system was fully initialized. This boot core may be a Cortex-M, which is also capable of running U-Boot, and remains active even after the other cores started.

This talk first clarifies the specifics of porting U-Boot to Cortex-M, including read-only text and read-write data at offset, limited SRAM size, partial relocation, console access, and start of the additional cores.

Next, the talk explains how U-Boot running on the boot core can be used as an always-on debug tool, to inspect the state of the other cores, peripherals and memory in the system. This includes interaction with peripherals even if the other cores may have crashed, and the use of DMA to access memory above the 32bit boundary. The talk ends with a real-world example of such a setup.</abstract>
                <slug>er2026-92185-u-boot-on-boot-core-as-an-always-on-debug-tool</slug>
                <track></track>
                
                <persons>
                    <person id='92435'>Marek Vasut</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/9RX7LL/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/9RX7LL/feedback/</feedback_url>
            </event>
            <event guid='798d191d-1766-5230-a4d1-34edc54dbf45' id='92228' code='VTTZDS'>
                <room>Auditorium</room>
                <title>Watch your scope! The hidden pitfalls of scoped_guard() and other cleanup.h macros</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-05-27T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>00:15</duration>
                <abstract>Everyone loves &quot;cleaning up&quot; code in the Linux kernel using macros from linux/cleanup.h. It&apos;s one of the latest fads. There have been hundreds of &quot;clean up&quot; patches and these macros are used thousands of times in the kernel now. However, these macros have some hidden secrets that can result in hard-to-spot bugs and mysterious compiler warnings! As these gain wider use and acceptance, let&apos;s see what the problems are and what we should do about it.</abstract>
                <slug>er2026-92228-watch-your-scope-the-hidden-pitfalls-of-scopedguard-and-other-cleanup-h-macros</slug>
                <track></track>
                
                <persons>
                    <person id='92468'>David Lechner</person>
                </persons>
                <language>en</language>
                <description>Spoiler alert:

scoped_guard() contains a for loop, so using break and continue keywords in this scope doesn&apos;t do what one might think. I&apos;ve found and reported a number of cases where this mistake made it into the kernel. Even experienced kernel maintainers are missing this and submitting patches with bugs. This makes me wary of using scoped_guard() in general, but I seem to be in the minority.

The other cleanup macros introduce local variables. The clang compiler doesn&apos;t like this when you use them in a switch statement. I&apos;ll show the compiler warning/error and how to avoid it.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/VTTZDS/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/VTTZDS/feedback/</feedback_url>
            </event>
            <event guid='6c43b503-e306-5238-8370-348186a9d315' id='92293' code='USZT33'>
                <room>Auditorium</room>
                <title>From Track to Edge: Shipping Real-Time AI on Embedded Linux</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-27T16:15:00+02:00</date>
                <start>16:15</start>
                <duration>00:40</duration>
                <abstract>Modern motorsport telemetry systems generate massive amounts of data including GPS traces, IMU measurements, CAN signals, and vehicle dynamics. In most cases, analysis happens after the session, often in the cloud. By the time insights are available, the opportunity to correct driving behavior in real time is already gone. For deterministic feedback during a session, cloud-dependent approaches are too slow, too fragile, and sometimes simply unavailable.

In this talk, we walk through the engineering journey of building a real-time telemetry analysis system that runs entirely at the edge on embedded Linux. The objective was straightforward: detect driving patterns and performance anomalies during a session without relying on connectivity. Achieving that goal required solving a set of practical system-level challenges that extend far beyond data acquisition and model training.

We begin with the development pipeline: training a model offline, exporting to ONNX or TFLite, quantizing for constrained hardware, and deploying to embedded System-on-Modules. We compare CPU-only execution against NPU acceleration, highlighting latency, memory footprint, and sustained-load behavior. Real benchmark results demonstrate where hardware acceleration delivers measurable gains and where it introduces additional constraints.

Running inference once is not the hard part. Shipping a complete embedded systems product is.

The talk then focuses on the integration and production aspects of edge AI systems. We examine kernel driver and user-space runtime alignment, accelerator operator support limitations, memory pressure under sustained workloads, and thermal behavior during continuous inference. We discuss containerized deployment on embedded Linux, using Torizon OS as a reference implementation, including hardware access from containers, separation of sensor ingestion and inference pipelines, reproducible builds, and safe over-the-air model updates without reflashing the device.

By the end of the session, attendees will have a practical blueprint for taking an AI model from experimentation to a production-ready embedded deployment. More importantly, they will gain an honest understanding of what breaks, what scales, and what must be designed early when building real-time intelligence on embedded Linux systems.

This is not a showcase of AI capabilities, but a systems engineering story about building, benchmarking, integrating, and maintaining edge AI under real-world constraints.</abstract>
                <slug>er2026-92293-from-track-to-edge-shipping-real-time-ai-on-embedded-linux</slug>
                <track></track>
                
                <persons>
                    <person id='92517'>Jo&#227;o Victor &quot;Teddy&quot; Martins</person>
                </persons>
                <language>en</language>
                <description>Artificial intelligence at the edge is often described as just moving machine learning from the cloud to a local device. In embedded systems, however, it is much more complex than simply running inference. It involves dealing with hardware limitations, operating system constraints, runtime compatibility, power consumption, and long-term maintenance. These challenges make deploying AI on embedded Linux a full systems engineering problem rather than just a data science task.

This talk presents a practical, end-to-end workflow for building and deploying a real-time edge AI system on embedded Linux using open-source tools within the Toradex ecosystem. Using a motorsport telemetry use case that requires low-latency analysis without cloud connectivity, we go through the entire development process, including model training and export, quantization for limited hardware, CPU versus NPU trade-offs, sustained performance testing, containerized deployment, reproducible builds, and safe over-the-air updates.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/USZT33/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/USZT33/feedback/</feedback_url>
            </event>
            <event guid='674e78a4-860d-5450-b051-42c62bb8a457' id='92281' code='NGEGSL'>
                <room>Auditorium</room>
                <title>Embedded War Stories from the Bootlin team</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-27T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>00:40</duration>
                <abstract>For the past 20 years, the engineers at Bootlin have been building, fixing, porting, debugging, and occasionally arguing with Embedded Linux systems across many industries and products.

In that time, we&apos;ve met spectacular boot failures, drivers that almost worked, hardware that didn&#8217;t quite match the datasheet, race conditions that only appeared on Tuesdays, and bugs that vanished the moment we added a printk().

In this end-of-day session, we&apos;ll share a carefully curated selection of our favorite war stories. Real bugs. Real root causes. Real debugging techniques. No hindsight magic. We&#8217;ll walk through what
broke, why it broke, how we tracked it down, and what it taught us.

Expect kernel deep dives, bootloader surprises, hardware-software boundary confusion, and more.

If you&apos;ve ever spent hours chasing a bug that turned out to be one flipped bit, this talk will feel strangely familiar.</abstract>
                <slug>er2026-92281-embedded-war-stories-from-the-bootlin-team</slug>
                <track></track>
                
                <persons>
                    <person id='92514'>Bootlin&apos;s team</person>
                </persons>
                <language>en</language>
                <description>Twenty engineers from Bootlin will be roaming the halls of Embedded Recipes. A subset of us will take the stage to confess our mistakes, celebrate the fixes, and share the lessons learned the hard way, so
you don&#8217;t have to.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/NGEGSL/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/NGEGSL/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='2' date='2026-05-28' start='2026-05-28T04:00:00+02:00' end='2026-05-29T03:59:00+02:00'>
        <room name='Auditorium' guid='c57cf63d-065b-5c0d-99d7-0009b7c9e5cb'>
            <event guid='0c7bfe88-a646-57cb-aca8-e57277906c86' id='92317' code='YSADJ9'>
                <room>Auditorium</room>
                <title>OP-TEE and its many features</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-28T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>00:40</duration>
                <abstract>What is OP-TEE? How does it work? And why are so many features for OP-TEE disabled by default?
This talk will give an introduction to OP-TEE and than highlight the lesser known features such as asynchronous notifications, Secure Data Path or Function Tracing. It will also take a look into future, where industrial arm64 SoC are no longer limited to ARMv8.2 and with ARMv8.4 can provide virtualization of the secure world to implement the Firmware Framework for A-Profile (FFA) specification.</abstract>
                <slug>er2026-92317-op-tee-and-its-many-features</slug>
                <track></track>
                
                <persons>
                    <person id='92549'>Rouven Czerwinski</person>
                </persons>
                <language>en</language>
                <description>The talk aims to provide an introduction to OP-TEE, describe how different boot up flows work and will describe how an execution environment differs from a full operating system implementation.
With this foundation we will start to look at interesting features implemented into OP-TEE, many of which are disabled by default either because most platforms don&apos;t require them or they are primarily aimed for debugging and have a performance impact. Among those features, at least the following will be covered:
- OP-TEE &amp; Linux kernel support for synchronous and asynchronous notifications
- Secure Data Path and the OP-TEE Heap implementation for protected buffer sharing
- Function Tracing for Applications running within OP-TEE
- OP-TEE support to communicate with external secure elements via the Linux kernel
We will than take a look into the Firmware Framework for A-Profile (FFA) specification which becomes relevant with ARMv8.4 implementations and explain how OP-TEE fits into it. This will also cover other components which are affected by FFA i.e. TF-A &amp; hafnium.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/YSADJ9/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/YSADJ9/feedback/</feedback_url>
            </event>
            <event guid='f0f18b2f-6a46-5a05-9ed8-53c3fb6f4db4' id='91811' code='ZLSMQG'>
                <room>Auditorium</room>
                <title>A Distributed Phone CI for postmarketOS</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-28T10:15:00+02:00</date>
                <start>10:15</start>
                <duration>00:40</duration>
                <abstract>postmarketOS is a community project aiming to bring real mainline linux to your smartphones (and other consumer devices). What was once a far dream, has developed into a vibrant community with many smartphones receiving enough features in mainline kernels for people to daily-drive them. However, community and manual testing can only gets us so far. To be able to scale, avoid regressions, and ensure long-term reliability automated testing is a requirement. 

After many years of work and multiple attempts, postmarketOS has been able to build a system to test phones directly into CI. The system is FOSS, distributed, simple enough to be deployed by a hobbyist at a hacker-space for &lt;200&#8364;, and easy to scale-up. It uses [CI-tron](https://docs.ci-tron.dev) for all the orchestration, and a custom PCB as PDU for phone-specific needs.

In this talk, we will discuss the different approaches we took over time, lessons learned from successes and failures, current status, and a look into the future.</abstract>
                <slug>er2026-91811-a-distributed-phone-ci-for-postmarketos</slug>
                <track></track>
                
                <persons>
                    <person id='91879'>Pablo Correa Gomez</person><person id='91887'>Casey</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/ZLSMQG/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/ZLSMQG/feedback/</feedback_url>
            </event>
            <event guid='c3f4f34b-e105-572c-8d85-c06258128a5a' id='92310' code='PCYPJP'>
                <room>Auditorium</room>
                <title>rpmsg-kms: A Unified DRM Framework for Display Sharing on Heterogeneous Embedded SoCs</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-28T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:40</duration>
                <abstract>Heterogeneous embedded SoCs increasingly require display hardware sharing between Linux and real-time firmware cores. For e.g., In automotive instrument clusters, safety-critical telltales must be rendered by an RTOS on a real-time core (e.g., R5F) while Linux drives the GPU-composited UI on the same display. No generic upstream solution exists to cleanly bridge these worlds within the DRM/KMS subsystem.

We present rpmsg-kms, a vendor-agnostic DRM helper framework that unifies display sharing across heterogeneous cores. The design leverages the kernel&apos;s remoteproc/virtio/rpmsg transport chain for automatic driver binding, eliminating manual integration. The framework and firmware communicate through the firmware&apos;s resource table and rpmsg name-service announcement, enabling independent development and  deployment.                             
                 
The session will be addressing two distinct models:
Model 1: Universal Framebuffer Handoff targets platforms where firmware owns the display pipeline. Linux communicates per-frame plane updates (address, geometry, format, Z-order) over rpmsg to firmware, which programs hardware registers. Vsync can be delivered via rpmsg. This suits any processor and display controller where firmware needs complete control and Linux is in charge of passing GPU-rendered framebuffers for firmware-side for post-processing, composition and display.
  
Model 2: Hardware-Assisted Display Partitioning targets SoCs like TI&apos;s K3 family with hardware support for partitioning display resources across cores. The hardware enforces isolation, for e.g. one scenario could be where firmware owns specific planes (e.g., overlay1-3) while Linux owns others (e.g., overlay4-7), with hardware Z-ordering ensuring firmware planes appear on top. Here, rpmsg is used at probe time for resource negotiation where Linux requests partition assignments then writes display registers directly using it&apos;s own alloted register-space for all runtime updates, achieving zero IPC overhead per frame. rpmsg remains active for system events: suspend/shutdown notifications and fatal error handling ensure display integrity across core transitions.

Following DRM&apos;s atomic helper pattern, rpmsg-kms provides a reusable core with vendor-specific callbacks, enabling platform choice between rpmsg-based updates or direct register access.                          
This talk covers the architecture, protocol, device tree bindings, and vendor-ops interface along with open-challenges such as passing framebuffer addresses over rpmsg.</abstract>
                <slug>er2026-92310-rpmsg-kms-a-unified-drm-framework-for-display-sharing-on-heterogeneous-embedded-socs</slug>
                <track></track>
                
                <persons>
                    <person id='92543'>Devarsh Thakkar</person><person id='92777'>Beleswar Prasad Padhi</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/PCYPJP/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/PCYPJP/feedback/</feedback_url>
            </event>
            <event guid='59ebbb52-570e-59d3-8056-b5a5f6768323' id='92322' code='UCD33E'>
                <room>Auditorium</room>
                <title>In-kernel DRM-based bootsplash: past, present and future</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-05-28T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:15</duration>
                <abstract>An in-kernel bootsplash has been part of the TODO list of the Linux DRM subsystem for quite a long time; some attempts to integrate one have been made in the past, without a successful merge.  The talk will present a simple solution that has been recently proposed [0] by the author of the talk itself, the motivation behind the work and why it may be relevant for the embedded field, along with the reviews it received and the open points. But first, a quick detour will be made to present the drm-draw infrastructure and its other in-kernel users.

[0] https://lore.kernel.org/all/20260106-drm_client_splash-v2-0-6e86a7434b59@valla.it/</abstract>
                <slug>er2026-92322-in-kernel-drm-based-bootsplash-past-present-and-future</slug>
                <track></track>
                
                <persons>
                    <person id='92558'>Francesco Valla</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/UCD33E/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/UCD33E/feedback/</feedback_url>
            </event>
            <event guid='1596ef16-8828-5d23-8a79-019ba689fdc6' id='92093' code='VFWHFS'>
                <room>Auditorium</room>
                <title>Arm LFA - update your firmware at runtime</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-05-28T13:30:00+02:00</date>
                <start>13:30</start>
                <duration>00:15</duration>
                <abstract>Arm&apos;s Live Firmware Activation (LFA) spec (Arm DEN0147) describes an interface to trigger system firmware updates while the system is running. This could include SCP or other board controller firmwares, but also firmware running on the application processors, like Trusted Firmware-A.

The talk will describe what the spec covers, which components are involved, and their upstream story. It will also give examples of already existing LFA firmware support, to illustrate what is possible and where the limitations are.</abstract>
                <slug>er2026-92093-arm-lfa-update-your-firmware-at-runtime</slug>
                <track></track>
                
                <persons>
                    <person id='92351'>Andre Przywara</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/VFWHFS/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/VFWHFS/feedback/</feedback_url>
            </event>
            <event guid='f09946a6-8b5e-55b8-9962-c32170c236a1' id='92141' code='8DPKWD'>
                <room>Auditorium</room>
                <title>Linux and cameras: past, present and future</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-28T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>00:40</duration>
                <abstract>The Linux camera landscape has transformed drastically since the kernel received its first ISP driver fifteen years ago. New kernel APIs and userspace frameworks have enabled development of fully open-source camera stacks. Constant engagement with vendors has slowly but steadily born fruits. This key combination of technical and non-technical efforts is starting to paint a brighter future for camera support in Linux.

This talk will present the current state of the camera landscape, briefly explain the journey we took, and focus on the planned and foreseen evolutions. We will explore the impact on all actors in the industry, including image sensor vendors, ISP (SoC) vendors, and system integrators. Attendees will learn how they should get ready for the future of cameras in Linux and how it will benefit them.</abstract>
                <slug>er2026-92141-linux-and-cameras-past-present-and-future</slug>
                <track></track>
                
                <persons>
                    <person id='89187'>Laurent Pinchart</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/8DPKWD/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/8DPKWD/feedback/</feedback_url>
            </event>
            <event guid='39c2ed16-8d67-5b1e-b932-ea0b99265701' id='92267' code='YELFES'>
                <room>Auditorium</room>
                <title>Inspect your camera using camshark</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-05-28T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:15</duration>
                <abstract>Cameras - especially the ones built out of a sensor connected to an embedded board - have a tendency to be hard to develop and debug. After the initial bringup and getting the core mechanics to work it is often time to look at actual images. Connecting external displays or opening single frames saved to the filesystem quickly becomes a tedious task.

Time to introduce camshark, a tool that makes working on libcamera based cameras easier than ever. Camshark grew from an idea to a tool that is in daily use by many of the core libcamera developers. This talk will give an overview on the underlying concepts and show how camshark can be used for problem analysis and debugging of libcamera based cameras.</abstract>
                <slug>er2026-92267-inspect-your-camera-using-camshark</slug>
                <track></track>
                
                <persons>
                    <person id='92486'>Stefan Klug</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/YELFES/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/YELFES/feedback/</feedback_url>
            </event>
            <event guid='e4aadf96-7342-5e90-8771-a4a33773d515' id='92245' code='PDB3ZG'>
                <room>Auditorium</room>
                <title>Real Time Networking with PREEMPT_RT</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-28T14:45:00+02:00</date>
                <start>14:45</start>
                <duration>00:40</duration>
                <abstract>Linux in combination with PREEMPT_RT is a popular operating system for embedded devices in real time environments and Time Sensitive Networks (TSN). Linux Real time networking applications range from industrial fieldbuses like PROFINET and Ethercat, Audio and Video Bridging (AVB) up to Automotive. Over the last years several networking technologies such TSN Qdiscs, XDP, zero-copy and busy polling have been added into the Linux kernel or improved for real time use cases. In this contribution we will show concepts and tools like the RTC-Testbench, evaluate what precision and performance as well as limitations and pitfalls can be expected when deploying Linux as operating system for these devices.</abstract>
                <slug>er2026-92245-real-time-networking-with-preemptrt</slug>
                <track></track>
                
                <persons>
                    <person id='92482'>Kurt Kanzenbach</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/PDB3ZG/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/PDB3ZG/feedback/</feedback_url>
            </event>
            <event guid='13397063-2db5-5c6a-b6f2-faf87adeb53c' id='92203' code='8D7H8V'>
                <room>Auditorium</room>
                <title>When Preemption exposes What You Missed</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-05-28T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>00:15</duration>
                <abstract>Ethernet bring&#8209;up on embedded hardware is supposed to be predictable: reset the PHY, bring up clocks, negotiate the link, and move on with your life. A routine kernel upgrade on an Arria 10 platform turned into an unexpectedly deep debugging journey through PHY reset sequencing, Ethernet CRC errors, and a behavior that only surfaced reliably with PREEMPT_RT.

Along the way, I&#8217;ll introduce the basics of the Linux network stack as it applies to embedded devices: how drivers, PHYs, resets, and the kernel&#8217;s initialization paths interact, and why ordering matters.
What followed was a debugging journey that went much deeper than expected. The symptoms were loud -CRC errors, severe packet loss at boot, and a driver that only behaved after an unbind/rebind but the root cause was hiding behind assumptions we never realized we&#8217;d made. The hardware, PHY, and DMA path all appeared to check out, leaving us to suspect something subtle in the initialization order.

PREEMPT_RT made the failure reproducible, and that was the real clue. It forced us to revisit everything: PHY reset timing, misleading device&#8209;tree reset names, and the subtle ways real&#8209;time preemption changes how the kernel actually runs. A probe path that had always &#8220;worked&#8221; was only working because the non&#8209;RT kernel had been quietly guaranteeing an execution order it never promised. This talk walks through the investigation, the wrong turns, and where things stand today. While we&#8217;ve narrowed the problem to initialization ordering and reset handling, the full picture is still emerging - and the ongoing work highlights how PREEMPT_RT doesn&#8217;t break your code, it just stops covering for it.</abstract>
                <slug>er2026-92203-when-preemption-exposes-what-you-missed</slug>
                <track></track>
                
                <persons>
                    <person id='92451'>Mamta Shukla</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/8D7H8V/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/8D7H8V/feedback/</feedback_url>
            </event>
            <event guid='e7580dc5-cb15-51bc-a4a3-4c4eb895147d' id='93086' code='7LYZUY'>
                <room>Auditorium</room>
                <title>Four NPUs, One Stack, Zero Blobs: Edge AI Acceleration in Mainline</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-05-28T16:15:00+02:00</date>
                <start>16:15</start>
                <duration>00:40</duration>
                <abstract>For years, utilizing hardware acceleration for machine learning at the edge meant being tethered to a vendor&#8217;s Board Support Package (BSP): a world of stagnant kernels, proprietary binary blobs, and zero auditability. The companies that wanted to run a modern ML workload had to accept their outdated software or spend months fighting it, in both situations risking vendor lock-in.

That era is ending. Thanks to recent work in the Linux accel subsystem and Mesa, a truly open-source AI stack is now a reality. This talk goes over what is currently supported by the mainline stack and the existing four hardware drivers: Etnaviv (Vivante), Rocket (Rockchip), Ethos-U (Arm), and Thames (TI C7x). I will also explain what is missing and what is coming next.</abstract>
                <slug>er2026-93086-four-npus-one-stack-zero-blobs-edge-ai-acceleration-in-mainline</slug>
                <track></track>
                
                <persons>
                    <person id='93199'>Tomeu Vizoso</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/7LYZUY/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/7LYZUY/feedback/</feedback_url>
            </event>
            <event guid='b4e23689-0ee6-5b36-86bf-64b871f26015' id='92314' code='GMVQHM'>
                <room>Auditorium</room>
                <title>Matter over Thread: Taking Full Control of Your IoT Gadgets</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-05-28T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>00:15</duration>
                <abstract>Is it possible to build a custom IoT device that feels as polished as a
commercial product but remains entirely under your control? This talk explores a
personal quest to escape cloud-based ecosystems using Matter over Thread for
local-only communication.

We will dive into the technical stack required to build your own gadgets
using Zephyr, or ESP SDK. You&#8217;ll learn how to leverage the Matter standard to
achieve seamless local control, avoid the Wi-Fi clutter with Thread and achieve
impressive battery life. Lessons learned from integrating DIY sensors
with Home Assistant and existing IKEA hardware, proving that you don&apos;t have to
choose between customization and compatibility.</abstract>
                <slug>er2026-92314-matter-over-thread-taking-full-control-of-your-iot-gadgets</slug>
                <track></track>
                
                <persons>
                    <person id='92546'>Stefan Schmidt</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://cfp.embedded-recipes.org/er2026/talk/GMVQHM/</url>
                <feedback_url>https://cfp.embedded-recipes.org/er2026/talk/GMVQHM/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    
</schedule>
