Hospedando um site em um vape descartável
(bogdanthegeek.github.io)- Projeto experimental que colocou um servidor web para rodar usando o microcontrolador ARM Cortex-M0+ de baixo desempenho embutido em um vape descartável
- Análise do chip PY32F002B da PUYA, com 24KiB de flash e 3KiB de RAM, e implementação da conexão de rede via SLIP
- Uso de semihosting, do protocolo SLIP e da pilha TCP/IP uIP para portar comunicação TCP/IP e a função de servidor HTTP por meio de um tty virtual
- Embora inicialmente fosse muito lento, a otimização de buffers e melhorias no processamento de dados aumentaram drasticamente a responsividade e a velocidade de carregamento das páginas
- Mesmo em um ambiente de memória extremamente limitada, foi possível executar código dinâmico no servidor e oferecer endpoints de API
- O código está disponível, e a hospedagem real é possível, embora haja grandes limitações de recursos, como memória
Introdução
- Este texto esclarece primeiro que não está sendo servido diretamente por um servidor web rodando no vape descartável, e sim que o mesmo conteúdo é fornecido por um servidor separado
- É possível ver um exemplo real de funcionamento em http://ewaste.fka.wtf/
Contexto
- Ao longo de alguns anos, o autor coletou vapes descartáveis de conhecidos com o objetivo de reaproveitar as baterias
- Recentemente, chamou atenção o fato de que os vapes descartáveis estão ficando mais sofisticados, passando a incluir USB-C e baterias recarregáveis
- Durante a desmontagem, foi encontrado um microcontrolador ARM Cortex-M0+ com flash embutida da PUYA, um chip bem conhecido na categoria de microcontroladores baratos
- Esses microcontroladores foram coletados de vários modelos, e como havia identificação dos pinos de depuração, a análise ficou mais fácil
Hardware utilizado
- A marcação no chip era
PUYA C642F15, mas acredita-se que ele pertença na prática à família PY32F002B - Principais especificações:
- núcleo Cortex-M0+ de 24MHz
- 24KiB de flash
- 3KiB de RAM
- vários periféricos, embora não tenham sido usados neste projeto
- Em comparação com um smartphone comum, o desempenho é baixo, mas em um ambiente embarcado ainda é perfeitamente viável montar um servidor web simples
Conexão de rede
- A ideia não era inédita, mas ao experimentar o conceito de semihosting, surgiu a proposta de fazer um servidor web rodar dessa forma
- Semihosting é uma forma de simular syscalls em ARM embarcado
- valores/ponteiros são colocados em registradores e, ao chamar um breakpoint, o depurador interpreta isso e executa a operação
- normalmente é usado para envio de logs, mas também permite comunicação bidirecional de dados
- Dispositivos USB serial oferecem suporte ao protocolo SLIP (Serial Line Internet Protocol), e isso foi aproveitado para usá-los como interface de rede
- Em Linux (e em parte no macOS), foi montado um ambiente de rede SLIP por tty virtual com
slattach,socate afinspyocd 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 - A pilha TCP/IP escolhida foi a uIP, por ser muito pequena, não exigir RTOS e ser fácil de portar
- Foi usado o exemplo de servidor HTTP da uIP, com o código SLIP portado para o modelo de semihosting, o que permitiu iniciar o servidor web com sucesso
- Como há um problema de alinhamento de 16 bits na arquitetura ARM, foi necessário modificar o script de geração do filesystem e fazer uma conversão em Perl
Otimização de desempenho
- No estado inicial, a resposta era muito lenta: ping de 1,5 segundo, 50% de perda de pacotes e carregamento de página acima de 20 segundos
- A causa era o grande overhead de entrada e saída byte a byte
- Foi adicionado um ring buffer, aproveitando ao máximo os 3KiB de RAM, e a função SLIP passou a receber dados em lote
- A escrita também foi dividida em lotes para transmissão, permitindo uma limpeza mais rápida
- Após as otimizações, o resultado foi ping de 20ms, sem perdas, e carregamento de página em 160ms
- Uso total de RAM e flash:
- flash: 5.116B de 24KB (20,82%)
- RAM: 1.380B de 3KB (44,92%)
- Há capacidade suficiente para servir todo o conteúdo do blog sem dificuldade, e também é possível executar código C no lado do servidor
Outros recursos e conclusão
- Foram implementados endpoints de API diretamente, retornando o número de requisições à página principal e o ID único do microcontrolador
- Trata-se de um experimento que conseguiu implementar até mesmo servidor web dinâmico e API com hardware extremamente limitado e o mínimo de memória
6 comentários
Gostei muito do projeto e do texto, foi muito divertido acompanhar. Mas fiquei muito surpreso ao saber que existem cigarros eletrônicos descartáveis e achei que isso não é certo...
Eu também não fumo, então não sabia disso, mas descobri recentemente ao ver uma máquina de venda de cigarros eletrônicos descartáveis em um café autônomo que abriu no meu bairro há pouco tempo. Metade dos comentários no Hacker News abaixo também fala sobre o desperdício absurdo de recursos, haha.
Pensando melhor depois de comentar, fiquei curioso sobre como fazem a verificação de idade se for no formato de máquina de venda automática em um café sem funcionários. Será que a máquina também tem alguma função de reconhecimento de documento de identidade..
Como eu não fumo, não entendi do que se tratava de início, mas a questão é que, apesar de serem descartáveis, usam recursos demais, certo?
Quando eu fumava vape, se deixava em algum lugar ou estava viajando...
Comprar outro aparelho ou fumar cigarro comum não era muito a minha, mas a nicotina precisava ser reposta, então eu acabava procurando na loja de conveniência.
Comentários do Hacker News
Se você estiver procurando hardware barato e ao mesmo tempo poderoso, também vale dar uma olhada no dongle UZ801 4G LTE (Qualcomm MSM8916) da China. Esse dispositivo custa só uns $4–5, mas oferece um hardware impressionante: 4GB de eMMC, 512MB de RAM, modem 4G de verdade (às vezes com suporte a troca entre 2 SIMs) etc. Na prática, é um SoC Android antigo, então também inclui GPU e GPS. Já existe bastante trabalho feito para dar suporte a esses dongles
Informações sobre os dongles LTE da série Zhihe
Projeto OpenStick
Se você estiver procurando uma plataforma de hardware para projetos de homelab mais excêntricos como esse, parece uma boa opção
Para iniciantes, este guia parece ser o melhor. Para instalar Linux, é preciso fazer backup da partição de firmware e depois regravá-la para que o modem 4G funcione. É realmente absurdo conseguir tanto hardware por apenas 5 dólares. Se adicionar um power bank (ou fizer um com a bateria de um vape descartado), dá para montar uma máquina Linux com Wi‑Fi e 4G que pode ser usada em qualquer lugar
Se você precisar de links para esse tipo de SoC ou produtos parecidos, o Hackaday tem um artigo dedicado com vários links
Artigo do Hackaday
Exemplo de MSM8916 no AliExpress
Também encontrei um dongle MSM8916 que aparentemente vem com tela embutida (mas sem informação sobre a RAM)
Fico feliz em ouvir falar do Qualcomm MSM8916. Esse era meu velho amigo, o Snapdragon 410. O Moto G3 de 2015 também vinha com esse processador (ainda uso um de vez em quando para WhatsApp). Baseado em Android (versão 7), ele funciona de forma surpreendentemente eficiente, desde que não seja para tarefas pesadas. É impressionante ver que esses chipsets móveis antigos ainda têm suporte e continuam vivos.
Aliás, um detalhe curioso é que esse chip foi um dos primeiros a oferecer suporte a Android 64 bits, mas a Motorola não conseguiu portar isso antes do lançamento e acabou oferecendo só Android 32 bits
Isso me lembra dos dongles LTE com Linux que a Freedom Pop distribuía. Se você desmontasse, até dava para acessar a UART
Meu maior problema é
a.) o mundo da eletrônica está evoluindo rápido demais
b.) por falta de habilidade e tempo, eu não tenho capacidade para fazer algo legal com isso
Há um tempo comprei um licheerv nano (por exemplo, parecido com o luckfox pico e o Milk-v duo) para tentar fazer um iPod nano open source com entrada de áudio USB-C.
Não consegui encontrar uma touchscreen de 2,4 polegadas, ou menor que 3 polegadas, compatível com a porta MPI do licheerv nano.
Talvez desse para fazer um pequeno player de áudio portátil com LVGL, mas era complicado demais para mim
Reutilizar esse tipo de dispositivo é realmente muito legal. Se algum dia uma cidade inteira passasse a funcionar combinando aparelhos assim, eu imaginaria um cenário digno de filme pós-apocalíptico.
Ao mesmo tempo, os vapes descartáveis de hoje em dia trazem não só microcontroladores, mas, segundo reportagens recentes, até jogos e telas. Isso é um desperdício eletrônico gigantesco. São várias camadas de estupidez acumuladas
Outro caso são os testes descartáveis de COVID. Eles trazem microcontrolador e sensor óptico, e mostram o resultado no celular via Bluetooth. Isso também apareceu numa discussão anterior aqui
Eu já sabia das baterias de lítio perfeitamente reutilizáveis dentro dos vapes descartáveis. Só isso já é um desperdício sério.
Mas agora também incluem microcontrolador e conector USB-C! Fico curioso se esse conector é acessível por fora ou se só dá para chegar nele desmontando o pacote.
Realmente são várias camadas de estupidez. Parece que o valor do hardware interno deve ser mais da metade do preço real do produto
Fico me perguntando se os vapes descartáveis são mesmo um caso tão grave de lixo eletrônico. Celulares, carros, notebooks e tantas outras coisas que descartamos também têm muito hardware reaproveitável, e normalmente o destino deles não é muito melhor. Se o hardware dos vapes acabasse se padronizando em algum nível, dá até para imaginar isso sendo usado em projetos escolares como um Arduino
Esse tipo de história me faz lembrar do duskOS e do collapseOS
O simples fato de venderem esse tipo de produto já é prova de que falta regulação
É interessante a diferença de especificações em relação aos computadores antigos. Por exemplo, o Commodore 64 usava 64KB de RAM ligados a uma CPU de 8 bits a 1MHz. Hoje, porém, até um dispositivo descartável com só metade dessa RAM está ligado a uma CPU de 32 bits a 24MHz. Algo que seria inimaginável nos anos 1980 aparece assim, de forma descartável, em 2025. É estranhamente impressionante
Na verdade, são 3KB de RAM e 24KB de flash. Claro, em alguns casos a velocidade da flash pode até lembrar a de memórias antigas, mas a latência não tem comparação
Só tem 3KB de RAM, então ainda é menos que um VIC-20 antigo
A CPU não é tão fantástica assim pelos padrões dos anos 1980. Em 87, o Acorn Archimedes já tinha um processador ARM de 8MHz e, embora fosse caro, vinha com pelo menos 512KB de RAM
(aliás, estou chocado ao perceber que 1987 foi há 38 anos)
Fico feliz de ver o quanto esses dispositivos podem ser úteis. Tratar esse tipo de produto como “descartável” é uma espécie de loucura. Já recuperei baterias LiPo de vapes jogados na rua, e essas baterias são recarregáveis e já vêm com circuito de carga embutido (não é nada muito simples). Decidir projetar algo assim para ser usado uma única vez e jogado fora é realmente um péssimo caminho.
Isso é basicamente o auge do “não pode ser consertado”. Foi projetado para impedir reutilização e recarga, o que vai contra tanto a ideia de produto ecológico quanto o espírito maker
Existem vapes reutilizáveis, e lojas confiáveis trabalham só com esse tipo de produto. Mas eles são bem mais caros que os descartáveis. Por isso, os descartáveis fazem sucesso entre contrabandistas e menores de idade (por causa do baixo preço e do risco de apreensão).
No fim, isso coloca os jovens em contato com organizações criminosas, e eles podem acabar devendo dinheiro mesmo sem terem condições. O impacto é basicamente o mesmo de contrair dívida com drogas. Para cobrir isso, ainda existe o risco de serem explorados em outros crimes
Vi um vídeo incrível de uma pessoa construindo uma bateria de bicicleta elétrica com vapes descartáveis recolhidos em um festival de música
Vídeo relacionado
Não consigo entender por que vapes descartáveis ainda são legais. Eu achei que as gerações depois dos 386 realmente se importariam com desperdício de recursos, então isso é decepcionante
É inevitável que um dia apareça algum advogado tendo de explicar como algo com USB C e bateria recarregável pode ser classificado como “descartável”
Na verdade, o motivo para fazerem nesse formato é que, por ser tecnicamente reutilizável, ele pode ser vendido até em lugares onde vapes descartáveis são proibidos.
É um modelo de venda pensado justamente para explorar usuários que vão recomprar e descartar de propósito o tempo todo
Não entendo por que alguém compraria vape descartável se já existem modelos totalmente reutilizáveis. Sinceramente, só vejo utilidade se for como parte de um esforço para largar o hábito de fumar
É igual à regra das sacolas plásticas, que faz venderem plástico mais grosso por 10 centavos. Afinal, no papel ele é “reutilizável” mesmo
Alguns produtos têm pods/tanques substituíveis, mas a maioria não tem nenhuma peça em que o usuário possa mexer. Quando o líquido baixa um pouco, a bobina começa a queimar, e a estrutura é simplesmente jogar tudo fora. Uma certa loja diz que recolhe usados e os desmonta para dar o destino correto, mas a maioria dos usuários aparentemente só joga no lixo comum
O motivo de colocarem USB C é que a bateria não oferece capacidade suficiente para a quantidade de líquido no produto. No fim, dá para recarregar totalmente 2 ou 3 vezes antes de o líquido acabar
Vapes descartáveis são um fenômeno que me faz não entender como a sociedade conseguiu normalizar isso
A sociedade muitas vezes tende a aceitar como normal aquilo que tem orçamento de publicidade
Sem contar que eles podem causar danos extremamente graves aos pulmões em pouquíssimo tempo
Kit de preparação para o fim do mundo: balas, comida enlatada, água? Não.
São 1.200 Geek Bars dentro de uma gaiola de Faraday
Viva o hacking! É exatamente para esse tipo de conteúdo que eu acho que o Hacker News existe. Foi uma matéria incrível e um projeto divertido
O estado atual da tecnologia é realmente bizarro. A IA não está fazendo nosso trabalho por nós, está desenhando imagens, e agora estamos hospedando sites em cigarros eletrônicos. A única palavra que me vem à cabeça para descrever isso é “bizarro”
Dá para dizer que o autor encontrou a plataforma computacional definitiva para rodar “vaporware” no sentido mais literal da palavra