EdigE
← ЛЕНТА
MCU · 31.07.2026

ESP32-P4 превратили в настоящий IP-KVM с HDMI, H.264, USB HID и загрузочными образами

ESP32-P4 в открытом проекте ESP-KVM захватывает HDMI-сигнал ещё до загрузки ОС, кодирует картинку и одновременно работает USB-клавиатурой, мышью и виртуальным накопителем. На стенде с 1080p получены 20 fps для MJPEG и 5–7 fps для H.264: предел задаёт не только видеокодер, но и обмен кадрами с PSRAM. Именно этот конфликт DMA и цветового конвейера определяет практическую цену компактного IP-KVM.

ESP-KVM собрал внешний IP-KVM на Waveshare ESP32-P4-ETH и HDMI-to-CSI-2 мосте Toshiba TC358743. Целевая машина видит устройство как USB HID и Mass Storage, поэтому доступ к BIOS, меню загрузки и установщику ОС сохраняется до старта сетевого стека на самом компьютере. Видеопоток и консоль управления открываются через браузер по HTTPS.

Тракт захвата устроен предельно прямолинейно: HDMI поступает на TC358743, мост выдаёт поток по двум линиям MIPI CSI-2, ESP32-P4 забирает кадры DMA-контроллером и отправляет их в аппаратные JPEG либо H.264-блоки. Параллельно USB OTG HS эмулирует клавиатуру, мышь и накопитель с загрузочным образом. Для платы Waveshare есть существенная аппаратная деталь: порт HID выведен в разъём MX1.25, тогда как USB-C обслуживается мостом CH343 и предназначен для прошивки и консоли.

На ESP32-P4 rev. v1.3 автор проекта получил при 1920×1080 около 20 fps в MJPEG и 5–7 fps в H.264. Паспортный ориентир кодера ESP32-P4 достигает 1080p@30 fps, однако в KVM-цепочке кадр приходит как RGB888. Для H.264 его требуется прогнать через PPA-преобразование в YUV420. CSI DMA и PPA при этом обращаются к внешней PSRAM, создавая конкуренцию за память; измеренная обработка одного кадра занимает около 145 мс. На плате с ESP32-P4 rev. v3.2 заявлены 22–24 fps H.264, что показывает зависимость результата от ревизии кремния и конкретной конфигурации памяти.

Сжатие особенно заметно на интерфейсе BIOS и рабочих столах. Для неподвижного изображения H.264 указан поток порядка 170 кбит/с. При движении автор приводит около 500 кбит/с для H.264; MJPEG в тесте с движущимся курсором достигал 8.5 Мбит/с при 13 fps. Эти режимы измерялись в разных сценариях, поэтому цифры описывают стенд, а не универсальное соотношение кодеков. Температура ESP32-P4 под полной нагрузкой на открытом воздухе составила 46 °C.

Virtual media экспортирует microSD только на чтение: запись отключена из-за нестабильности SD write path у используемой платформы. Образы ограничены FAT32 и размером 4 ГБ, скорость чтения составляет около 1.5 МБ/с. Небольшие iPXE-, memtest- или DOS-образы допускается держать в отдельном разделе Flash объёмом 4 МБ и загружать через веб-интерфейс. Браузерная часть консоли занимает 44 КБ, полный образ прошивки — около 1 МБ.

В прошивке реализованы абсолютный режим мыши, OTA с двумя слотами и автоматическим откатом, парольная аутентификация, MQTT и интеграция Home Assistant. Отдельная схема с оптопарами PC817 подключает контакты Power и Reset, а также считывает Power LED, сохраняя гальваническую развязку между ATX-обвязкой и ESP32-P4. Звук по HDMI пока отсутствует. Ограничение тракта около 81 Мпиксель/с требует аккуратного EDID: режимы 1080p60 и 1280×1024@60 способны оставить захватчик с чёрным экраном.

HTTPS в текущей реализации использует self-signed сертификат, а полный аудит защиты ещё не проводился. Устройство рассчитано на доверенную локальную сеть либо доступ через VPN. По набору функций ESP-KVM близок к компактным решениям класса PiKVM, однако не получает телеметрию, POST-коды и внутренние функции серверного BMC/IPMI. Его инженерная ценность — в работающем видеотракте HDMI→CSI-2→кодек→Ethernet на микроконтроллере, где измерены реальные потери производительности на преобразовании цвета и памяти.