Hospedar un sitio web en un cigarrillo electrónico desechable
(bogdanthegeek.github.io)- Proyecto experimental que ejecuta un servidor web usando el microcontrolador ARM Cortex-M0+ de baja potencia integrado en un cigarrillo electrónico desechable
- Se analizó el chip PY32F002B de PUYA, con 24KiB de flash y 3KiB de RAM, e implementó conectividad de red mediante SLIP
- Usando Semihosting, el protocolo SLIP y la pila TCP/IP uIP, se porteó comunicación TCP/IP y funcionalidad de servidor HTTP a través de un tty virtual
- Al principio era muy lento, pero mediante optimización de búferes y mejoras en el manejo de datos se incrementaron mucho la velocidad de respuesta y la carga de páginas
- Incluso en un entorno de memoria muy limitada, se logró ejecutar código dinámico del servidor y ofrecer endpoints de API
- El código está publicado; el hosting real es posible, pero las limitaciones de recursos como la memoria son grandes
Introducción
- Antes que nada, el autor aclara que este texto no está siendo servido directamente desde el servidor web ejecutándose en el cigarrillo electrónico desechable, sino que el mismo contenido se ofrece desde un servidor aparte
- Se puede ver un ejemplo de funcionamiento real en http://ewaste.fka.wtf/
Contexto
- Durante varios años, el autor reunió cigarrillos electrónicos desechables de conocidos con el objetivo de reutilizar sus baterías
- Últimamente le llamó la atención que estos dispositivos se han ido sofisticando y han empezado a incluir USB-C y baterías recargables
- Mientras los desmontaba, encontró un microcontrolador ARM Cortex-M0+ con flash integrada de una marca llamada PUYA, un chip bien conocido dentro de los microcontroladores de bajo costo
- Recolectó estos microcontroladores de varios modelos y, como tenían etiquetados los pines de depuración, resultó fácil analizarlos
Hardware utilizado
- La marca del chip era
PUYA C642F15, pero se estima que en realidad pertenece a la familia PY32F002B - Especificaciones principales:
- Núcleo Cortex-M0+ a 24MHz
- 24KiB de flash
- 3KiB de RAM
- Hay varios periféricos, pero no se usaron en este proyecto
- Aunque su rendimiento es bajo comparado con un smartphone común, en un entorno embebido es totalmente posible construir un servidor web simple
Conexión de red
- No fue una idea completamente original, pero al experimentar con el concepto de semihosting surgió la idea de ejecutar un servidor web
- Semihosting es una forma de simular syscalls en sistemas ARM embebidos
- Se colocan valores o punteros en registros y, al invocar un breakpoint, el depurador lo interpreta y procesa la operación
- Normalmente se usa para enviar logs, pero también permite comunicación de datos bidireccional
- Los dispositivos USB serial admiten el protocolo SLIP (Serial Line Internet Protocol), y eso se aprovechó para usarlos como interfaz de red
- En Linux (y en algunos macOS), se construyó un entorno de red SLIP mediante tty virtual usando
slattachysocat, entre otrospyocd 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 - Se eligió uIP como pila TCP/IP porque es muy pequeña, no requiere RTOS y es fácil de portar
- Se aprovechó el ejemplo de servidor HTTP de uIP y se porteó el código de SLIP al esquema de semihosting, logrando arrancar el servidor web
- Debido a un problema de alineación de 16 bits en la arquitectura ARM, se modificó el script de generación del filesystem y se hizo una conversión con Perl
Optimización de velocidad
- En el estado inicial, mostraba una respuesta extremadamente lenta: ping de 1.5 segundos, 50% de pérdida de paquetes y más de 20 segundos para cargar la página
- La causa era el gran overhead de la entrada/salida por bytes individuales
- Aprovechando al máximo los 3KiB de RAM, se añadió un ring buffer y se mejoró la estructura para suministrar datos por bloques a las funciones SLIP
- La escritura también se dividió en lotes para procesar la transmisión y permitir una limpieza rápida
- Como resultado de la optimización, se alcanzó ping de 20ms, sin pérdidas, y carga de página en 160ms
- Uso total de RAM y flash:
- Flash: 5,116B de 24KB (20.82%)
- RAM: 1,380B de 3KB (44.92%)
- Incluso todo el contenido del blog puede servirse sin problemas, y también es posible ejecutar código C del lado del servidor
Otras funciones y cierre
- Se implementaron directamente endpoints de API que devuelven el número de solicitudes a la página principal y el ID único del microcontrolador
- Es un experimento que llegó a implementar un servidor web dinámico y una API con hardware de prestaciones extremadamente limitadas y la mínima memoria posible
6 comentarios
Disfruté mucho el proyecto y el artículo. Pero me sorprendió muchísimo enterarme de que existen los cigarrillos electrónicos desechables, y siento que esto no está bien...
Yo tampoco fumo, así que no lo sabía, pero hace poco me di cuenta al ver una máquina expendedora de cigarrillos electrónicos desechables en un café sin personal que abrió hace poco en mi barrio. Parece que la mitad de los comentarios de Hacker News de abajo también tratan sobre el absurdo desperdicio de recursos. Jaja
Ahora que lo pienso después de dejar un comentario, me da curiosidad cómo verifican la edad si en un café sin personal hay máquinas expendedoras. ¿Las máquinas expendedoras también tienen alguna función para reconocer la identificación?
Como no fumo, no entendía de qué iba, pero entonces se refiere a que, para ser desechables, usan demasiados recursos.
Cuando fumas vape desechable y lo dejas en algún lado o andas de viaje... Terminas buscándolo en la tienda de conveniencia cuando piensas que comprar otro dispositivo o fumar cigarrillos tradicionales no va mucho, pero igual necesitas recargar nicotina.
Comentarios en Hacker News
Si buscas hardware barato pero potente, también vale la pena echarle un vistazo al dongle UZ801 4G LTE (Qualcomm MSM8916) de China. Este dispositivo cuesta apenas unos $4~5, pero ofrece un hardware impresionante: 4GB de eMMC, 512MB de RAM, un módem 4G real (a veces con soporte para cambio entre 2 SIM), entre otras cosas. Básicamente es un SoC viejo de Android, así que también incluye GPU y GPS. Ya se ha avanzado bastante en el soporte para estos dongles
Información sobre los dongles LTE serie Zhihe
Proyecto OpenStick
Si estás buscando una plataforma de hardware para proyectos de homelab raros como este, encaja muy bien
Para principiantes, esta guía parece la mejor. Para instalar Linux, hay que respaldar la partición del firmware y volver a flashearla para que funcione el módem 4G. De verdad es absurdo poder comprar tanto hardware por solo 5 dólares. Si además le sumas una power bank (o una hecha por ti con una batería rescatada de un vape desechable), terminas con una máquina Linux con WiFi y 4G que puedes usar en cualquier parte
Si necesitas enlaces sobre este tipo de SoC o productos similares, Hackaday tiene un artículo dedicado con varios links
Artículo de Hackaday
Ejemplo de MSM8916 en AliExpress
Incluso encontré un dongle MSM8916 que al parecer trae pantalla integrada (aunque no hay información sobre la RAM)
Me da gusto oír hablar del Qualcomm MSM8916. Este era mi viejo amigo, el Snapdragon 410. El Moto G3 de 2015 también traía ese procesador (y todavía a veces lo uso para WhatsApp). Sobre una base Android (versión 7), funciona sorprendentemente bien mientras no se le pidan tareas pesadas. Me impresiona que estos chipsets móviles antiguos sigan teniendo soporte y vida útil.
Como dato curioso, este chip fue uno de los primeros en soportar Android de 64 bits, pero Motorola no alcanzó a portar el sistema antes del lanzamiento, así que solo terminó soportando Android de 32 bits
Esto me recuerda al dongle LTE que Freedom Pop regalaba y que corría Linux. Si lo abrías, hasta podías acceder por UART
Mi mayor problema es
a.) el mundo de la electrónica evoluciona demasiado rápido
b.) me faltan las habilidades y el tiempo para hacer algo cool con esto
En algún momento compré una licheerv nano (por ejemplo, similar a la luckfox pico o la Milk-v duo) con la idea de hacer un iPod nano open source con jack de audio usb-c.
No pude encontrar una pantalla táctil de 2.4 pulgadas, o de menos de 3 pulgadas, compatible con el puerto MPI de la licheerv nano.
Tal vez se podría hacer un reproductor de audio pequeño y portátil con LVGL, pero para mí era demasiado complicado
Reutilizar este tipo de dispositivos está realmente genial. Si algún día una ciudad entera operara combinando aparatos así, uno se imagina una ambientación sacada de una película postapocalíptica.
Por otro lado, los vapes desechables de hoy ya no solo traen microcontroladores; según reportes recientes, también incluyen juegos y pantallas. Es una cantidad enorme de basura electrónica. Es una estupidez en múltiples capas
Otro caso son las pruebas desechables de COVID. Traen microcontrolador y sensores ópticos, y muestran el resultado en el teléfono por Bluetooth. Ya se había hablado de eso en una discusión anterior aquí
Ya sabía de las baterías de litio perfectamente reutilizables dentro de los vapes desechables. Solo eso ya es un desperdicio serio.
¡Pero ahora además incluyen microcontrolador y conector USB-C! Me pregunto si se puede acceder a ese conector desde afuera o si hay que desarmar el paquete para usarlo.
De verdad es una estupidez en múltiples capas. Apostaría a que el valor del hardware interno representa más de la mitad del precio real del producto
Me pregunto si los vapes desechables realmente son un caso tan grave de basura electrónica. Muchos de los objetos que tiramos, como teléfonos, autos o laptops, también tienen bastante hardware reutilizable, y por lo general tampoco se gestionan bien. Incluso me hace pensar que, si el hardware de los vapes se estandarizara un poco, hasta podría usarse en proyectos escolares al estilo Arduino
Este tipo de cosas me hace pensar en duskOS y collapseOS
El simple hecho de que se permita vender estos productos ya es prueba de que falta regulación
Es interesante el desajuste de especificaciones frente a las computadoras antiguas. Por ejemplo, la Commodore 64 usaba 64KB de RAM conectados a una CPU de 8 bits y 1MHz. Pero ahora incluso un dispositivo desechable con apenas la mitad de esa RAM está conectado a una CPU de 32 bits y 24MHz. Algo que habría sido inimaginable en los años 80 aparece en 2025 como un artículo desechable. Tiene algo de impactante
En realidad son 3KB de RAM y 24KB de flash. Claro, la velocidad de la flash a veces puede ser comparable con memorias antiguas, pero la latencia ni se compara
Solo tiene 3KB de RAM, así que incluso menos que una vieja VIC-20
La CPU no sería tan extraordinaria para los estándares de los 80. En el 87, la Acorn Archimedes traía un procesador ARM de 8MHz y, aunque era cara, se usaba con al menos 512KB de RAM
(por cierto, me sorprende darme cuenta de que 1987 fue hace ya 38 años)
Me alegra ver cuánto se les puede sacar a estos dispositivos. Tratar productos así como “desechables” es una especie de locura. He recuperado baterías LiPo de vapes tirados en la calle, y son baterías recargables con circuito de carga integrado, no algo básico. Diseñar algo así para que se use una sola vez y se tire es una pésima tendencia.
Esto es prácticamente el extremo máximo de la “irreparabilidad”. Está diseñado para impedir la reutilización y la recarga, así que va en contra tanto de lo ecológico como del espíritu maker
Sí existen vapes reutilizables, y las tiendas confiables solo venden de esos. Pero son mucho más caros que los desechables. Por eso los desechables son populares entre contrabandistas y menores de edad (por el bajo costo y el riesgo de confiscación).
Al final, eso empuja a los jóvenes a relacionarse con organizaciones criminales y a endeudarse con ellas incluso si no tienen dinero. Las consecuencias se parecen mucho a una deuda por drogas. Incluso puede prestarse para involucrarlos en otros delitos para “cubrir” eso
Una vez vi un video increíble de alguien que hizo una batería para bicicleta eléctrica con vapes desechables recolectados en un festival de música
Video relacionado
No entiendo por qué los vapes desechables siguen siendo legales. Pensé que las generaciones posteriores a la 386 sí se preocuparían de verdad por el desperdicio de recursos, pero me decepciona
Seguro algún día aparecerá un abogado que tenga que explicar cómo algo con USB C y batería recargable puede clasificarse como “desechable”
En realidad, la razón de hacerlo así es que, al ser técnicamente reutilizable, se puede vender incluso en lugares donde los vapes desechables están prohibidos.
Es una forma de venta pensada para aprovechar a cierto tipo de usuario que igual va a seguir comprando y tirando el producto a propósito
No entiendo por qué alguien compraría un vape desechable cuando existen vapes totalmente reutilizables. Sinceramente, solo le veo sentido como una herramienta para dejar el hábito de fumar
Es exactamente como la regulación de las bolsas plásticas, donde terminan vendiendo bolsas más gruesas por 10 centavos. Total, supuestamente son “reutilizables”
Algunos productos ofrecen pods o tanques reemplazables, pero la mayoría no tiene ninguna pieza que el usuario pueda intervenir. Cuando el líquido baja cierto nivel, la resistencia empieza a quemarse y toca tirar todo el dispositivo. Hay una tienda que dice recoger los usados para desarmarlos y procesarlos correctamente, pero la mayoría de la gente parece simplemente tirarlos a la basura común
La razón de incluir USB C es que la batería no alcanza a ofrecer suficiente capacidad en relación con la cantidad de líquido que trae el producto. Al final, permite unas 2 o 3 recargas completas antes de que se acabe el líquido
Los vapes desechables son una de esas cosas que hacen difícil entender cómo la sociedad normalizó esto
La sociedad a menudo tiende a aceptar como normal aquello que tiene presupuesto publicitario
Y eso sin mencionar que pueden causar daños gravísimos en los pulmones de una persona en muy poco tiempo
Preparación para el fin del mundo: ¿balas, comida enlatada, agua? No.
1,200 Geek Bar guardados dentro de una jaula de Faraday
¡Larga vida al hacking! Justo para este tipo de cosas existe Hacker News, en mi opinión. Fue un gran artículo y un proyecto muy divertido
El estado actual de la tecnología es realmente extraño. La IA no está reemplazando nuestro trabajo, sino pintando cuadros, y ahora además estamos alojando sitios web en un cigarrillo electrónico. La única palabra que se me ocurre para describir esto es “extraño”
Se podría decir que el autor encontró la plataforma informática definitiva para ejecutar “vaporware” en el sentido más literal posible