Piotr Król

I’m into open-source firmware, drawing inspiration from the classic hacker ethos of collaborative innovation and transparency. At 3mdeb, we’re excited about our two main projects: Zarhus OS, an Embedded Linux distribution based on Yocto, and Dasharo, a coreboot downstream. Both are about the value of open development, embedded firmware resilience, platform security transparency, the right to repair, and digital sovereignty.

Community is at the center of our activity. By being involved in the Dasharo Users Group, Dasharo Developers vPub, and events like the Qubes OS Summit, we connect with others who share our passion for open-source. Our efforts with OpenSecurityTraining2 reflect our commitment to sharing knowledge and improving the open-source firmware ecosystem.

As the founder of 3mdeb, my daily tasks go beyond managing the company. I am also responsible for making important decisions about our products, such as Zarhus OS and Dasharo, and developing valuable processes that establish a foundation for projects we undertake for our clients.

Outside work, I enjoy simple pleasures like chess, bridge, and reading. Nature, especially the peace of the forest, is where I find solace. My interests in theology, philosophy, and psychology keep me curious about the world. Whether it’s exploring new technologies or understanding complex ideas, I’m always eager to learn and grow.


Articles (83)


RTE for automated kernel deployment and everyday use

Published at October 3, 2018 ·  9 min read

We continue our effort to enable IOMMU and as side effect I have to play with various technologies to exercise reliable development environment which base on RTE. In this blog post I would like to present semi-automated technique to debug firmware, Xen and Linux kernel. The goal is to have set of tools that help in enabling various features in Debian-based dom0. We would like: update Linux kernel which is exposed over HTTP server update rootfs provided through NFS I will use following components:...

Categories: firmware os-dev

Optimize performance in Docker containers used by Embedded Systems Consulting business

Published at September 27, 2018 ·  11 min read

In 3mdeb we use Docker heavily. Main tasks that we perform using it are: firmware and embedded software building - each software in Embedded System requires little bit different building environment, configuring those development environments on your host may quickly make a mess in your system for daily use, because of that we created various containers which I enumerate below trainings/workshops - when we perform trainings we don’t want to waste time for users to reconfigure the environment....

Categories: firmware miscellaneous

Xen HVM guests on PC Engines apu2

Published at August 16, 2018 ·  15 min read

Continuing blog post series around Xen and IOMMU enabling in coreboot we are reaching a point in which some features seem to work correctly on top of recent patch series in firmware. What we can do at this point is PCI passthrough to guest VMs. Previously trying that on Xen caused problems: random hangs firmware cause Linux kernel booting issues (hang during boot) IOMMU disabled - unable to use PCI passthrough Now we can see something like that in dom0:...

Categories: firmware os-dev

How to boot Xen over PXE and NFS on PC Engines apu2

Published at July 18, 2018 ·  9 min read

From time to time we face requests to correctly enable support for various Xen features on PC Engines apu2 platform. Doing that requires firmware modification, which 3mdeb is responsible for. Xen have very interesting requirements from firmware development perspective. Modern x86 have a bunch of features that support virtualization in hardware. Those features were described in Xen FAQ. It happens that most requesting were IOMMU and SR-IOV. First, give the ability to dedicate PCI device to given VM and second enables so-called Virtual Functions, what means on a physical device (e....

Categories: firmware os-dev

ssh reverse tunnel for PXE, NFS and DHCP setup on Qubes OS

Published at December 5, 2017 ·  6 min read

At some point I stuck in the forest with WiFi connection and no physical access to router to create nice networking for my coreboot development needs. Recently I switched my laptop to Qubes OS what give interesting flexibility, but also additional problems. My key requirement is to boot system over PXE, so I can easily do kernel development and play with Xen. Because only available connection for my apu2 platform was directly to my laptop I had to provide configured DHCP server and PXE server on it....

Categories: os-dev

Flashing MinnowBoard Turbot with Raspberry Pi Zero W

Published at November 20, 2017 ·  10 min read

Recently we started preparation of coreboot training for one of our customers. Our platform of choice for that training is MinnowBoard Turbot. There are couple reasons for that: During training we can show recent firmware trends - despite we don’t like blobs (FSP, AGESA, PSP, ME etc.) and bloated designs (UEFI) we cannot escape reality and have to show customers how to deal with those components. MinnowBoard Turbot use couple of them, but also supports coreboot....

Categories: firmware

UEFI/EDK II CorebootPayloadPkg on PC Engines apu2

Published at November 3, 2017 ·  9 min read

Recently we were reached by person interested in running CoreOS on apu2. CoreOS is a very interesting system from security point of view. It was created to support containers and scalability out of the box. Unfortunately it requires firmware supporting GPT. At that point I was not sure if I can utilize GRUB GPT support on apu2, but this led to other questions: Is it possible to boot UEFI-aware OS on PC Engines apux boards?...

Categories: firmware

PC Engines apu2 python Robot Framework validation automation

Published at November 2, 2017 ·  8 min read

Recently we attended ECC2017 conference. One of topics that we considered was a system for development and validation automation. Unfortunately this talk was not accepted, but we present some research below and plan to provide more soon. As maintainers of PC Engines platforms in coreboot we debug and fix quite a lot of bugs, but to take full responsibility for our code everything should be validated each time we do release....

Categories: firmware

OpenOCD and development environment for Zephyr on NXP FRDM-K64F

Published at March 18, 2017 ·  12 min read

In this post I would like to describe process of setting up NXP FRDM-K64F development environment under Linux and start Zephyr development using it. Why NXP FRDM-K64F ? I choose this platform mostly because of ready to use guide about using 802.15.4 communication by attaching TI CC2520, which was presented here. Typical wireless stack starts with 802.15.4, then 6LoWPAN adaptation and then IPv6, which carries application protocols. 6LoWPAN compress IPv6 so it can fit BLE and 802....

Categories: firmware iot

Nerves project triage on BeagleBone Black Black

Published at March 10, 2017 ·  6 min read

Recently one of my customers brought to my attention Nerves. It aims to simplify use of Elixir (functional language leveraging Erlang VM) in embedded systems. This system has couple interesting features that are worth of research and blog post. First is booting directly to application which is running in BEAM (Erlang VM). Nerves project replace systemd process with programming language virtual machine running application code. Concept is very interesting and I wonder if someone tried to use that with other VMs ie....

Categories: firmware os-dev