- Projeto de demonstração que transforma o microcontrolador ESP32-S3 em um pequeno PC com boot imediato, oferecendo shell, editor, compilador e instalador de apps
- BreezyBox é um componente de mini shell para ESP-IDF, com comandos semelhantes aos do UNIX,
vterm e recursos de VFS
- Funciona na placa Waveshare ESP32-S3-Touch-LCD-7B e pode ser adaptado facilmente para outras placas
- Após fazer fork, é possível executá-lo em sua própria placa ou usar a saída de código ANSI padrão via console USB
- Disponível sob licença MIT, com o objetivo de expandir o ecossistema
Visão geral do BreezyBox
- Projeto de demonstração que permite usar o ESP32-S3 como um PC mesmo sem Linux, oferecendo shell, editor, compilador e instalação de apps
- Busca uma usabilidade semelhante à do Raspberry Pi, mas sem a sobrecarga de um SO de nível servidor/desktop
- O BreezyBox é um componente de mini shell baseado em ESP-IDF, que monta um ambiente simples de execução de comandos
- O ESP32-S3 tem uma estrutura de recursos semelhante à de PCs da era do DOS, além de incluir conectividade sem fio
- O projeto descreve o potencial desse chip como “tecnologia pequena e elegante”, minimizando ao máximo o volume de código
Componentes do BreezyBox
- O BreezyBox inclui
vterm, VFS, rastreamento de CWD, comandos semelhantes aos do UNIX e instalador de apps
- O loader ELF e o recurso de linkagem dinâmica já estão incluídos como componentes do ESP-IDF
- O nome foi inspirado no BusyBox, e ele assume a forma de uma camada de user space executada sobre o FreeRTOS
- Pode ser adicionado a um projeto ESP-IDF com uma única linha e funciona apenas com entrada e saída básicas
Características do repositório de demonstração
- Este repositório é uma implementação de exemplo do BreezyBox, configurada para uma placa específica (Waveshare ESP32-S3-Touch-LCD-7B)
- O BreezyBox delega as configurações de display e da placa ao firmware do usuário
- O usuário pode usar o código como referência e ajustá-lo para sua própria placa ou display
- Com o controle de rótulo de texto do LVGL, a implementação da saída para LCD fica simples, e também é possível executá-lo no console USB
Como usar
- É possível fazer fork e clonar o repositório para executá-lo em sua própria placa
- Foi testado em uma placa de cerca de 40 euros e também pode ser usado em placas LCD S3 de baixo custo
- Usando o console USB, é possível ver a saída de código ANSI no IDF Monitor do VSCode ou no Tabby
- O renderizador de fontes foi escrito manualmente, mas isso foi uma implementação opcional para garantir desempenho acima de 30 FPS
Contribuição e expansão
- O projeto é distribuído sob licença MIT, permitindo modificação e redistribuição livremente
- Itens solicitados para contribuição
- Adicionar apps ELF: é possível criar novos apps tomando como referência os exemplos do repositório breezyapps
- Exemplos de firmware para várias placas: sugestões incluem versões em C/C++, com GUI, ports de jogos retrô e outros formatos
- O objetivo é permitir que mais usuários aproveitem o BreezyBox e expandir um ecossistema de exemplos prontos para serem reproduzidos imediatamente
1 comentários
Comentários do Hacker News
Projeto realmente muito legal. Vou tentar eu mesmo
Também vi outros dois projetos relacionados
Boot-Linux-ESP32S3-Playground
O fato de iniciar instantaneamente é muito legal. Quando vejo projetos assim ou algo como o Fruit Jam da Adafruit, isso mostra que “há muito a ganhar ao remover complexidade desnecessária”
Eu gostaria de dar algo assim como o primeiro computador de uma criança
Já decidi o que vou fazer no próximo fim de semana. Eu ia comprar um esp32-s3 para outro projeto, mas agora vou ter que comprar dois
Blog comparando opções de SoC ESP32
Acho que o custo-benefício dessas placas é absurdo. Estou planejando usar isso como substituto de KVM
Se você gravar ESP32-Bus-Pirate e conectar ao dispositivo que quer controlar remotamente, fica muito prático. O consumo de energia também é quase nulo, então deixo sempre conectado ao Wi‑Fi
Fico me perguntando se daria para portar isso para rodar também no rp2350
Ah, então você é quem fez o xcc700! Tenho muito interesse em usar MCU para computação de propósito geral. Fico curioso até onde isso pode ir
Talvez você se lembre de quando o FabGL rodava demos de jogos e emulação de DOS. Mas ele é difícil de atualizar nas versões mais novas do ESP-IDF
Então estou refazendo isso com uma estrutura mais modular, para que possa ser mantido por muito tempo. Alguém chegou até a rodar versões antigas do MacOS em simulação
Muito legal! Preciso colocar isso imediatamente no M5Stack Cardputer
Sem um modelo de memória plana, não fica difícil implementar um OS geral? O Amiga1000 também não tinha MMU, mas tinha um modelo de memória plano. Parece que deve ter dado bastante trabalho contornar isso
O motivo de um OS geral ser difícil nessa plataforma é a ausência de proteção de memória. Mas eu só queria fazer um shell e um instalador de apps, então consegui contornar esse ponto
Foi a primeira vez que conheci o BreezyBox e achei realmente interessante. Eu não queria me preocupar com configuração de Wi‑Fi ou atualizações, queria só escrever meu app
Não entendia por que não existia um OS simples para microcontroladores que cuidasse disso para mim. Isso talvez possa virar essa base
Fico curioso se existe um fluxo de configuração para deploy headless (configurar Wi‑Fi ao gravar, implantar shell remoto/web UI etc.)
O acesso web para configuração remota provavelmente é viável. Já existe um servidor web, então bastaria expandi-lo para executar código do lado do servidor
Pergunta de iniciante: isso é exclusivo do S3 ou também roda no C3?
Os binários ELF instalados com eget também precisam ser recompilados para RISC-V. Talvez fosse bom adicionar suporte a manifest para distinguir ELFs por plataforma
Também é preciso considerar quanta PSRAM está disponível