ESP32 вместо капризной Wi-Fi-карты: как превратить модуль Espressif в сетевой сопроцессор для Linux
Одноплатные Linux-компьютеры нередко экономят на беспроводной связи, а сами Wi-Fi-карты оборачиваются ворохом проблем: закрытые прошивки, эфемерные драйверы, неустранимые годами глюки и бинарные блобы с «сроком годности». Автор материала на Hackaday предлагает нестандартное решение — использовать модуль ESP32 в роли Wi-Fi/Bluetooth-карты, подключив его к плате по SDIO или SPI. За это отвечает проект esp-hosted.
Два варианта
Под крышей esp-hosted живут два проекта. esp-hosted-mcu (бывший First Generation) оставляет управление соединением на стороне ESP32: модуль сам держит связь с заданными сетями, даже если хост перезагружается или выключен. esp-hosted-linux (бывший New Generation) оставляет беспроводной стек на стороне Linux, а ESP32 работает тонким посредником — и ведёт себя наиболее «нативно», как обычная карта. Автор остановился на нём.
Поддержаны ESP32-WROOM и большинство новых чипов: S2, S3, C2, C3, C5, C6/C61. Автор взял C6, но признаёт это ошибкой: C5, несмотря на меньший номер, лучше — в частности, умеет 5 ГГц.
Подключение и запуск
SDIO предпочтительнее SPI из-за скорости. Это быстрый параллельный интерфейс с линией команд, тактом и четырьмя (или одной) линиями данных; дорожки нужно разводить аккуратно, с непрерывной землёй под ними и выравниванием длин. Отдельно подключается EN для сброса модуля, а USB-порт ESP32 нужно вывести наружу для однократной прошивки. Питанию 3,3 В требуется 300–400 мА.
Дальше три шага: освободить интерфейс SDIO (на Raspberry Pi это правка config.txt, с попутным отключением Bluetooth штатной карты), собрать и прошить прошивку (компиляцию лучше делать на настольном ПК — на Pi Zero cmake почти гарантированно повесит плату по нехватке памяти, или просто взять готовый релиз с GitHub) и собрать драйвер. Версии прошивки и драйвера должны совпадать по коммиту. На платах с 512 МБ ОЗУ и меньше в скрипте сборки стоит заменить make -j8 на -j2 или -j1. После успешной загрузки появляется интерфейс wlan.
Зачем это нужно
Автор называет четыре причины. Во-первых, это единственная известная ему карта, передающая Bluetooth по SDIO, не занимая UART. Во-вторых, esp-hosted корректно переживает аппаратные выключатели питания — модуль отключается и переподключается без падений драйвера. В-третьих и в-четвёртых, это по сути карта с открытой прошивкой: закрыт лишь радиочастотный блоб, остальное открыто и поддаётся правке, а сообщество уже пытается «освободить» и RF-часть. Наконец, после подведения SDIO у ESP32 остаётся масса свободных ножек — можно подключить LoRa-модем для Meshtastic, а новые чипы умеют Zigbee и Thread. Автору нравится мысль превратить вездесущий и копеечный ESP32 в универсальный коммуникационный сопроцессор для любого Linux.
Источник: Lobsters
Комментарии
Войдите, чтобы комментировать.