4 pontos por GN⁺ 2026-02-09 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2026-02-09
Comentários do Hacker News
  • Projeto realmente muito legal. Vou tentar eu mesmo
    Também vi outros dois projetos relacionados

    1. na comunidade do reddit r/xteinkereader, estão desenvolvendo um app no estilo OS para leitores de e-book chineses baseados em esp32-s3
    2. também existe um projeto de port de Linux para esp32-s3. O S3 tem MMU, mas parece que não está sendo usada neste projeto
      Boot-Linux-ESP32S3-Playground
    • O XTEink usa C3, não ESP32-S3. A placa S3 do OP tem 8MB de PSRAM, mas o C3 tem só 384kB de RAM, o que faz uma grande diferença ao construir um OS embarcado
  • 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

    • Seria ótimo se aparecesse no AliExpress um notebook de US$ 20 baseado nisso
  • 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

  • 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

    • Tenho curiosidade sobre como você lida com compartilhamento de display. Administro vários servidores reaproveitados, mas o orçamento não dá para um KVM de verdade, então gostaria de usar isso no lugar
  • Fico me perguntando se daria para portar isso para rodar também no rp2350

    • Algumas partes provavelmente dariam. O shell é basicamente só linenoise com um pouco de código glue. Não sei como está o suporte a carregamento de ELF no rp2350, mas no ESP-IDF isso é um componente padrão, então há chance
    • O rp2350 suporta FreeRTOS, então um port parecido parece ser bem simples. O código de I/O DMA do Pico é peculiar, mas é um chip bastante poderoso
  • 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

    • Isso mesmo. Houve muitos pedidos pelo shell usado na demo do xcc700, então eu o publiquei. O ESP32-S3 ainda mostrou só uma fração mínima do seu potencial
      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 modelo de memória é plano o suficiente. O problema é que há só cerca de 200kB de RAM tradicional. Em compensação, há 8MB de PSRAM, mas ela exige alinhamento de 4 bytes e é lenta
      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
    • O motivo de um OS geral ser difícil em um SoC normalmente é a ausência de MMU. Para linguagens sem acesso direto a ponteiros, como Java ou JS, isso não importa tanto, mas apps de desktop escritos em C sempre precisam de endereços virtuais consistentes
    • Não estou acostumado com MCU, então queria ver se você poderia explicar melhor 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 BreezyBox ainda está em estágio inicial de desenvolvimento. O que você viu na demo é praticamente tudo. Para se espalhar, mais desenvolvedores precisam adicionar apps e recursos
      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?

    • A maior parte pode ser compilada também para C3, C6 e P4. Mas o xcc700 é específico para CPU Xtensa, então o port é mais difícil
      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