<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/github---grieferpig-esp32-s31-linux-porting-mmu-linux-to-esp32-s31-o9nrg0dao" -->

---
title: GitHub - GrieferPig/esp32-s31-linux: Porting MMU Linux...
description: A developer has ported Linux 6.12 to the ESP32-S31 microcontroller, which uses a RISC-V RV32 architecture with MMU support. The port runs on the...
canonical: https://daily.dev/posts/github---grieferpig-esp32-s31-linux-porting-mmu-linux-to-esp32-s31-o9nrg0dao
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: GitHub - GrieferPig/esp32-s31-linux: Porting MMU Linux to ESP32-S31 | daily.dev
og:description: A developer has ported Linux 6.12 to the ESP32-S31 microcontroller, which uses a RISC-V RV32 architecture with MMU support. The port runs on the...
og:url: https://daily.dev/posts/github---grieferpig-esp32-s31-linux-porting-mmu-linux-to-esp32-s31-o9nrg0dao
og:image: https://api.daily.dev/og/posts/o9nRg0dao.png
og:image:alt: GitHub - GrieferPig/esp32-s31-linux: Porting MMU Linux to ESP32-S31
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub - GrieferPig/esp32-s31-linux: Porting MMU Linux to ESP32-S31

**[Hacker News](https://daily.dev/sources/hn)** · 5 min read · 0 upvotes · 0 comments

## Summary

A developer has ported Linux 6.12 to the ESP32-S31 microcontroller, which uses a RISC-V RV32 architecture with MMU support. The port runs on the ESP32-S31-WROOM-3 module and required significant reverse engineering since the S31 Technical Reference Manual was not yet available. Key challenges included implementing a custom CLIC interrupt driver (the chip uses CLIC/CLINT instead of the standard PLIC expected by Linux), working around non-standard supervisor mode CSRs, and modifying OpenSBI to use XIP (execute-in-place) from flash to conserve the 16MB PSRAM. The system boots to a shell with ~15MB usable RAM and achieves a CoreMark score of ~1059. Many peripheral drivers remain untested or unimplemented, including I2C, SPI, I2S, and RMT.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://github.com/GrieferPig/esp32-s31-linux>

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 55 comments across hackernews (as of 2026-08-02).

**TL;DR:** The community is intrigued by the idea of running Linux on the ESP32-S31 (which has a real Sv32 MMU unlike its predecessors), but is skeptical about the project's quality, suspecting heavy LLM/vibe-coding involvement and noting the near-empty documentation and untested code.

**Sentiment:** 25% positive · 45% mixed · 30% skeptical

**The case for**

- The ESP32-S31 has a genuine Sv32-compliant MMU, making Linux viable in a way not previously possible on ESP32 chips.
- The project at least serves as a proof of concept and sets a performance floor for Linux on this platform.
- The author has a history of similar hardware hacking predating LLM tools, lending some credibility to the effort.
- Espressif's radio firmware blobs have already been reverse-engineered, countering one stated blocker in the README.

**The pushback**

- Documentation is nearly empty, especially the key MMU section, making the project hard to evaluate or build on.
- Heavy suspicion of vibe-coding/LLM agent authorship raises doubts about the reliability and correctness of the code.
- The project relies on Linux 6.12 for XIP support, a feature removed from mainline RISC-V, putting it on a dead-end path.
- Output snippets that imply a working boot could plausibly be LLM hallucinations rather than real results.
- Linux may be an unnecessarily heavy choice compared to alternatives like NetBSD or even FreeRTOS for this class of device.

**By community**

- hackernews (mixed): Commenters are genuinely interested in the hardware milestone (Sv32 MMU on an ESP32) but are divided on whether the project is credible or just LLM-generated slop with unverified outputs.

**Hottest debate:** Whether the project is a legitimate human-guided port or a largely LLM-generated artifact with potentially hallucinated output, and whether that distinction even matters.

**Open questions**

- Does the ESP32-S31's Sv32 MMU support the full feature set required for true process isolation and dynamic paging under Linux?
- Are the boot log output snippets in the README genuine results or LLM hallucinations?
- Will XIP support ever return to mainline RISC-V Linux, or is relying on 6.12 a permanent dead end?
- When might Espressif release an RVA23-profile chip that can run standard Linux without such heroics?

**Highlights**

> Obviously vibecoded but interesting nevertheless. The agent left everything marked as untested in the README but the output snippets toward the bottom imply that it got something working enough to log in and run some commands. Nobody is going to mistake this for a carefully crafted port of Linux but it at least serves as a proof of concept. The real downside of the vibecoding is that we don’t get any helpful information about what it took to get it done with thoughtful analysis from a human. Just a chunk of code in a GitHub repo with some half-coherent README. There’s a docs folder, but the documentation about the MMU part just says that there are two MMUs across a couple lines of notes. Okay, great.
> — [Aurornis on hackernews · 2 comments](https://news.ycombinator.com/item?id=49135765)

> This is for the recently released ESP32-S31 which does have a MMU, unlike the ESP32-S3. The author has more details in this reddit post: https://eddrit.com/r/esp32/comments/1vait52/mmu_linux_on_the... And the docs section of the repo: https://github.com/GrieferPig/esp32-s31-linux/tree/main/docs...
> — [peterus on hackernews · 2 comments](https://news.ycombinator.com/item?id=49134987)

> Ok, I see. The S3’s "MMU" is just an external-memory mapper, not a virtual-memory MMU. The S31 apparently has both, that mapper plus an architectural CPU-side Sv32 MMU; that offers indeed a lot of interesting possibilities. Even sel4 would run on this machine as it seems. The ARM world has no microcontroller with a true MMU as far as I know. Risc-V now has at least two (here is the other one: https://www.bunniestudios.com/blog/2026/baochip-1x-a-mostly-...).
> — [Rochus on hackernews](https://news.ycombinator.com/item?id=49138160)

> Given the context of a vibe-coded project, would it be reasonable to assume the example outputs are outright hallucinations, without seeing indisputable evidence to the contrary? Sad that’s where my mind goes, but this is what the world has been training me to believe.  And these doubts now eclipse the skepticism that I developed toward things that humans posted on the internet. Lies, damn lies, and LLMs.
> — [voakbasda on hackernews · 1 comments](https://news.ycombinator.com/item?id=49136921)

> >Espressif's radio firmware blobs are closed source, and must run within ESP-IDF's FreeRTOS framework. It's near impossible to reverse-engineer them (not to mention legal risks.) It's not nearly impossible, it has already been done :) Slides: https://fahrplan.events.ccc.de/congress/2024/fahrplan/media/... Video: https://www.youtube.com/watch?v=r8IqkUTGjlA
> — [biosboiii on hackernews](https://news.ycombinator.com/item?id=49140209)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=49087499) · 33 points · 53 comments
- [hackernews](https://news.ycombinator.com/item?id=48816811) · 2 points · 2 comments

## Similar posts on daily.dev

- [Espressif Systems releases a Linux BSP developer preview for ESP32-S31 RISC-V microprocessor](https://daily.dev/posts/espressif-systems-releases-a-linux-bsp-developer-preview-for-esp32-s31-risc-v-microprocessor-lmglqymci) · CNX Software · 1 upvotes · 0 comments
- [The newest ESP32 can actually run Linux, and it's getting uncomfortably close to a Raspberry Pi](https://daily.dev/posts/the-newest-esp32-can-actually-run-linux-and-it-s-getting-uncomfortably-close-to-a-raspberry-pi-ex3qklo9c) · XDA Developers · 0 upvotes · 0 comments
- [Running Linux 6.11 On The ESP32-S3 With A Few Tweaks](https://daily.dev/posts/running-linux-6-11-on-the-esp32-s3-with-a-few-tweaks-havlry0ud) · Hackaday · 0 upvotes · 0 comments
- [Espressif Unveils ESP32-S31: A Dual-Core RISC-V SoC with Wi-Fi 6, Bluetooth 5.4, and Advanced HMI Capabilities](https://daily.dev/posts/espressif-unveils-esp32-s31-a-dual-core-risc-v-soc-with-wi-fi-6-bluetooth-5-4-and-advanced-hmi-ca-3psf77luz) · Hacker News · 0 upvotes · 1 comments
- [Espressif’s New ESP32-S31: Dual-Core RISC-V With WiFi 6 And GBit Ethernet](https://daily.dev/posts/espressif-s-new-esp32-s31-dual-core-risc-v-with-wifi-6-and-gbit-ethernet-wxfcaffql) · Hackaday · 0 upvotes · 0 comments

---

Tags: [#linux](https://daily.dev/tags/linux), [#c](https://daily.dev/tags/c), [#iot](https://daily.dev/tags/iot)

[View this post on daily.dev](https://daily.dev/posts/github---grieferpig-esp32-s31-linux-porting-mmu-linux-to-esp32-s31-o9nrg0dao)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"GitHub - GrieferPig/esp32-s31-linux: Porting MMU Linux to ESP32-S31","url":"https://daily.dev/posts/github---grieferpig-esp32-s31-linux-porting-mmu-linux-to-esp32-s31-o9nrg0dao","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/github---grieferpig-esp32-s31-linux-porting-mmu-linux-to-esp32-s31-o9nrg0dao"},"datePublished":"2026-08-01T16:00:28.404Z","dateModified":"2026-08-02T03:11:36.961Z","description":"A developer has ported Linux 6.12 to the ESP32-S31 microcontroller, which uses a RISC-V RV32 architecture with MMU support. The port runs on the...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/1c0929773780b43e3b813793580803be?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/1c0929773780b43e3b813793580803be?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/github---grieferpig-esp32-s31-linux-porting-mmu-linux-to-esp32-s31-o9nrg0dao","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"linux,c,iot","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"GitHub - GrieferPig/esp32-s31-linux: Porting MMU Linux to ESP32-S31"}]}
```

