4 puntos por GN⁺ 2026-02-09 | 1 comentarios | Compartir por WhatsApp
  • Proyecto de demostración que convierte el microcontrolador ESP32-S3 en una mini PC de arranque inmediato, ofreciendo shell, editor, compilador e instalador de apps
  • BreezyBox es un componente de mini shell para ESP-IDF, que incluye comandos tipo UNIX, vterm y funciones de VFS
  • Funciona en la placa Waveshare ESP32-S3-Touch-LCD-7B y puede adaptarse fácilmente a otras placas
  • Después de hacer un fork, puede ejecutarse en tu propia placa o aprovechar la salida estándar con códigos ANSI mediante la consola USB
  • Publicado bajo licencia MIT con el objetivo de expandir el ecosistema

Resumen de BreezyBox

  • Proyecto de demostración para usar el ESP32-S3 como si fuera una PC incluso sin Linux, con funciones de shell, editor, compilador e instalación de apps
    • Apunta a una experiencia de uso similar a Raspberry Pi, pero sin la sobrecarga de un SO de nivel servidor/escritorio
    • BreezyBox es un componente de mini shell basado en ESP-IDF que construye un entorno simple de ejecución de comandos
  • El ESP32-S3 tiene una estructura de recursos similar a la de las PC de la era DOS e incluye capacidades de comunicación inalámbrica
    • El proyecto describe el potencial de este chip como una “tecnología pequeña y elegante”, minimizando al máximo el tamaño del código

Componentes de BreezyBox

  • BreezyBox incluye vterm, VFS, seguimiento de CWD, comandos tipo UNIX e instalador de apps
    • El cargador ELF y la función de enlazado dinámico ya están incluidos en los componentes de ESP-IDF
  • El nombre está inspirado en BusyBox y adopta la forma de una capa de espacio de usuario que corre sobre FreeRTOS
    • Puede añadirse a un proyecto ESP-IDF con una sola línea y funciona incluso con solo E/S básica

Características del repositorio demo

  • Este repositorio es una implementación de ejemplo de BreezyBox, configurada para una placa específica (Waveshare ESP32-S3-Touch-LCD-7B)
    • BreezyBox delega la configuración de la pantalla y de la placa al firmware del usuario
    • El usuario puede tomar el código como referencia y modificarlo para su propia placa o pantalla
  • Usando el control de etiqueta de texto de LVGL, la implementación de salida en LCD se simplifica, y también puede ejecutarse en una consola USB

Cómo usarlo

  • Puedes hacer fork y luego clonar el repositorio para ejecutarlo en tu propia placa
    • Se probó en una placa de unos 40 euros y también puede usarse en placas S3 LCD de bajo costo
    • Con la consola USB puedes ver la salida con códigos ANSI en IDF Monitor de VSCode o en Tabby
  • El renderizador de fuentes fue escrito a mano, pero esto fue una implementación opcional elegida para asegurar un rendimiento de más de 30 FPS

Contribución y expansión

  • El proyecto está publicado bajo licencia MIT, por lo que puede modificarse y redistribuirse libremente
  • Elementos para contribuir
    • Agregar apps ELF: se pueden crear nuevas apps tomando como referencia los ejemplos del repositorio breezyapps
    • Ejemplos de firmware para varias placas: se proponen distintos formatos, como base C/C++, con GUI o incluso ports de juegos retro
  • El objetivo es que más usuarios aprovechen BreezyBox y expandan un ecosistema de ejemplos fácilmente replicables

1 comentarios

 
GN⁺ 2026-02-09
Comentarios de Hacker News
  • Es un proyecto realmente genial. Pienso probarlo yo mismo
    También vi otros dos proyectos relacionados

    1. en la comunidad de Reddit r/xteinkereader están desarrollando una app estilo OS para lectores de libros electrónicos chinos basados en esp32-s3
    2. también existe un proyecto de port de Linux para esp32-s3. El S3 tiene MMU, pero parece que en este proyecto no se usa
      Boot-Linux-ESP32S3-Playground
    • XTEink no usa ESP32-S3 sino C3. La placa S3 del OP tiene 8MB de PSRAM, pero el C3 solo tiene 384kB de RAM, así que eso hace una gran diferencia al construir un OS embebido
  • Está buenísimo que arranque al instante. Ver proyectos como este o Fruit Jam de Adafruit demuestra que “si eliminas la complejidad innecesaria, ganas mucho”
    Me gustaría darle algo así a un niño como su primera computadora

    • Ojalá salga en AliExpress una laptop de $20 basada en esto
  • Ya se decidió qué voy a hacer el próximo fin de semana. Iba a comprar un esp32-s3 para otro proyecto, pero ahora voy a tener que comprar dos

  • Creo que la relación precio/rendimiento de estas placas es una locura. Planeo usar esto como reemplazo de un KVM
    Si le flasheas ESP32-Bus-Pirate y lo conectas al equipo que vas a controlar de forma remota, resulta muy práctico. Además casi no consume energía, así que lo dejo siempre conectado al Wi-Fi

    • Me pregunto cómo manejan el uso compartido de pantalla. Administro varios servidores reacondicionados y, como no me alcanza el presupuesto para un KVM formal, quisiera reemplazarlo con esto
  • Me pregunto si se podría portar para que también corra en rp2350

    • Parece que una parte sí. El shell básicamente solo tiene linenoise con un poco de glue code. No sé cómo está el tema de la carga ELF en rp2350, pero en ESP-IDF es un componente estándar, así que hay posibilidades
    • rp2350 soporta FreeRTOS, así que un port similar probablemente sería bastante sencillo. El código de I/O DMA del Pico es peculiar, pero es un chip bastante potente
  • Oh, ¿eres la persona que hizo xcc700! Me interesa mucho usar MCUs para cómputo de propósito general. Tengo curiosidad por saber hasta dónde se puede llevar

    • Sí. Como hubo muchas solicitudes por el shell usado en la demo de xcc700, lo publiqué. El ESP32-S3 todavía apenas ha mostrado una fracción mínima de su potencial
      Tal vez recuerdes que hace tiempo FabGL corría demos de juegos y emulación de DOS. Pero en las versiones recientes de ESP-IDF es difícil de actualizar
      Así que lo estoy rehaciendo con una estructura más modular. Para que pueda mantenerse por mucho tiempo. Incluso hubo quien logró correr versiones viejas de MacOS mediante simulación
  • ¡Está increíble! Tengo que instalar esto ya mismo en la M5Stack Cardputer

  • Sin un modelo de memoria plana, ¿no sería difícil implementar un OS general? La Amiga1000 no tenía MMU, pero sí un modelo de memoria plano. Imagino que para evitar eso debió hacer falta bastante trabajo complejo

    • El modelo de memoria es lo suficientemente plano. El problema es que solo hay unos 200kB de RAM tradicional. En cambio hay 8MB de PSRAM, pero requiere alineación de 4 bytes y es lenta
      La razón por la que un OS general es difícil en esta plataforma es la ausencia de protección de memoria. Pero yo solo quería hacer un shell y un instalador de apps, así que hasta ahí pude resolverlo
    • La razón por la que un OS general suele ser difícil en un SoC es normalmente la ausencia de MMU. En lenguajes como Java o JS, donde no hay acceso por punteros, eso no importa tanto, pero las apps de escritorio escritas en C siempre necesitan direcciones virtuales consistentes
    • No estoy familiarizado con las MCU, ¿podrías explicar un poco más este problema?
  • Esta es la primera vez que veo BreezyBox y me parece realmente interesante. No quiero preocuparme por la configuración de Wi-Fi o las actualizaciones; solo quiero escribir mi app
    No entendía por qué no existía un OS para microcontroladores simple que se encargara de esas cosas. Esto podría convertirse en la base de algo así
    Me pregunto si existe un flujo de configuración para despliegues headless (configurar Wi-Fi al flashear, desplegar shell remota/web UI, etc.)

    • BreezyBox todavía está en una fase temprana de desarrollo. Casi todo lo que viste en la demo es lo que hay por ahora. Necesita que más desarrolladores agreguen apps y funciones para poder expandirse
      El acceso web para configuración remota probablemente se puede implementar. Ya existe un servidor web, así que bastaría con extenderlo para ejecutar código del lado del servidor
  • Pregunta de principiante: ¿esto es exclusivo para S3 o también podría correr en C3?

    • La mayor parte se puede compilar también para C3, C6 y P4. Sin embargo, xcc700 es solo para CPU Xtensa, así que portarlo sería más difícil
      Los binarios ELF que se instalan con eget también tendrían que recompilarse para RISC-V. Sería buena idea agregar soporte de manifest para distinguir los ELF por plataforma
      También habría que considerar cuánta PSRAM hay disponible