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)


virtualbox-dkms: fix alloc_netdev problems when compiling with 3.17.0-rcX headers

Published at September 20, 2014 ·  4 min read

Intro Because of my bug hunting approach of using latest kernel I experienced problem with compiling VirtualBox modules with 3.17.0-rc5 version on my Debian Jessie. Issue is well known and described for examples here. Problem manifest itself with: 1 2 3 4 5 6 7 8 9 10 11 12 ------------------------------ Deleting module version: 4.3.14 completely from the DKMS tree. ------------------------------ Done. Loading new virtualbox-4.3.14 DKMS files... Building only for 3....

Categories: app-dev

How to fix backlight issue on IdeaPad y510p

Published at August 23, 2014 ·  1 min read

Today I decide to switch to latest kernel (3.17-rc1) on my IdeaPad y510p. I hit only one annoying problem until now - after booting my main screen was dimmed. I tried all instructions from top google hits for all possible configurations of keywords linux, y510p, backlight issue, etc. Especially I tried all methods from Arch Wiki. Finally I found solution, by greping modinfo for my Intel graphics card: 1 2 3 4 5 [23:55:24] pietrushnic:~ $ sudo modinfo i915|grep backlight parm: invert_brightness:Invert backlight brightness (-1 force normal, \ 0 machine defaults, 1 force inversion), please report PCI device ID, subsystem \ vendor and subsystem device ID to dri-devel@lists....

Categories: os-dev

Linux, RPi and USB over IP

Published at August 18, 2014 ·  10 min read

Trying to google ‘USB over IP’ doesn’t give much except some business web pages that give you it as a service. This brings some information about potential on the market IMHO. Main idea is well presented on open source project page for usbip. I really recommend to read USB/IP - a Peripheral Bus Extension for Device Sharing over IP Network technical paper it describe briefly technical details and capability. In short USB over IP is a sharing system aim to expose USB devices from server to client encapsulating USB I/O messages in TCP/IP payload....

Categories: firmware

Coreboot for QEMU armv7 (vexpress-a9) emulated mainboard

Published at August 7, 2014 ·  8 min read

Recently I came back to look into coreboot. Mainly because low level is fun and skills related to firmware (even coreboot) starting get attention on freelance portals (first odesk job, second odesk job). I was surprised that under the wings of Google coreboot team start to support ARM (BTW ARM programming is IMHO next great skill to learn). So I cloned latest, code compiled QEMU armv7 mainboard model and tried to kick it in latest qemu-system-arm....

Categories: firmware

Linux (Debian Wheezy) on Lenovo y510p

Published at May 16, 2014 ·  4 min read

After long analysis I decide to buy new laptop. I had about $1000 (or 3000PLN) and most important things to me were: i7 CPU - because of performance (of course at least 4700 series) SSD - again performance 17.3” - working space no OS/FreeDos/Linux - I will not pay additional fee to M$ for system that I won’t use Full HD resolution at least 8GB RAM non-glare display First I realize that my budget is to small for such a hardware....

Categories: os-dev

Improve productivity with Google history using bookmarks and Chrome extensions

Published at July 30, 2013 ·  5 min read

The idea of this post is very simple (as usually) and I wonder why I didn’t thought about it earlier. The point is to use history of your Google queries to improve productivity. Most of things that we google can be replaced for example by browser extensions, bookmarks or rss feeds. That’s how we can gain few additional free seconds on each google-type-click cycle. Statistics Depending on different factors we spend a lot of time in browser....

Categories: miscellaneous

0x6: Root file system for embedded system

Published at June 7, 2013 ·  10 min read

Introduction To make our embedded linux work as virtual development platform we need some environment after booting. There is many approaches to get working root file system but I will use the easiest one as an exercise. I don’t want to create full embedded distribution (this is good plan for future works). Right now I will be happy with simple initramfs based on BusyBox. For all interested in creating own root filesystem there are few places where you can find information:...

Categories: os-dev

0x5: Qemu network configuration and tftp for Virtual Development Board

Published at June 7, 2013 ·  7 min read

Introduction This was not trivial task to me. As usual google is your friend and RTFM works. First we will set tftp which we use to download modified kernel for U-Boot. Second I will show how to setup bridged network for QEMU needs and finally we will perform some basic test of our setup. Let’s go. Setup tftpd First install: 1 sudo apt-get install tftpd tftp Make sure that /srv/tftp is writable for your user....

Categories: app-dev os-dev

0x4: Linux kernel for embedded system

Published at June 7, 2013 ·  3 min read

A little history Thinking about embedded linux probably leads to first try of porting linux to different architecture. I did google research (I know I should probably read mailing list archive) and found that there were few attempt to port linux to different platform. There is no clear information about which port of linux was first. This is probably because many hackers didn’t report their effort. Arguably earliest out-of-tree version was probably for Acron A5000 (arm), Motorola 68000 (m68k) around Spring/Summer of 1994....

Categories: os-dev

0x3: Embedded board bootloader

Published at June 7, 2013 ·  3 min read

What is bootloader ? It is a program written to bring up more complex code (eg. kernel). On very simple system it can even not exist. Bootloader should prepare all required hardware that kernel or different operating software will need at its start point. It is hard to create cross platform bootloader because of variety of system requirements. Why we need bootloader ? The true is that we don’t :) because we can simply pass kernel and initramfs as parameters to QEMU, but it is not common practice for real development environment....

Categories: firmware