← All posts

Chip news · ESP32 · Linux

The ESP32 that runs Linux: meet the ESP32-S31

28 Sep 20265 min read

A microcontroller that boots Linux

An ESP32 can now boot a real Linux kernel all the way to a shell. The chip doing it is Espressif's new ESP32-S31, and it's why the maker world is buzzing this week.

People have squeezed Linux onto ESP32s before, but those were clever hacks that ran very slowly. The S31 is different. It has the hardware Linux actually needs built in, and Espressif itself has released Linux support for it.

So is the humble ESP32 about to take on the Raspberry Pi? Let's look at what's really going on.

Meet the ESP32-S31

The S31 is best thought of as a much beefier ESP32-S3. Espressif unveiled it in March, dev boards followed in May, and mass production was announced in August.

One surprise: the "S" series has always used Xtensa cores, but the S31 uses RISC-V cores, borrowed from the high-end ESP32-P4. An Espressif engineer has suggested it could be close to twice as fast as an S3.

Here's how it stacks up against the S3 most of us know:

FeatureESP32-S3ESP32-S31
CPUDual-core Xtensa LX7, 240 MHzDual-core RISC-V, up to 320 MHz
Wi-FiWi-Fi 4 (2.4 GHz)Wi-Fi 6 (2.4 GHz)
BluetoothLE 5 onlyClassic + LE 5.4, incl. LE Audio
Thread / ZigbeeNoYes
EthernetNone built inGigabit MAC
GPIO4560
PSRAMOctal SPI, 80 MHzOctal DDR, up to 250 MHz
USBFull-speed OTGUSB 2.0 High-Speed OTG
MMU for LinuxNoYes

Bluetooth Classic is a nice bonus. Until now, if you wanted Classic Bluetooth audio you had to go back to the original ESP32.

If you want one to play with, the ESP32-S31-Function-CoreBoard-1 (16 MB PSRAM, gigabit Ethernet, USB 2.0) is around US$20, roughly A$30, on AliExpress.

Why this ESP32 can run Linux

The key ingredient is an MMU (memory management unit). Proper Linux uses it to give every program its own protected memory. No earlier ESP32 had one, which is why past Linux attempts were so limited.

The S31 adds the MMU, and the dev boards pair it with 16 MB of fast PSRAM. That's tiny by PC standards, but enough for a minimal Linux system.

Three projects have already made it work:

A neat trick in these builds: the kernel runs straight from flash (called XIP, execute-in-place), so none of the precious 16 MB of RAM is wasted holding it.

Is it a Raspberry Pi killer?

Not yet, and probably not this chip. Here's the reality check:

What's exciting is the direction. The S31 is the first ESP32 whose peripherals, bandwidth and CPU design look like a small single-board computer. A future chip with more RAM could genuinely close the gap.

For now, think of it as a very capable microcontroller that can run Linux when you need standard networking tools, rather than a Pi replacement.

What it means for MicroPython makers

If you build with MicroPython and Thonny like I do, here's the practical picture:

My take

If you want to tinker with Linux on a microcontroller, grab an S31 dev board now. If you want to build finished projects in MicroPython today, an ESP32-S3, C5 or P4 is still the smarter buy.

The bottom line

The ESP32-S31 won't replace your Raspberry Pi this year. But it is the first ESP32 that runs Linux properly rather than as a party trick, and that's a real milestone for the chips we all love.

The line between "microcontroller" and "tiny computer" is getting blurry. I'll be watching for S31 MicroPython support and will post a hands-on here as soon as it lands.

Would you run Linux on an ESP32, or stick with MicroPython? Let me know: .

Sources

#ESP32S31#EmbeddedLinux#RISCV#MicroPython#Espressif