October 28, 2026
Announcing Sylphide OS
For the last few weeks, I’ve worked on a new pet project : an operating system for computers based on microcontrollers. There aren’t many yet, but I expect them to be more and more common.
Why MCU computers ? You get a relatively very simple platform, booting straight to your code (or almost), and you can understand the whole architecture. Exactly as it was with home computers long ago. And not at all what you get with modern computers. Booting alone involves lot of very different systems, black magic, and blob/proprietary software.
On the other side, you don’t have to deal with things like CRT monitors, tapes, floppy disks, lack of mouse, serial and parallel ports. None of that I regret.
So I started writing some code, and… you know how it is. It went wild. The famous “rabbit hole”.
Desktop
First I wanted a desktop, even basic. No command line or “boot-to-basic” as is done with several retro-like computers. This GUI would be the common denominator of all ports, so it had to run on very low specs. I went for black&white and 512×384 pixels. Do you get it ?
This is not trivial. You almost need to bring pixels one-by-one in a very efficient way. Not at all the wayland way with all windows being textures rendered by applications and a hefty GPU mixing it all together. This is the old-fashioned way: you carefully handle a small number of pixels in a framebuffer.
It took time, but I now have a window manager handling windows, damages, clipping and all. Along with a (rudimentary) menu system, mouse cursor.
Drivers
The other big challenging task was writing drivers for the few targets I had selected: for input (usb, ps/2, mouse, keyboard) and displays (vga, hdmi). I mostly chose targets for which such inputs/displays were already done and validated. But still, it was a hard task.
First, it usually involves tricks, torturing the hardware for something it was not supposed to do. It adds lot of constraints, especially with memory and timings.
But also, all those projects had relatively huge codebase, and the part that I call “driver” was never clearly separated as it should. It was spread among lot of different files, mixed with irrelevant code, undocumented. Sometimes just plain wrong or buggy, only working (for example) because most VGA monitors are tolerant with respect to timings.
I couldn’t find an existing board based on the very cheap rp2350, with several USB-A plugs and VGA output. Especially with low bit-depth (1 or 2bpp). So I created “something” starting from a Pico2, and it’s now one of the targets. I’m especially interested in a “huge” display (more than VGA 640×480) with 4 levels of gray, so that’s probably where this target will develop.
I want some more
The project homepage with documentation is https://projects.freehackers.org/sylphide-os/
The code is here: https://freehackers.org/electronics/sylphide-os
[…] ↫ Thomas Capricelli […]
Hi,
“Why MCU computers ? You get a relatively very simple platform, booting straight to your code (or almost), and you can understand the whole architecture. Exactly as it was with home computers long ago. And not at all what you get with modern computers. Even booting involves lot of very different systems, black magic, and even blog/proprietary software.”
Exactly what I think!
I miss my Atari ST
I will follow tour job!