This article is more than 1 year old

Microsoft opens sources ThreadX under MIT license

The 'Azure RTOS' used in millions of Raspberry Pis is now FOSS

Microsoft is open sourcing the realtime operating system that it acquired with Express Logic, donating it to the Eclipse Foundation.

The vendor has made its ThreadX RTOS, and the Azure RTOS development suite that includes it, open source. The company has contributed Azure RTOS to the stewardship of the Eclipse Foundation, where it will be known as Eclipse ThreadX and available under the permissive MIT licence.

Although there are many Real-time OSes – RTOS for short – out there, you generally don't hear much about them. You may never have heard of ThreadX, but there's a fairly good chance that you unwittingly have several copies lying around or even running right now.

There are more famous RTOSes, such as Wind River's VxWorks: it's running on Mars, inside NASA's Perseverance Rover for example. Blackberry's QNX RTOS, which we called the money-making part of the business, has been in the spotlight twice: once as the basis for RIM's Blackberry X fondleslab and smartphone range, but back in the 1990s for the amazing QNX single-floppy demo disk.

ThreadX was quite pervasive, though. Microsoft claims 12 billion devices run it, and you might own some of them. For a while it powered Intel's on-chip Management Engine. It is also the firmware that controls every Raspberry Pi bigger than the Pi Pico. On the Pi 1, 2 and 3, it's the file on your Pi's SD card called bootcode.bin; in the Pi 4 and 400, it's called start*.elf. Even though it's on GitHub and included in Debian, it's a proprietary "blob" (Binary Large OBject). It's a metaphorical sealed black box which doesn't even contain Arm code: instead, it runs on the Pi's VideoCore GPU. This is the primary device, the part that boots up the Pi and controls its hardware: the Arm cores are slave devices to the VideoCore GPU.

Raspberry Pi active cooling

Ah lovely, here's something you can do with those Raspberry Pis, NUC PCs in the bottom of the drawer: Run Ubuntu Appliances on them

READ MORE

This, incidentally, is why Xen only runs on the Pi 4 and later: they were the first versions where the Arm cores had their own interrupt controller, and even so, it took some work. We have read that in the Pi 5, it's in EEPROM and does even less, meaning that the Arm cores have more control, as this Reg comment bears out.

As soon as this innocent little OS turned 21 in 2019, Microsoft grabbed it, acquiring ThreadX owners Express Logic and rebranding the poor thing as Azure RTOS, which hasn't done any favours for its brand awareness. The purchase came soon after AWS took over stewardship of FreeRTOS, and some observers, such as this commenter on Reddit, claim that the deal was a response to Amazon's move. After the purchase, original developer William Lamie left, starting a new company which sells a "fifth-generation" RTOS with POSIX-compatible threads, called PX5OS.

Even so, ThreadX is a tested and established product; some parts even have TÜV Functional Safety (FuSa) certification, such as the STM32 version [PDF]. That kind of thing is powerfully attractive to some customers.

At this point, only the current version is on GitHub, and we don't see any trace of a VideoCore version. Although the GPU drivers have long been open source, the firmware never was, and attempts to write an independent FOSS version were never completed, for reasons explained on the project page. Now, there is at least some hope that the Raspberry Pi Foundation might be able to get permission to release the source code for its version. As of last year, the foundation had sold over 46 million of the things, and if the whole software stack were open source, that would make them even more appealing for a lot of people. ®

More about

TIP US OFF

Send us news


Other stories you might like