Se ha publicado ESP-KVM 0.51.2, un firmware de código abierto que convierte una placa microcontroladora ESP32-P4 en un KVM basado en IP con acceso mediante navegador a la pantalla, el teclado y el ratón de un ordenador remoto, sin necesidad de instalar ningún agente en el equipo de destino. El código está escrito en C y se distribuye bajo la licencia Apache 2.0. La principal novedad de esta versión es la capacidad de grabar la actividad de la pantalla del equipo de destino en la tarjeta microSD del dispositivo.
La grabación se inicia con un botón en la interfaz web y se guarda en el directorio VIDEO como archivos .ts con vídeo H.264. El dispositivo graba la misma transmisión que entrega a los espectadores, por lo que no se requiere recodificación: en la placa Espressif ESP32-P4 Function EV, la velocidad de fotogramas durante la grabación se mantuvo en 21-22 fps sin pérdida al reproducirla en la máquina de destino. El archivo .ts se reproduce en VLC y mpv, y si se interrumpe al extraer la tarjeta o apagar el dispositivo, continúa reproduciéndose hasta el final. Las grabaciones largas se dividen en archivos de 10 minutos y se detienen después de una hora; ambos valores son configurables. Un botón independiente guarda una captura de pantalla en formato JPEG en la carpeta CAPTURAS DE PANTALLA, incluso cuando el códec H.264 está habilitado: se utiliza el codificador JPEG de hardware inactivo para capturar la captura de pantalla.
Las pulsaciones de teclas y los clics del ratón se pueden grabar en un archivo de subtítulos .srt junto al vídeo, como cadenas de texto como «Escrito: root», «Ctrl+Alt+Supr» y «Clic izquierdo (812, 440)». Por defecto, el texto escrito se sustituye por puntos; si se desea, se puede guardar el texto completo. La distribución del teclado se toma de la configuración del teclado de destino.
Se ha añadido un modo de cámara de salpicadero que funciona con el mismo principio que una cámara de salpicadero de coche: el dispositivo monitoriza continuamente los últimos minutos de pantalla y los guarda junto con los segundos posteriores cuando ocurre algo: la pantalla se queda fija (típico de una pantalla de parada de emergencia), aparece una frase monitorizada, se apaga el indicador de alimentación ATX o el conductor pulsa un botón. El vídeo resultante se convierte a MP4 con capítulos para cada evento y, si las notificaciones están activadas, se envía a Telegram como un vídeo que se reproduce en el chat.
Existen dos maneras de almacenar el pasado: en la PSRAM, donde no ocupa espacio en la tarjeta hasta que ocurre el evento, o en la propia tarjeta en fragmentos cortos, eliminando los obsoletos. El segundo método también funciona en placas con una revisión de chip de hasta la 3.0, donde, tras ejecutar el codificador H.264, quedan aproximadamente 3 MB de PSRAM libre, en comparación con los 11 MB de las revisiones más recientes.
Se ha añadido un modo de lapso de tiempo: se guarda un fotograma cada cierto número de segundos y la reproducción es a 25 fotogramas por segundo, por lo que una hora de grabación a intervalos de 10 segundos se puede capturar en 14 segundos de vídeo. Las grabaciones y las fotos se organizan en un panel de interfaz independiente, donde se pueden descargar, eliminar y reproducir sin necesidad de descargar primero el archivo completo. Los archivos MP4 se abren con el reproductor integrado del navegador, mientras que los archivos .ts se analizan en fotogramas en la consola y se decodifican con el mismo decodificador H.264 que el vídeo en directo, con rebobinado y subtítulos. Se ha implementado la compatibilidad con rangos HTTP para el rebobinado en el dispositivo.
Se ha implementado la búsqueda de texto en pantalla. Durante la grabación, el dispositivo lee la pantalla como un conjunto de caracteres cada tres segundos y guarda la información leída en un archivo junto al vídeo. En el panel de grabación, una búsqueda de frases muestra cuándo apareció la frase en pantalla y reproduce la grabación desde ese punto. Solo se leen las pantallas generadas por el generador de caracteres: la BIOS, el menú de arranque, el programa de configuración y la consola.
La grabación, el timelapse y las capturas de pantalla se pueden iniciar desde los escenarios del dispositivo ("grabar 300", "timelapse 60", "captura de pantalla") y desde Home Assistant, que cuenta con un interruptor y botones para ello. El reloj del dispositivo ahora se sincroniza mediante NTP, y la zona horaria se puede seleccionar de una lista de ciudades en la configuración; anteriormente, se almacenaba en una sección oculta de la interfaz.
Otros cambios en las versiones posteriores a la 0.45.0:
- 0.46. Se han añadido compilaciones para las placas VIEWE ESP32-P4-Pi y Waveshare ESP32-P4-NANO-WIFI6-DB. El firmware ahora se compila con optimización -O2, las asignaciones de memoria pequeñas se han movido a PSRAM y una tarea bloqueada ahora provoca un reinicio con un volcado de memoria.
- 0.47. Ya están disponibles los Runbooks: macros que esperan a que aparezca o desaparezca una frase en la pantalla de texto y se ejecutan en el propio dispositivo al cerrar el navegador. Ahora se aceptan scripts en formato DuckyScript. Se ha añadido un programador con sintaxis cron y notificaciones a Telegram (con capturas de pantalla) o webhooks.
- 0.48. La tarjeta microSD y el módulo WiFi ahora funcionan simultáneamente; anteriormente, ambos utilizaban la misma ranura SDMMC.
- 0.49. La tarjeta microSD en las placas Function EV y Waveshare ESP32-P4-ETH ahora funciona a una frecuencia de bus de 40 MHz en lugar de 4 MHz (lectura de aproximadamente 9 MB/s, escritura de aproximadamente 4 MB/s): las líneas de alimentación de la ranura no eran alimentadas por el regulador integrado. La carga de imágenes a través de la interfaz web se ha acelerado aproximadamente 50 veces, a 3,5 MB/s a través de Ethernet. Se ha añadido el modo teclado para BIOS más antiguas: la máquina de destino ahora ve un solo dispositivo a velocidad USB 1.1, excluyendo un ratón o dispositivo de almacenamiento. El dispositivo ahora informa si el modo HDMI supera el ancho de banda de dos carriles MIPI CSI.
- 0.49.1. La velocidad de lectura de la unidad virtual por parte del equipo de destino se ha acelerado de 5,6 a 9 MB/s mediante la lectura de la tarjeta en bloques de 256 KB. Ahora, los cambios de imagen son visibles para el equipo de destino sin necesidad de volver a conectar el USB.
- 0.50. La tarjeta microSD se puede intercambiar mientras el dispositivo está en funcionamiento, incluso si se extrae durante la copia: la ranura se comprueba cada cinco segundos. Se corrigió un retraso en MJPEG que provocaba que el navegador mostrara el fotograma anterior a la última pulsación de tecla en una pantalla estática.
Fuente: opennet.ru
