4 points par GN⁺ 2026-02-09 | 1 commentaires | Partager sur WhatsApp
  • Projet de démonstration qui transforme un microcontrôleur ESP32-S3 en mini-PC à démarrage immédiat, avec shell, éditeur, compilateur et installateur d’apps
  • BreezyBox est un composant de mini-shell pour ESP-IDF, incluant des commandes de type UNIX ainsi que des fonctions vterm et VFS
  • Fonctionne sur la carte Waveshare ESP32-S3-Touch-LCD-7B et peut être facilement adapté à d’autres cartes
  • Après un fork, il est possible de l’exécuter sur sa propre carte ou d’utiliser la sortie standard en codes ANSI via une console USB
  • Publié sous licence MIT avec l’objectif d’élargir l’écosystème

Aperçu de BreezyBox

  • Projet de démonstration permettant d’utiliser un ESP32-S3 comme un PC sans Linux, avec des fonctions de shell, d’éditeur, de compilateur et d’installation d’apps
    • Il vise une expérience proche de celle d’un Raspberry Pi, mais sans la surcharge d’un OS de niveau serveur/desktop
    • BreezyBox est un composant de mini-shell basé sur ESP-IDF, qui met en place un environnement simple d’exécution de commandes
  • L’ESP32-S3 dispose d’une structure de ressources comparable à celle des PC de l’ère DOS, avec en plus des fonctions de communication sans fil
    • Le projet décrit le potentiel de cette puce comme une « technologie petite et élégante », tout en minimisant la taille du code
Publicité

Composition de BreezyBox

  • BreezyBox comprend vterm, VFS, le suivi du CWD, des commandes de type UNIX et un installateur d’apps
    • Le chargeur ELF et les fonctions d’édition de liens dynamiques sont déjà inclus dans les composants ESP-IDF
  • Le nom s’inspire de BusyBox, et l’ensemble prend la forme d’une couche en espace utilisateur fonctionnant sur FreeRTOS
    • Il peut être ajouté à un projet ESP-IDF en une ligne et fonctionne avec les seules entrées/sorties de base

Caractéristiques du dépôt de démonstration

  • Ce dépôt est une implémentation d’exemple de BreezyBox, configurée pour une carte spécifique (Waveshare ESP32-S3-Touch-LCD-7B)
    • BreezyBox délègue l’affichage et la configuration de la carte au firmware de l’utilisateur
    • Les utilisateurs peuvent s’appuyer sur le code pour l’adapter à leur propre carte ou écran
  • L’utilisation du contrôle de label texte LVGL simplifie l’implémentation de la sortie LCD, et l’exécution via une console USB est également possible
Publicité

Utilisation

  • Il est possible de forker puis cloner le dépôt pour l’exécuter sur sa propre carte
    • Testé sur une carte d’environ 40 euros, et également utilisable sur des cartes LCD S3 à bas coût
    • En utilisant une console USB, on peut vérifier la sortie en codes ANSI dans l’IDF Monitor de VSCode ou dans Tabby
  • Le moteur de rendu de police a été écrit à la main, mais il s’agit d’une implémentation optionnelle choisie pour garantir des performances supérieures à 30 FPS

Contributions et extension

  • Le projet est publié sous licence MIT, ce qui permet de le modifier et de le redistribuer librement
  • Éléments pour lesquels des contributions sont demandées
    • Ajout d’apps ELF : il est possible de créer de nouvelles apps en s’appuyant sur les exemples du dépôt breezyapps
    • Exemples de firmware pour diverses cartes : propositions variées bienvenues, en C/C++, avec GUI, portages de jeux rétro, etc.
  • L’objectif est d’encourager davantage d’utilisateurs à exploiter BreezyBox et d’élargir un écosystème d’exemples immédiatement réutilisables

1 commentaires

 
GN⁺ 2026-02-09
Avis Hacker News
  • Projet vraiment génial. Je vais l’essayer moi-même
    J’ai aussi vu deux autres projets liés

    1. la communauté reddit r/xteinkereader développe une app de style OS pour des liseuses chinoises basées sur l’esp32-s3
    2. il existe aussi un projet de portage Linux pour l’esp32-s3. Le S3 a bien une MMU, mais elle ne semble pas utilisée dans ce projet
      Boot-Linux-ESP32S3-Playground
    • XTEink n’utilise pas un ESP32-S3 mais un C3. La carte S3 de l’OP a 8MB de PSRAM, alors que le C3 n’a que 384kB de RAM, ce qui fait une grande différence pour construire un OS embarqué
  • Le fait que le démarrage soit instantané est vraiment génial. Ce genre de projet, ou des choses comme Fruit Jam d’Adafruit, montre bien qu’« enlever la complexité inutile apporte beaucoup »
    J’aimerais donner ça comme premier ordinateur à un enfant

    • J’aimerais voir apparaître sur AliExpress un portable à 20 $ basé là-dessus
  • Je sais maintenant quoi faire le week-end prochain. Je comptais acheter un esp32-s3 pour un autre projet, mais maintenant je vais devoir en prendre deux

  • Je trouve que le rapport qualité-prix de ces cartes est incroyable. Je compte m’en servir comme remplacement de KVM
    En flashant ESP32-Bus-Pirate et en le connectant à un appareil à contrôler à distance, c’est super pratique. La consommation est quasi nulle, donc je le laisse connecté en permanence au Wi-Fi

    • Je me demande comment tu gères le partage de l’affichage. J’administre plusieurs serveurs reconditionnés, et faute de budget pour un vrai KVM, j’aimerais remplacer ça par ce système
  • Je me demande s’il serait possible de le porter pour qu’il tourne aussi sur rp2350

    • Une partie semble possible. Le shell n’est qu’un peu de code glue autour de linenoise. Je ne connais pas l’état du chargement ELF sur rp2350, mais dans ESP-IDF c’est un composant standard, donc il y a peut-être moyen
    • Le rp2350 prend en charge FreeRTOS, donc un portage similaire devrait être assez simple. Le code I/O DMA du Pico est particulier, mais c’est une puce assez puissante
  • Oh, c’est toi qui as créé xcc700 ! Je m’intéresse beaucoup à l’usage des MCU pour du calcul généraliste. Je me demande jusqu’où on peut pousser ça

    • Oui. Il y avait beaucoup de demandes pour le shell utilisé dans la démo xcc700, donc je l’ai publié. Le ESP32-S3 n’a encore montré qu’une infime partie de son potentiel
      Tu te souviens peut-être que FabGL faisait tourner des démos de jeux et d’émulation DOS. Mais avec les versions récentes d’ESP-IDF, c’est difficile à mettre à jour
      Du coup, je suis en train de le reconstruire avec une architecture plus modulaire, pour qu’il soit maintenable dans le temps. Quelqu’un a même réussi à faire tourner une ancienne version de MacOS en simulation
  • Vraiment génial ! Il faut absolument que j’installe ça tout de suite sur un M5Stack Cardputer

  • Sans modèle mémoire plat, ce n’est pas difficile d’implémenter un OS généraliste ? L’Amiga1000 n’avait pas de MMU non plus, mais il avait un modèle mémoire plat. J’imagine qu’il a fallu pas mal de travail compliqué pour contourner ça

    • Le modèle mémoire est suffisamment plat. Le problème, c’est qu’il n’y a qu’environ 200kB de RAM traditionnelle. À côté, il y a 8MB de PSRAM, mais elle exige un alignement sur 4 octets et elle est lente
      La raison pour laquelle un OS généraliste est difficile sur cette plateforme, c’est surtout l’absence de protection mémoire. Mais moi, je voulais simplement faire un shell et un installateur d’apps, donc j’ai pu contourner ça
    • La raison pour laquelle un OS généraliste est difficile sur un SoC, c’est en général l’absence de MMU. Pour des langages comme Java ou JS, qui n’ont pas d’accès direct par pointeur, ce n’est pas vraiment un problème, mais des applis desktop écrites en C ont toujours besoin d’adresses virtuelles cohérentes
    • Je ne connais pas bien les MCU, est-ce que tu pourrais expliquer un peu plus ce problème ?
  • Je découvre BreezyBox pour la première fois, et je trouve ça vraiment intéressant. Je n’ai pas envie de me préoccuper de la config Wi-Fi ou des mises à jour, je veux juste écrire mon appli
    Je ne comprenais pas pourquoi il n’existait pas un simple OS pour microcontrôleur qui prenne ça en charge à ma place. Ça pourrait peut-être en devenir la base
    Je me demande s’il existe un flux de configuration pour les déploiements headless (config Wi-Fi au flashage, déploiement d’un shell distant / d’une interface web, etc.)

    • BreezyBox est encore en phase de développement initiale. Ce que tu as vu dans la démo, c’est à peu près tout. Il faudra que davantage de développeurs ajoutent des applis et des fonctionnalités pour que ça se diffuse
      Un accès web pour la configuration à distance semble faisable. Il y a déjà un serveur web, donc il suffirait de l’étendre pour exécuter du code côté serveur
  • Question de débutant : c’est spécifique au S3, ou ça peut aussi tourner sur C3 ?

    • La plupart des éléments peuvent aussi être compilés pour C3, C6, P4. En revanche, xcc700 est spécifique aux CPU Xtensa, donc le portage est plus compliqué
      Les binaires ELF installés via eget doivent aussi être recompilés pour RISC-V. Ce serait probablement une bonne idée d’ajouter la prise en charge d’un manifeste pour distinguer les ELF selon la plateforme
      Il faut aussi tenir compte de la quantité de PSRAM disponible