Much like how BusyBox crams many standard Unix commands and a shell into a single executable, so too does BreezyBox provide a similar experience for the ESP32 platform. [valdanylchuck] ‘s system even includes a demo implementation that uses the ESP32-S3 platform as part of the Waveshare 7″ display development board.
Although it invokes the BusyBox name, it’s not meant to be as stand-alone as it uses the standard features provided by the FreeRTOS-based ESP-IDF SDK. In addition to the features provided by ESP-IDF it adds things like a basic virtual terminal, current working directory (CWD) tracking and a gaggle of Unix-style commands, as well as an app installer.
The existing ELF binary loader for the ESP32 is used to run executables either from a local path or a remote one, a local HTTP server is provided and you even get ANSI color support. Some BreezyBox apps can be found here, with them often running on a POSIX-compatible system as well. This includes the xcc700 self-hosted C compiler.
You can get the MIT-licensed code either from the above GitHub project link or install it from the Espressif Component Registry if that’s more your thing.

Very, VERY nice !
Thank you! It will get a lot nicer, once more people join in with their apps, and demos on other hardware setups. I will try to find the time to add and publish more features myself (spoiler: Celeste clone is coming soon, with corresponding convenience features for keyboard and graphics), but there is a whole new userland universe to be uncovered here, way too much for a solo developer!
The direction all my microcontroller projects go is to eventually provide some sort of interactive shell (mine tend to happen in a way that is abstracted so that it can happen via either serial or a web interface or sometimes even I2C). That seems to be the most compact way to add functionality to a device, and it also wraps nicely in a graphical shell should you need to do things that way. I’ve built an enormous amount of functionality into ESP8266s, to the point where I have all these ESP32s on hand for “something that requires them” but haven’t yet used them.
Got a git repo somewhere ?
Check out my ESP8266 remote control system — I recently added OTA updates and even I2C updates of the firmware of attached I2C slaves. It has support for REPL-like command system that works over both serial and a web interface. https://github.com/judasgutenberg/Esp8266_RemoteControl
… wow
Never mind, was just there one click away :D Thx!
I don’t need all that for a simple device.I just want to swap the firmware with firmware off of an sd card. a bootloader should do that, right?
You don’t but these “simple devices” are roughly equivalent of Pentium PCs that were cutting edge a long time ago, but not really that long time ago. I had my first Linux experience on a 386DX40 with 4M of RAM. So it’s all good fun.
Good fun and lots of work. I have a device with a camera an lcd 5 buttons and an sd card. it has wifi and bluetooth built in. I can carry it in my pocket. I think i used every possible input and output. it’s like a development board. it has many possible uses but only if i can change the firmware. it’s stuck doing one thing at a time.
Nsh is the shell of NuttX:
https://nuttx.apache.org/docs/latest/applications/nsh/index.html
Although i don’t see vi on there.
This is a different approach. NuttX is a full separate OS aiming for maximum POSIX compatibility on limited resources. BreezyBox just gives you a usable terminal and an apps installer in your familiar ESP-IDF setup, with all its existing drivers, components, OSS examples and tutorials working as usual.
“The snozberries taste like snozberries!”
In case anyone was wondering (like me) who wrote the project, it was [valdanylchuck] on github.
Thanks! I’ll toss a reference into the article. We shouldn’t forget to give credit to the hacker!
definitely, needed TAB on shell ;-)
./ and without ./program working ;-)
ok, what wiyh UTF-8?
How open is this ESP stuff in these days? Does it still rely on binary blobs for Wifi and other stuff, or are there alternatives for those?
I’ve been curious for a uC based operating system with a CLI for quite a long time, but I don’t like the ESP much because of those blobs. It both surprises and annoys me that very few people adhere to FOSS ideals as soon as something is “cheap”.
But then again, FreeRTOS runs on many uC’s and if the sourcecode for this interpreter is available, it can probably be ported to a bunch of other uC families relatively easily. But a platform like this only really shines if there is a considerable community around it and a contribution of programs from multiple people.
https://duckduckgo.com/?q=esp32%20wifi%20blob%20rust%20reverse%20engineered&t=ftsa
Looking forward to people who add this to the t-deck, or t-watch, or all those other ESP32 devices lilygo has been churning out.