Linux on ESP32
Posted by boveyking 5 days ago
Comments
Comment by tyingq 1 day ago
I think the docs are light because the primary goal for them is not to provide everyone with a well documented linux on esp-32-s31 guide, but rather this that they shared:
"I'm currently working on a hackable music player and I used to prototype with the OG esp32, and tbh if I wasn't for Bluetooth audio I'd move on to S3 already" ( from the links in this comment https://news.ycombinator.com/item?id=49134987 )
Comment by Aurornis 1 day ago
Is there another set of comments or history I should be looking at? The only pre-LLM comment is about doing a prototype for something with the old ESP32. That was a common hobby microcontroller introductory project, but there’s a world of difference between playing with an OG ESP32 and porting MMU Linux to a new platform.
I think we should be honest about what this is: Someone spent their tokens letting an agent attempt bring up of Linux on the platform and it got something to work. I’m appreciative that it was shared. However, given the lack of useful documentation (the key MMU doc is basically empty) and the lack of other explanations, I don’t think we should be reading more into this than as a pure LLM agent proof of concept.
Comment by sparse-Matrix 1 day ago
Assuming he did use AI, it didn't spontaneously generate the project and foist it upon the user and the world; the user used the AI to generate the project at his direction.
It's like the old friend when I decided I didn't care for wearing a full beard in July and got really angry with me about it when I shaved -- not my friend anymore.
Dont like the project? move along.
Otherwise, why are you wasting your energy to put down this hardwork?
Comment by Aurornis 1 day ago
Comment by numpad0 1 day ago
Comment by ofalkaed 1 day ago
Comment by tyingq 1 day ago
Comment by Aurornis 1 day ago
You may not be familiar with modern LLM tools.
You don’t need to copy/paste anything. You can easily instruct your agent to access the serial port and JTAG debugger and it will easily handle it through subsessions.
The tools have moved rapidly this year. Something like this is entirely doable by attaching the right cables, telling the agent where to access everything, and then keeping it fed with enough tokens to keep going.
There are some amazing projects doing reverse engineering or porting to micros fully automated. The results are still full of typical LLM output problems, but it’s amazing what can be brute forced with enough tokens in an LLM loop.
When I’m evaluating MCU platforms for new projects I’ll some times set an LLM loose on each to get a proof of concept running so I can do benchmarks or testing. It can save a lot of time finding showstoppers or roadblocks before I waste a lot of time on doing the problem correctly.
Comment by nunobrito 7 hours ago
There is certainly slop but it was always like this in software engineering, just that now is far easier for anyone to write code that runs on ESP32 which in my opinion was already quite easy in the past but frankly bothersome to get any complex project running.
I'm old enough to remember when other developers criticized heavily the usage of Turbo Pascal in the 90s because "it wasn't a real compiler" but reality is that it made software writing far easier and fun for a whole new generation of kids. It seems we are going through a similar wave, it will take time until this settles as a new tool.
Comment by sparse-Matrix 1 day ago
Comment by grieferpig 1 day ago
- Yes it is vibe coded. It do work on real S31 dev boards (there's console output and binary releases to prove that.) I understand the esp32 microcontroller architecture to some extent, but I barely know how to port Linux to other RISC-V platforms; what I did is to tell the agent something like "Go implement an IPC transport that uses a shared SRAM buffer and an IPC interrupt doorbell" or "sdmmc uses designware ip; search esp-idf usage and port the existing Linux driver over." An AI agent on its own would never discover S31's bespoke hardware behavior without my guidance, for example, that the register `mcliccfg` has writable bits, despite esp-idf saying otherwise. However I admit that AI assistance is the direct reason why I am able to progress this fast, and I did learn a lot about kernel development during the process. If you're bothered by AI code, move on.
- Untested is a bit misleading: per the README, means "seems working; not thoroughly tested." They do seem to work at the time when their drivers are being built. Three weeks into this project I can't have everything stress-tested already.
- I built this more as a proof of concept intending for my own use; I did not expect it to gain popularity anytime soon, so the docs are very bad for now.
Comment by Aurornis 1 day ago
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.
Comment by voakbasda 1 day ago
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.
Comment by Aurornis 1 day ago
I also think it’s pretty cool.
We do need to keep it in context though.
Comment by IgorPartola 1 day ago
Comment by Izmaki 1 day ago
Comment by jubilanti 1 day ago
Comment by genericacct 1 day ago
Comment by 0x20cowboy 1 day ago
(Worthy goal though I agree there. Fun at the minimum.)
Comment by pjmlp 1 day ago
Comment by NooneAtAll3 1 day ago
Comment by jagged-chisel 1 day ago
Comment by NooneAtAll3 1 day ago
Comment by jagged-chisel 13 hours ago
2) a form of the possessive case of singular they used as an attributive adjective, before a noun.
a) (used to refer to a generic or unspecified person previously mentioned, about to be mentioned, or present in the immediate context): A parent should read to their child.
Comment by biosboiii 1 day ago
It's not nearly impossible, it has already been done :)
Slides: https://fahrplan.events.ccc.de/congress/2024/fahrplan/media/...
Comment by grieferpig 1 day ago
Comment by yjftsjthsd-h 2 days ago
Doesn't that put it in an awkward position relying on a dead end feature?
Comment by grieferpig 1 day ago
Comment by yjftsjthsd-h 17 hours ago
Comment by Neywiny 1 day ago
Comment by iririririr 1 day ago
Comment by fitsumbelay 1 day ago
The derisive "vibe-coded" label is one thing, but the least compelling argument or complaint of them all is the truly worn out one about barriers to entry that you and I and so many others worked soooo hard to climb over are now being obliterated, allowing any casual Moe to stroll into your domain. How many professionals -- djs, photographers ... hell, SEO experts -- pretty much anyone technical and possibly creative have watched technology make work and the accumulation of competitors almost too easy.
If you just remember that no one in this time-space or anyother AFAICT is forcing you to consume or even read about projects like this, you'll find life goes on and you're actually still an expert who people who need experts will value materially (which should be your thing, otherwise wth are you complaining about?)
In fact, if you keep your mind open you might -- not definitely but _just_ _might_ -- find a piece of something useful amidst the slop. One fellow's trash ...
Comment by kogasa240p 1 day ago
Comment by Joel_Mckay 1 day ago
Unlike Multi-core Application processors which are a better fit for OS like BSD or Linux. =3
Comment by kogasa240p 22 hours ago
Comment by Rochus 5 days ago
Comment by peterus 2 days ago
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...
Comment by Rochus 1 day ago
Comment by Rohansi 1 day ago
Comment by Rochus 1 day ago
Comment by Rohansi 1 day ago
> Compliant with RISC-V Sv32 virtual memory scheme
https://documentation.espressif.com/esp32-s31_datasheet_en.p...
Comment by Rochus 1 day ago
Comment by andylinpersonal 23 hours ago
Comment by chrsw 1 day ago
Comment by yjftsjthsd-h 2 days ago
Comment by stevefan1999 1 day ago
Comment by derefr 1 day ago
Comment by extraduder_ire 1 day ago
Seeing the title of this submission reminded me of it because I messed around with it a bit a few years ago.
Comment by piterrro 1 day ago
Comment by extraduder_ire 1 day ago
There have been esp32 ports of doom for a decade though. Here's a current one: https://github.com/AmirhoseinMasoumi/ESP32-DOOM
Comment by boveyking 5 days ago