Héberger un site web sur une cigarette électronique jetable
(bogdanthegeek.github.io)- Projet expérimental consistant à faire tourner un serveur web à l’aide du microcontrôleur ARM Cortex-M0+ peu puissant intégré dans une cigarette électronique jetable
- Analyse de la puce PY32F002B de PUYA, dotée de 24 Kio de flash et 3 Kio de RAM, avec mise en œuvre d’une connexion réseau en mode SLIP
- Portage des communications TCP/IP et des fonctions de serveur HTTP via un tty virtuel à l’aide du semihosting, du protocole SLIP et de la pile TCP/IP uIP
- Le système était au départ très lent, mais l’optimisation des buffers et l’amélioration du traitement des données ont fortement accru la réactivité et la vitesse de chargement des pages
- Même dans un environnement à très faible mémoire, il a été possible d’exécuter du code serveur dynamique et de fournir des endpoints API
- Le code est publié ; un hébergement réel est possible, mais les ressources comme la mémoire restent très limitées
Introduction
- L’auteur précise d’abord que cet article n’est pas servi directement par le serveur web tournant sur la cigarette électronique jetable, mais qu’un autre serveur fournit le même contenu
- Un exemple de fonctionnement réel est visible sur http://ewaste.fka.wtf/
Contexte
- Depuis plusieurs années, l’auteur récupère des cigarettes électroniques jetables auprès de connaissances afin de recycler les batteries
- Il s’est récemment intéressé au fait que ces appareils deviennent de plus en plus sophistiqués, avec l’apparition de USB-C et de batteries rechargeables
- En les démontant, il a découvert un microcontrôleur ARM Cortex-M0+ avec flash intégrée de marque PUYA, une puce bien connue dans le monde des microcontrôleurs à bas coût
- Il a collecté ces microcontrôleurs sur plusieurs modèles, et leur analyse est facilitée par la présence d’un étiquetage des broches de débogage
Matériel utilisé
- Le marquage de la puce était
PUYA C642F15, mais il s’agirait en réalité d’un modèle de la famille PY32F002B - Caractéristiques principales :
- cœur Cortex-M0+ à 24 MHz
- 24 Kio de flash
- 3 Kio de RAM
- plusieurs périphériques sont présents, mais non utilisés dans ce projet
- Les performances sont faibles par rapport à un smartphone classique, mais dans un environnement embarqué, il est tout à fait possible de construire un serveur web minimal
Connexion réseau
- Ce n’était pas l’idée de départ, mais l’auteur a eu l’idée de faire tourner un serveur web en expérimentant le concept de semihosting
- Le semihosting est une méthode permettant de simuler des appels système sur un système ARM embarqué
- en plaçant des valeurs/pointeurs dans les registres puis en déclenchant un breakpoint, le débogueur interprète cela et exécute l’opération demandée
- il sert généralement à transmettre des logs, mais permet aussi une communication bidirectionnelle
- Les périphériques USB série prennent en charge le protocole SLIP (Serial Line Internet Protocol), qui a été exploité comme interface réseau
- Sous Linux (et certains macOS), un environnement réseau SLIP via tty virtuel a été mis en place avec
slattachetsocatpyocd gdb -S -O semihost_console_type=telnet -T $(PORT) $(PYOCDFLAGS) & socat PTY,link=$(TTY),raw,echo=0 TCP:localhost:$(PORT),nodelay & sudo slattach -L -p slip -s 115200 $(TTY) & sudo ip addr add 192.168.190.1 peer 192.168.190.2/24 dev sl0 sudo ip link set mtu 1500 up dev sl0 - La pile TCP/IP retenue est uIP, très légère, ne nécessitant pas de RTOS et facile à porter
- Parmi les exemples fournis avec uIP, l’auteur a utilisé le serveur HTTP et a porté le code SLIP au mode semihosting, réussissant ainsi à démarrer le serveur web
- L’architecture ARM posait un problème d’alignement 16 bits, ce qui a conduit à modifier le script de génération du filesystem et à effectuer une conversion en Perl
Optimisation des performances
- Au départ, le système affichait une réponse très lente : ping à 1,5 s, 50 % de perte de paquets, et plus de 20 secondes pour charger une page
- La cause venait du surcoût important des entrées/sorties au byte
- En exploitant activement les 3 Kio de RAM, un ring buffer a été ajouté afin de fournir les données par lots aux fonctions SLIP
- Les écritures ont elles aussi été regroupées pour le transfert, permettant un nettoyage rapide
- Après optimisation : ping à 20 ms, aucune perte, chargement des pages en 160 ms
- Utilisation totale de la RAM et de la flash :
- flash : 5 116 B sur 24 KB (20,82 %)
- RAM : 1 380 B sur 3 KB (44,92 %)
- La capacité est suffisante pour servir l’ensemble du contenu du blog sans difficulté, et il est même possible d’exécuter du code C côté serveur
Autres fonctions et conclusion
- Des endpoints API ont été implémentés directement pour renvoyer le nombre de requêtes sur la page principale ainsi que l’identifiant unique du microcontrôleur
- Il s’agit d’une expérimentation montrant qu’il est possible d’implémenter jusqu’à un serveur web dynamique et une API sur un matériel extrêmement limité avec un minimum de mémoire
6 commentaires
J’ai vraiment beaucoup apprécié le projet et l’article. En revanche, j’ai été très surpris d’apprendre qu’il existe des cigarettes électroniques jetables, et je me suis dit que là, ce n’était vraiment pas acceptable...
Je ne le savais pas non plus, étant non-fumeur, mais je l’ai découvert récemment en voyant un distributeur automatique de cigarettes électroniques jetables dans un café sans personnel qui a ouvert près de chez moi. Dans les commentaires de Hacker News ci-dessous aussi, la moitié parle de ce gaspillage absurde de ressources. Haha
En y réfléchissant après avoir posté mon commentaire, je me demande comment se fait la vérification d’âge si c’est sous forme de distributeur automatique dans un café sans personnel. Est-ce que le distributeur a aussi une fonction de lecture de pièce d’identité ?..
Je ne fume pas, donc je me demandais de quoi il s’agissait, mais vous voulez dire qu’un produit jetable consomme beaucoup trop de ressources.
Quand on vapote et qu’on a oublié où on a laissé sa cigarette électronique, ou qu’on est en voyage…
acheter un appareil en plus ou fumer des cigarettes classiques, c’est pas vraiment l’idéal, mais quand on a besoin de sa dose de nicotine, on finit par en chercher une au convenience store.
Commentaires Hacker News
Si vous cherchez du matériel à la fois bon marché et puissant, les dongles chinois UZ801 4G LTE (Qualcomm MSM8916) valent aussi le détour. L’appareil ne coûte qu’environ 4 à 5 $, mais offre un matériel impressionnant : 4 Go d’eMMC, 512 Mo de RAM, un vrai modem 4G (avec parfois prise en charge du basculement entre 2 SIM), etc. C’est en pratique un ancien SoC Android, donc il inclut aussi un GPU et un GPS. Une bonne partie du travail de prise en charge de ces dongles a déjà été faite
Infos sur les dongles LTE de la série Zhihe
Projet OpenStick
C’est une bonne option si vous cherchez une plateforme matérielle pour ce type de projet homelab un peu atypique
Pour les débutants, ce guide semble être le meilleur. Pour installer Linux, il faut sauvegarder la partition du firmware puis la reflasher pour que le modem 4G fonctionne. C’est franchement absurde de pouvoir acheter autant de matériel pour seulement 5 dollars. En y ajoutant une batterie externe (ou un montage maison avec une batterie de vape jetable récupérée), on obtient une machine Linux avec Wi‑Fi et 4G utilisable partout
Si vous cherchez des liens vers ce type de SoC ou des produits similaires, Hackaday a un article dédié avec plusieurs références utiles
Article Hackaday
Exemple MSM8916 sur AliExpress
J’ai même trouvé un dongle MSM8916 avec écran intégré (mais sans info sur la RAM)
Ça fait plaisir d’entendre parler du Qualcomm MSM8916. C’était mon vieil ami, le Snapdragon 410. On le trouvait aussi dans le Moto G3 de 2015 (que j’utilise encore parfois pour WhatsApp). La base Android (version 7) reste assez efficace, contre toute attente, tant qu’on ne lui demande pas des tâches trop lourdes. C’est impressionnant de voir que ces anciens chipsets mobiles bénéficient encore d’un support aussi vivant.
Au passage, fait amusant : cette puce faisait partie des premiers processeurs compatibles 64 bits sur Android, mais Motorola n’a pas réussi à porter le système à temps avant la sortie, donc l’appareil ne prenait en charge qu’Android 32 bits
Ça me rappelle les dongles LTE fonctionnant sous Linux que Freedom Pop distribuait. Une fois ouverts, on pouvait même accéder à l’UART
Mon plus gros problème, c’est que
a.) le monde de l’électronique évolue beaucoup trop vite
b.) je manque de compétences et de temps pour fabriquer quelque chose de cool avec ce genre de matériel
J’avais acheté un licheerv nano (du même genre que le luckfox pico ou le Milk-v duo) pour essayer de fabriquer un iPod nano open source avec prise audio USB-C.
Je n’ai jamais réussi à trouver un écran tactile de 2,4 pouces, ou même de moins de 3 pouces, compatible avec le port MPI du licheerv nano.
J’aurais peut-être pu fabriquer un petit lecteur audio portable avec LVGL, mais c’était trop difficile pour moi
Réutiliser ce type d’appareil, c’est vraiment génial. J’imagine bien un jour une ville entière fonctionner grâce à un assemblage de trucs comme ça, dans une ambiance digne d’un film post-apocalyptique.
En même temps, le fait que les vapes jetables embarquent aujourd’hui non seulement des microcontrôleurs mais, d’après de récents articles, aussi des jeux et des écrans, en fait un immense gâchis de déchets électroniques. C’est de la stupidité à plusieurs niveaux
Il y a aussi le cas des tests Covid jetables. Ils embarquent un microcontrôleur et des capteurs optiques, puis affichent les résultats sur téléphone via Bluetooth. On en avait déjà parlé dans une discussion précédente ici
Je savais déjà que les vapes jetables contenaient des batteries lithium parfaitement réutilisables. Rien que ça, c’est déjà un gaspillage sérieux.
Mais là, on parle aussi d’un microcontrôleur et même d’un connecteur USB-C ! Je me demande si ce connecteur est accessible de l’extérieur ou s’il faut démonter complètement le boîtier pour y accéder.
C’est vraiment de la stupidité en couches successives. La valeur du matériel interne doit représenter plus de la moitié du prix réel du produit
Je me demande si les vapes jetables sont vraiment un problème de déchets électroniques particulièrement grave. Il y a déjà énormément de matériel réutilisable dans les téléphones, voitures, ordinateurs portables et tant d’autres objets que nous jetons, sans qu’ils soient correctement pris en charge. J’imagine même que si le matériel des vapes devenait suffisamment standardisé, on pourrait peut-être l’utiliser dans des projets scolaires comme on le fait avec Arduino
Ce genre d’histoire me fait penser à duskOS et à collapseOS
Le simple fait que ce type de produit puisse être vendu montre à quel point la réglementation est insuffisante
Le décalage de spécifications avec les anciens ordinateurs est fascinant. Par exemple, le Commodore 64 utilisait 64 Ko de RAM avec un CPU 8 bits à 1 MHz. Aujourd’hui, même un appareil jetable avec à peine la moitié de cette RAM se retrouve relié à un CPU 32 bits à 24 MHz. Ce qui aurait été inimaginable dans les années 1980 apparaît ainsi sous forme jetable en 2025. C’est étrangement marquant
En réalité, il n’y a que 3 Ko de RAM et 24 Ko de flash. Bien sûr, la vitesse du flash peut parfois être comparable à celle des anciennes mémoires, mais la latence n’a rien à voir
Avec seulement 3 Ko de RAM, il y en a même moins qu’un vieux VIC-20
Le CPU n’a rien de si extraordinaire si on se place dans le contexte des années 1980. En 1987, l’Acorn Archimedes embarquait déjà un processeur ARM à 8 MHz, certes coûteux, mais accompagné d’au moins 512 Ko de RAM
(au passage, je suis sidéré de réaliser que 1987 remonte déjà à 38 ans)
Je suis ravi qu’on montre à quel point ce genre d’appareil peut être utile. Considérer ce type de produit comme « jetable » relève d’une forme de folie. J’ai déjà récupéré des batteries LiPo dans des vapes abandonnées dans la rue, et ce sont des batteries rechargeables avec circuit de charge intégré, pas des composants simplistes. Concevoir quelque chose pour n’être utilisé qu’une seule fois puis jeté, c’est vraiment une dérive regrettable.
C’est en fait une forme extrême d’« irréparabilité ». Le produit est conçu pour empêcher la réutilisation et la recharge, ce qui va à l’encontre à la fois de l’écologie et de l’esprit maker
Il existe aussi des vapes réutilisables, et les boutiques sérieuses ne vendent que ce type de produit. Mais elles sont bien plus chères que les vapes jetables. C’est pour ça que les modèles jetables sont populaires chez les contrebandiers et les mineurs (à cause du prix bas et du risque de confiscation).
Résultat : cela pousse des jeunes à entrer en contact avec des organisations criminelles et à s’endetter auprès d’elles même s’ils n’ont pas d’argent. Les conséquences ressemblent alors à celles des dettes liées à la drogue. Et cela peut ensuite servir de levier pour d’autres formes de criminalité
J’ai vu une vidéo incroyable où quelqu’un fabriquait une batterie de vélo électrique à partir de vapes jetables ramassées dans un festival de musique
Vidéo associée
Je n’arrive pas à comprendre pourquoi les vapes jetables sont légales. Je pensais que les générations après les 386 seraient vraiment plus sensibles au gaspillage des ressources, et je suis déçu
Il y aura forcément un jour un avocat obligé d’expliquer comment un produit avec USB C et batterie rechargeable peut quand même être classé comme « jetable »
En réalité, ce format existe parce qu’étant techniquement réutilisable, il peut être vendu même dans des régions où les vapes jetables sont interdites.
C’est une façon de viser délibérément des utilisateurs qui vont continuer à en racheter et à les jeter
Je ne comprends pas pourquoi quelqu’un achèterait une vape jetable alors qu’il existe des modèles entièrement réutilisables. Honnêtement, je vois surtout un intérêt dans le cadre d’une tentative d’arrêt du tabac
C’est exactement comme les sacs plastiques plus épais vendus 10 centimes à cause de la réglementation sur les sacs jetables. Après tout, ils sont censés être « réutilisables »
Certains produits proposent des pods ou réservoirs remplaçables, mais la plupart n’ont absolument aucune pièce sur laquelle l’utilisateur peut intervenir. Quand le liquide baisse suffisamment, la résistance commence à brûler et tout l’appareil finit à la poubelle. Un magasin affirme bien récupérer les produits usagés pour les démonter et les traiter correctement, mais la plupart des utilisateurs semblent simplement les jeter avec les ordures ménagères
Si l’USB C est là, c’est parce que la batterie n’offre pas une capacité suffisante par rapport à la quantité de liquide embarquée dans le produit. Au final, on peut le recharger 2 ou 3 fois avant que le liquide soit épuisé
Les vapes jetables sont un phénomène dont je ne comprends pas comment la société a pu le normaliser
La société a souvent tendance à considérer comme normal ce qui dispose d’un budget publicitaire
Sans même parler du fait qu’elles peuvent causer des dommages extrêmement graves aux poumons humains en très peu de temps
Préparation à l’apocalypse : des balles, des conserves, de l’eau potable ? Non.
1 200 Geek Bar rangées dans une cage de Faraday
Vive le hacking ! C’est exactement pour ce genre de choses que Hacker News existe, selon moi. Super article et projet très amusant
L’état actuel de la technologie est vraiment étrange. L’IA ne remplace pas notre travail, elle dessine des images, et maintenant on héberge des sites web sur des e-cigarettes. Le seul mot qui me vient pour décrire tout ça, c’est « étrange »
On peut dire que l’auteur a trouvé la plateforme de calcul ultime pour faire tourner de la « vaporware » au sens littéral