La version ESP-KVM 0.51.2 a été publiée, un firmware open source qui transforme la carte à microcontrôleur ESP32-P4 en IP-KVM, permettant d'accéder à l'écran, au clavier et à la souris d'un ordinateur distant via un navigateur, sans installer d'agent sur la machine gérée. Le code est écrit en langage C et est distribué sous la licence Apache 2.0. Le changement principal de cette version est l'enregistrement de l'affichage de l'écran cible sur la carte microSD de l'appareil.
L'enregistrement s'active par un bouton dans l'interface web et se sauvegarde dans le dossier VIDEO sous forme de fichiers .ts avec vidéo H.264. L'appareil enregistre le même flux qu'il envoie aux spectateurs, donc le reclassement n'est pas nécessaire : sur la carte Espressif ESP32-P4 Function EV, lors de la lecture vidéo sur la machine cible, la fréquence d'images pendant l'enregistrement est restée à 21-22 images par seconde sans pertes. Le fichier .ts se lit dans VLC et mpv, et l'enregistrement interrompu par le retrait de la carte ou la coupure de courant s'ouvre jusqu'au moment de l'arrêt. Les enregistrements longs sont divisés en fichiers de 10 minutes et s'arrêtent après une heure ; ces deux valeurs sont configurables. Un bouton séparé permet de sauvegarder une capture d'écran au format JPEG dans le dossier SCREENSHOTS, même lors de l'utilisation du codec H.264 : pour la capture, un encodeur JPEG matériel inactif est utilisé.
Les frappes de touches et les clics de souris peuvent être enregistrés dans un fichier de sous-titres .srt à côté de la vidéo — sous forme de lignes «Typed: root», «Ctrl+Alt+Delete», «Left click (812, 440)». Par défaut, le texte saisi est remplacé par des points, mais il peut être conservé en entier si nécessaire. La disposition est dérivée des paramètres du clavier cible.
Un mode enregistreur vidéo a été ajouté, fonctionnant sur le même principe qu'un enregistreur automobile : l'appareil conserve constamment les dernières minutes de l'écran et les enregistre avec les secondes suivantes, quand quelque chose se passe — l'écran devient unicolore (caractéristique d'un écran d'arrêt d'urgence), une phrase traçable apparaît, le voyant d'alimentation ATX s'éteint ou l'opérateur appuie sur un bouton. La vidéo obtenue est convertie en MP4 avec des chapitres pour chaque événement, et lorsque les notifications sont activées, elle est envoyée dans Telegram comme vidéo visionnable dans le chat.
Vous pouvez stocker le passé de deux manières : dans la mémoire vive PSRAM, où il ne prend pas de place sur la carte jusqu'à la survenance de l'événement, ou sur la carte elle-même par courts fragments avec suppression des données obsolètes — la seconde méthode fonctionne également sur les cartes avec une révision de puce jusqu'à 3.0, où après le lancement du codeur H.264, il reste environ 3 Mo de PSRAM libre contre 11 Mo sur les nouvelles révisions.
Un mode timelapse est apparu : un cadre est enregistré une fois toutes les secondes définies, la lecture se fait à une vitesse de 25 images par seconde, donc une heure de travail avec un intervalle de 10 secondes se transforme en 14 secondes de vidéo. Les enregistrements et les instantanés sont rassemblés dans un panneau séparé de l'interface, depuis lequel ils peuvent être téléchargés, supprimés et reproduits sans avoir à charger le fichier entier : les MP4 s'ouvrent avec le lecteur par défaut du navigateur, tandis que les .ts sont décomposés en images dans la console elle-même et décodés par le même décodeur H.264 que l'image en direct, avec avance rapide et affichage des sous-titres. Un support pour les plages HTTP a été mis en place pour l'avance rapide du côté appareil.
Une recherche de texte à l'écran a été mise en œuvre. Pendant l'enregistrement, l'appareil lit l'écran toutes les trois secondes comme un ensemble de caractères et enregistre ce qui a été lu dans un fichier à côté de la vidéo ; dans le panneau des enregistrements, la recherche par phrase montre quand elle était à l'écran et joue l'enregistrement à partir de ce moment. Seuls les écrans dessinés par le générateur de caractères sont lus : BIOS, menu de démarrage, programme d'installation, console.
L'enregistrement, le tournage en accéléré et la capture d'écran peuvent être lancés à partir des scripts de l'appareil (« record 300 », « timelapse 60 », « screenshot ») et de Home Assistant, où il y a un interrupteur et des boutons pour cela. Les horloges de l'appareil sont maintenant synchronisées via NTP, et le fuseau horaire est sélectionné dans une liste de villes dans les paramètres — auparavant, il était stocké dans une section que l'interface ne montrait pas.
Autres changements dans les versions sorties après 0.45.0 :
- 0.46. Des builds pour les cartes VIEWE ESP32-P4-Pi et Waveshare ESP32-P4-NANO-WIFI6-DB ont été ajoutés. Le firmware est désormais compilé avec l'optimisation -O2, les allocations de mémoire mineures ont été déplacées vers PSRAM, et une tâche suspendue conduit désormais à un redémarrage avec sauvegarde du dump.
- 0.47. Des scénarios (runbooks) sont apparus — des macros capables d'attendre l'apparition ou la disparition d'une phrase sur un écran de texte, exécutés sur le dispositif lui-même avec le navigateur fermé ; les scripts au format DuckyScript sont acceptés. Un planificateur avec une syntaxe cron et des notifications sur Telegram (avec capture d'écran) ou sur webhook ont été ajoutés.
- 0.48. La carte microSD et le module WiFi ont fonctionné simultanément — auparavant, les deux utilisaient un seul slot SDMMC.
- 0.49. La carte microSD sur les cartes Function EV et Waveshare ESP32-P4-ETH a fonctionné à une fréquence de bus de 40 MHz au lieu de 4 (lecture d'environ 9 Mo/s, écriture d'environ 4 Mo/s) : l'alimentation des lignes du slot n'était pas fournie par le régulateur intégré. Le téléchargement de l'image via l'interface web a été accéléré d'environ 50 fois, atteignant 3,5 Mo/s par Ethernet. Un mode clavier pour les anciens BIOS a été ajouté — la machine cible voit un seul appareil à la vitesse USB 1.1, sans souris ni stockage. L'appareil informe si le mode HDMI dépasse la bande passante de deux lignes MIPI CSI.
- 0.49.1. La lecture du stockage virtuel par la machine cible a été accélérée de 5,6 à 9 Mo/s grâce à la lecture des blocs de 256 Ko à partir de la carte. Le changement d'image est visible par la machine cible sans avoir besoin de reconnecter l'USB.
- 0.50. La carte microSD peut être retirée de l'appareil en marche, même en plein milieu d'une copie : le slot est vérifié toutes les cinq secondes. Un retard dans le MJPEG a été corrigé, ce qui faisait que sur un écran immobile, le navigateur affichait une image précédant la dernière pression de touche.
Source : opennet.ru
