Hacker News Digest

15 сентября 2025 г. в 17:53 • bogdanthegeek.github.io • ⭐ 1304 • 💬 441

OriginalHN

#arm-cortex-m0#slip#uip#pyocd#socat#qualcomm-msm8916#lte#bluetooth#nginx

Hosting a website on a disposable vape

Хостинг сайта на одноразовой вейп-системе

Примечание: эта статья НЕ размещена на сервере, работающем на одноразовой вейп-устройстве. Реальный пример можно посмотреть здесь.

Предыстория

Я несколько лет собирал одноразовые вейпы от друзей и семьи, изначально извлекая из них батареи для «будущих» проектов. Современные устройства стали сложнее: с USB-C и перезаряжаемыми аккумуляторами. При разборе одного из таких устройств я обнаружил микроконтроллер PUYA — ARM Cortex-M0+.

Технические характеристики

Микроконтроллер PY32F002B имеет:

  • 24 МГц Cortex-M0+
  • 24 КБ флеш-памяти
  • 3 КБ оперативной памяти
  • Несколько периферийных устройств (не использовались)

Подключение к сети

Идея использовать вейп как веб-сервер пришла после экспериментов с semihosting — системными вызовами для embedded-микроконтроллеров.

Для связи использовался протокол SLIP (Serial Line Internet Protocol), эмулирующий модемное соединение через последовательный порт. С помощью pyOCD и socat создаётся виртуальный tty-интерфейс:

pyocd 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

Для работы с TCP/IP был выбран легковесный стек uIP, не требующий RTOS и легко портируемый на другие платформы.