1. COMPANY
  2. PRODUCTS
  3. SERVICES
  4. NEWS
  5. CONTACT
  6. SHOP

Piotr Król

Founder and Embedded Systems Consultant at 3mdeb as well as CTO of vitroTV. Passionate about building firmware that enables advanced hardware features in modern products. Dedicated to customers that treat embedded software security and upgradability as forethought. In favor of fixed price projects with the clear definition of success. Available as freelance CTO for startups and small business.

Social media profiles

Follow Piotr Król on Facebook

Follow Piotr Król on Twitter

Find Piotr Król on LinkedIn

Check GitHub profile


Articles (75)


How to build an Embedded Systems Consulting business?

Published at September 6, 2019 ·  11 min read

At some point in engineer career we may consider building our own consulting business. In following blog post I share the experience that I gained building 3mdeb Embedded Systems Consulting....

Categories: miscellaneous

Qubes OS and 3mdeb 'minisummit' 2019

Published at August 7, 2019 ·  8 min read

In May we had pleasure to meet Marek Marczykowski-Górecki #QubesOS Project Lead in 3mdeb office in Gdańsk. We dicussed various #QubesOS, #Xen, #firmware, #coreboot, #security and #TPM related topics. Results of that "minisummit" was presented in following blog post....

Categories: firmware os-dev security

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