logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·02.11.26
← Back to news

The newest ESP32 can run Linux and it's getting close to a Raspberry Pi

Original article
xda-developers.com|177 points|85 comments|by adunk|Sep 24, 2026

The New ESP32-S31: A Microcontroller Morphing into a Raspberry Pi

By Adam Conway (XDA Lead Technical Editor, BSc in Computer Science)

The boundary between microcontrollers and Single Board Computers (SBCs) is blurring. Espressif has unveiled the ESP32-S31, a chip that doesn't just mimic the capabilities of a Raspberry Pi—it actually runs Linux.

ESP32-S31 Featured

🚀 Hardware: More Than Just a Microcontroller

Traditionally, an ESP32 provides a few cores, minimal RAM, and some GPIOs. The S31, however, boasts a peripheral suite that looks like it was ripped straight from an SBC.

Connectivity and I/O

The standout feature is the networking. While the ESP32-P4 topped out at 100 Mbps, the S31 introduces a 1000 Mbps (Gigabit) Ethernet MAC.

  • The Secret Sauce: It utilizes an RGMII interface to connect to an external PHY via an 8P8C (RJ45) connector. Without RGMII, it would be limited to the slower RMII standard.
  • USB Capabilities: It features a USB 2.0 High-Speed OTG controller. The dev board includes a full-size Type-A port capable of supplying 500 mA in host mode.

Peripheral Breakdown

FeatureSpecification
StorageSDIO host controller with 2 slots\text{2 slots}2 slots
VisualsDVP camera interface (8-16 bit) & Parallel LCD controller (24-bit RGB, I8080, MOTO6800)
Audio2x I2S controllers with hardware Bluetooth sync
IndustrialCAN FD controller & 4x MCPWM units
Sensors14 capacitive touch channels

S31 Interfaces Diagram


🧠 The Brains: RISC-V and Memory

The S31 moves away from traditional architectures to a powerful RISC-V setup.

Memory Evolution: Unlike the ESP32-S3, where flash and PSRAM shared an interface, the S31 separates them. It supports up to 64 MB of PSRAM via a 250 MHz 8-bit DDR interface.


🛠️ The Game Changer: A "Real" MMU

For years, Espressif used the term "MMU," but it was essentially just a mapping block for external memory. The S31 introduces a true Memory Management Unit.

Technical Shift: The S31 implements the Sv32 two-level page-table address translation scheme. This allows for process isolation and the use of page tables, which are fundamental for modern operating systems.

The architecture supports three distinct privilege levels:

  1. Machine Mode (M) →\rightarrow→ Firmware (OpenSBI)
  2. Supervisor Mode (S) →\rightarrow→ Linux Kernel
  3. User Mode (U) →\rightarrow→ User Applications (Shell, SSH)

MMU Comparison


🐧 Running Linux

Because of the hardware support, Linux isn't a "hack" on the S31—it's natively supported. Espressif released a Linux BSP (Board Support Package) in August based on U-Boot and Buildroot.

Current Progress:

  • Linux 6.18: Runs in supervisor mode with most hardware drivers functional.
  • Linux 7.1: Supports an 800x480 LCD panel for a full console experience.
  • Production Ready: Recommended for commercial use (Espressif states it is not yet recommended for production).

Privilege Modes


⚠️ The Reality Check: Where it Falls Short

Despite the "SBC-like" features, the S31 is still a microcontroller at heart, and the limitations are evident when compared to true competitors.

The RAM Bottleneck: The S31 has 512KB of on-chip SRAM and a maximum of 64MB PSRAM. Compare this to the Milk-V Duo S, which packs 512MB of RAM.

Milk-V Duo S

Other Trade-offs:

  • No DRAM Controller: This is why the Linux kernel must be executed directly from flash to save the limited PSRAM.
  • Missing Accelerators: There is no onboard GPU or NPU.
  • Feature Swap: While it keeps a JPEG codec, it loses the video encode and MIPI interfaces found on the ESP32-P4 to make room for more radios.

In summary, while the ESP32-S31 is a massive leap forward that allows for keyboards, mice, and displays, it remains a high-end microcontroller rather than a full Raspberry Pi replacement.