Современные устройства, даже одноразовые, содержат удивительную электронику. Конечно, на сервере от BogdanTheGeek не запустить привычный сайт, но какой-то все же можно.
Инженер и художник оригами Богдан Ионеску создал вебсервер, который работает на начинке одноразового вейпа. Он собрал большую коллекцию этих устройств «для будущих проектов», а также экспериментировал с хостингом на процессорах Arm с помощью «нескольких строк кода». С VapeServer Богдан соединил оба увлечения.
Недавно энтузиаст узнал о «более изысканных» вейпах, которые содержат более продвинутые микросхемы и контроллеры. В них есть не только неизвестные нонейм-чипы, но и нечто более мощное. Одно из самых сложных устройств, которые он разобрал, содержало микросхему с пометкой PUYA C642F15. Поиски позволили идентифицировать процессор как модель PY32F002B на Arm Cortex M0+, с тактовой частотой 24 МГц, 24 КБ флешпамяти, 3 КБ оперативной памяти и поддержкой нескольких интерфейсов. Замечательные характеристики для сервера, не так ли?
По словам BogdanTheGeek, чип «примерно в 100 раз медленнее», чем мобильный телефон 10-летней давности (если это вообще сравнимо). Однако Богдан решил, что для «невероятно быстрого» сервера PY32F002B с портом USB-C — то что надо. Он эмулировал коммутируемый модем на микроконтроллере с использованием протокола SLIP через последовательное соединение USB. Утилиты slattach и socat для Linux обеспечили передачу IP-пакетов. Микроконтроллер получил компактный стек uIP для связи через TCP/IP и настроенный вебсервер. Страница по ссылке едва поместилась на оставшиеся 20 КБ накопителя (сейчас выдает ошибку 503).
Оптимизация сервера для хотя бы минимального приемлемого пользования столкнулась с несколькими трудностями. Богдан пишет в блоге, что он чуть не сдался после первых тестов, поскольку производительность была смехотворно плохой. Пинг составлял ~1,5 секунды, а простая загрузка страницы занимала 20 секунд. Однако он признает, что главной проблемой был его код. Поэтому инженер добавил буфер и пакетную запись, чтобы улучшить пропускную способность, и с помощью еще нескольких настроек уменьшил пинг до 20 мс без потери пакетов и достиг полной загрузки страницы примерно за 160 мс.
Код проекта размещён на GitHub. Кто знает, может кто-то когда-то запустит на вейпе Doom (на вибраторе уже есть).
Источник: Tom’s Hardware
No Comment! Be the first one.