EdigE
← ЛЕНТА

ESP32-C6 отдала Linux своё радио по четырём линиям SDIO

SDIO обычно ассоциируется с распаянным на плате Wi‑Fi-чипом или слотом для карты памяти. Здесь по четырём линиям данных, такту и командной линии к Linux-плате подключают ESP32-C6. После загрузки прошивки этот недорогой микроконтроллер ведёт себя для хоста как выделенный радиосопроцессор: в системе появляется wlanX, а Bluetooth попадает в обычный HCI-стек.

Радио выходит в штатный стек Linux

Такой режим даёт ESP-Hosted-Linux. Код на ESP32-C6 обслуживает радио и упаковывает обмен в SDIO-транспорт; модуль ядра на хосте распаковывает его в привычные подсистемы Linux. Сетевые приложения, NetworkManager и инструменты cfg80211 работают с интерфейсом без специального пользовательского демона. Bluetooth-часть аналогично становится HCI-устройством, к которому подключается BlueZ.

Для Raspberry Pi Espressif описывает включение SDIO overlay и проводку CMD, CLK, DAT0…DAT3 с общей землёй. Логические уровни должны быть 3.3 В. Линию reset ESP можно вывести отдельно; после перечисления устройства стек также умеет управлять сбросом через шину. Получается радиомодуль, который не занимает USB-порт и не превращает UART в узкое горлышко.

Скорость определяется и эфиром, и шиной

В практической сборке Arya Voronova TCP дал 40–50 Mbit/s на штатной частоте SDIO. Это похоже на данные Espressif для Raspberry Pi 4B с SDIO 41.67 МГц: 41.7 Mbit/s для TCP Tx и 51.0 Mbit/s для TCP Rx при Wi‑Fi 2.4 ГГц и канале 40 МГц. Для UDP производитель приводит до 90.4 Mbit/s в одном из направлений, поэтому диапазон 40–50 Mbit/s описывает именно наблюдаемый TCP-сценарий, а не скорость любого трафика.

Цена этой аккуратной архитектуры видна в момент обновления системы. Host-модуль собирается под работающее ядро Linux и загружается вручную; без DKMS обновление ядра требует новой сборки. Прошивка ESP и драйвер обязаны происходить из одной версии ESP-Hosted-Linux: при рассинхронизации драйвер намеренно отказывается запускаться, поскольку форматы служебного обмена должны совпадать с обеих сторон SDIO.

Версии прошивки становятся частью схемы

В собранном устройстве переключатель питания ESP32-C6 физически обесточивал радиочасть, после чего интерфейс восстанавливался. Это интересный аппаратный приём для зависшего радиомодуля: вместо перезагрузки всей Linux-платы можно снять питание с периферии. Наблюдение относится к конкретной разводке и версии драйвера; поведение после горячего отключения определяется линией EN, питанием SDIO и состоянием шины у конкретного хоста.

История ценна тем, что ESP32-C6 перестаёт быть только самостоятельным IoT-узлом. Её можно поставить рядом с Linux-SBC как маленькую заменяемую сетевую карту с доступной разводкой и контролем питания. Радиопрошивка ESP остаётся проприетарной частью платформы, зато транспорт, драйвер и граница между Linux и радиоблоком становятся достаточно прозрачными, чтобы проектировать, измерять и чинить эту связку как обычную периферию.