ESP-KVM 0.65.0 и прошивка, превращающая планшет M5Stack Tab5 в экран для IP-KVM
Выпущена новая версия ESP-KVM 0.65.0, открытой прошивки, превращающей плату на микроконтроллере ESP32-P4 в IP-KVM с доступом к экрану, клавиатуре и мыши удалённого компьютера через браузер. Устройство подключается перед HDMI целевой машины и прикидывается для неё USB-клавиатурой и мышью, а картинку и управление отдаёт в браузер. На целевую машину ничего ставить не надо, работает хоть в BIOS. Код написан на языке Си и распространяется под лицензией Apache 2.0.
Одновременно опубликован отдельный экспериментальный проект - ESP-KVM terminal, развивающий прошивку для планшета M5Stack Tab5, в котором используется тот же SoC ESP32-P4, что и в KVM. Терминал подключается к ESP-KVM по сети как обычный зритель, только вместо вкладки браузера у него пятидюймовый экран 1280x720.
Кадры MJPEG разжимает аппаратный декодер JPEG, а блок PPA масштабирует их и поворачивает сразу в буфер дисплея. Выходит до 20 кадров в секунду, если KVM успевает отдавать их по WiFi. В ESP32-P4 нет аппаратного декодера H.264, поэтому на KVM нужно включить MJPEG. KVM в сети терминал находит сам. Для управления указателем используется сенсорный экран, а вводить текст можно на клавиатуре для Tab5 или на обычной USB-клавиатуре.
Выпуск ESP-KVM 0.65.0 почти целиком сосредоточен оптимизации работы через медленные каналы. По WiFi устройство слало кадры быстрее, чем Tab5 успевал их принимать. Очередь росла, и экран отставал на пару секунд. Теперь устройство отображения подтверждает каждый кадр, а отправляющее устройство держит в пути не больше двух кадров. Без подобной синхронизации Tab5 в той же сети показывал около 3 кадров в секунду, а с подтверждениями - 8-9. ESP-KVM сначала сообщает, что понимает подтверждения, и только тогда клиент их шлёт.
Через Tailscale видео шло ещё медленнее: 1-3 кадра в секунду между двумя ESP32-P4 в одной сети WiFi. Весь туннель идёт через один UDP-сокет, а его очередь приёма вмещала 6 пакетов, когда пачка видео - около 45. Отправка, которую обрывал таймаут, оставляла в соединении половину кадра WebSocket, и зритель терял разметку потока. Алгоритм Нейгла придерживал каждое короткое сообщение на 200-450 мс, из-за чего пинг между терминалом и KVM после TCP_NODELAY упал с 440 до 15 мс. После перезапуска одной стороны узлы не могли снова договориться, потому что новая попытка рукопожатия затирала предыдущую раньше, чем на неё приходил ответ. При каждом переходе между прямым путём и ретранслятором DERP рукопожатие начиналось заново, примерно раз в 15 секунд, хотя ключам сессии путь безразличен. После правок получилось 11-14 fps при 720p, почти как в локальной сети.
Коротко об изменениях в ESP-KVM после прошлой новости о выпуске ESP-KVM 0.51.0:
- 0.52-0.54: Прошивка заработала на M5Stack Unit PoE-P4 с модулем Add-on Display In на мосте LT6911D: питание по PoE, паять ничего не нужно. В консоли появилась экранная клавиатура, заработали карты microSD с exFAT и разметкой GPT. Alt+Tab и клавиша Windows теперь уходят на целевую машину, а не в браузер.
- 0.55: Виртуальный CD-ROM отвечает на команды настоящего привода (READ TOC, GET CONFIGURATION и другие). UEFI и Linux грузились и без них, но Windows и macOS спрашивают их первыми. С карты exFAT работают образы больше 4 ГБ, так что влезает полный установщик на DVD.
- 0.56-0.57: Обрывы по WiFi шли из-за того, что сопроцессору не хватало внутренней памяти P4 под буферы. Добавились вход с кодом TOTP и часы DS3231. Уведомления ждут, пока появится сеть. Обновления устройство проверяет, только если пользователь разрешил.
- 0.58-0.59: На платах с TC358743 работает HDMI-CEC: кнопки пульта, ожидание, пробуждение. Steam Deck, правда, просыпаться по CEC отказывается - SteamOS эту команду игнорирует. Устройство умеет притворяться геймпадом для Switch и Xbox 360 и переходит с Ethernet на WiFi, если выдернуть кабель.
- 0.60: Последовательная консоль целевой машины о...
https://opennet.ru/66485/
https://opennet.me/66485/
Post #6969
32