ESP-KVM превратил ESP32-P4 в открытый IP-KVM с HDMI и H.264
ESP-KVM превратил микроконтроллер ESP32-P4 в открытый IP-KVM с захватом HDMI, аппаратным кодированием видео и эмуляцией USB-клавиатуры и мыши. Проект опубликован под Apache-2.0 и рассчитан на связку платы Waveshare ESP32-P4-ETH с модулем захвата Geekworm C790. Ориентировочная стоимость комплекта составляет около $45.
Видеосигнал поступает в мост Toshiba TC358743, преобразующий HDMI в MIPI CSI-2. Далее ESP32-P4 формирует поток MJPEG или H.264 baseline и отправляет его в браузер через HTTPS и WebSocket. Два RISC-V-ядра микроконтроллера дополняются аппаратными блоками JPEG, H.264, Pixel Processing Accelerator и USB OTG. У платы Waveshare установлены 32 МБ PSRAM, 32 МБ flash и 100-Мбит Ethernet.
Главный инженерный компромисс связан с ревизией ESP32-P4. На раннем кристалле v1.3 захват идёт в RGB888, после чего PPA преобразует кадр в YUV420 для H.264-кодера. Полный цикл при 1080p занимает около 145–150 мс, поэтому разработчик измерил 5–7 кадров/с в H.264 и около 20 кадров/с в MJPEG. Заявленные Espressif 1080p30 характеризуют сам кодирующий блок при подходящем входном формате и не описывают производительность готового сетевого устройства.
В ревизии v3.x CSI-тракт получил преобразование YUV422 в YUV420 и расширенную поддержку цветовых форматов H.264. Отдельный проход через PPA больше не требуется. Для ESP32-P4 v3.2 автор проекта приводит 22–24 кадра/с в H.264 и 23 кадра/с в MJPEG при 1080p, а также 28 кадров/с при 720p. Эти результаты пока воспроизведены только разработчиком.
Физический предел задаёт и вход CSI-2: две линии работают на скорости до 972 Мбит/с каждая. При RGB888 допустимая пиксельная частота получается около 81 Мпикс/с. Поэтому EDID исключает 1080p60 и 1280×1024@60; превышение пропускной способности приводит к чёрному экрану. Аудио из HDMI проект не захватывает.
Для удалённого управления реализованы USB HID, виртуальные FAT32-носители, Wake-on-LAN, OTA с откатом, аутентификация и опциональное управление линиями ATX через оптопары. Размер отдельного образа virtual media ограничен 4 ГБ, microSD работает только на чтение, а заявленная скорость чтения составляет около 1.5 МБ/с. H.264 в браузере использует WebCodecs и требует доверенного HTTPS-контекста.
На Waveshare ESP32-P4-ETH высокоскоростной USB OTG выведен на разъём MX1.25, поэтому для соединения с управляемым компьютером нужен отдельный кабель MX1.25–USB-A. Штатный USB-C подключён к мосту CH343 и служит для прошивки и консоли.
Низкоуровневая часть ESP-KVM происходит из более раннего проекта p4kvm: оттуда унаследованы инициализация TC358743 и прямое программирование регистров MIPI_CSI_BRIDGE, отсутствовавших в публичном camera API. Текущая реализация развивает эту основу до законченного сетевого устройства с веб-интерфейсом и виртуальными носителями. Аудит безопасности проекта не проводился, поэтому публикация интерфейса непосредственно в интернет создаёт отдельный риск.