Wydanie ESP-KVM 0.51.0, otwartego firmware IP-KVM z nagrywaniem ekranu na microSD

Opublikowano wydanie ESP-KVM 0.51.2, otwartego firmware, które zamienia płytkę opartą na mikrokontrolerze ESP32-P4 w IP-KVM z dostępem do ekranu, klawiatury i myszy zdalnego komputera przez przeglądarkę, bez instalowania agenta na zarządzanej maszynie. Kod napisano w języku C i jest udostępniany na licencji Apache 2.0. Najważniejszą zmianą w tym wydaniu jest nagrywanie obrazu z ekranu komputera docelowego na kartę microSD samego urządzenia.

Nagrywanie włącza się przyciskiem w interfejsie webowym i jest zapisywane w katalogu VIDEO jako pliki .ts z wideo H.264. Urządzenie zapisuje ten sam strumień, który udostępnia podglądającym, dlatego ponowne kodowanie nie jest wymagane: na płytce Espressif ESP32-P4 Function EV podczas odtwarzania wideo na maszynie docelowej liczba klatek w trakcie nagrywania utrzymała się na poziomie 21–22 na sekundę bez strat. Plik .ts odtwarza się w VLC i mpv, a nagranie przerwane przez wyjęcie karty lub odłączenie zasilania otwiera się do momentu przerwania. Długie nagranie jest dzielone na pliki po 10 minut i zatrzymywane po godzinie; obie wartości można konfigurować. Osobnym przyciskiem można zapisać zrzut ekranu w formacie JPEG do folderu SCREENSHOTS, także podczas pracy kodeka H.264: do wykonania zrzutu wykorzystywany jest bezczynny sprzętowy enkoder JPEG.

Naciśnięcia klawiszy i kliknięcia myszy można zapisywać do pliku napisów .srt obok wideo — w postaci wierszy „Typed: root”, „Ctrl+Alt+Delete”, „Left click (812, 440)”. Domyślnie wpisany tekst jest zastępowany kropkami, ale w razie potrzeby można go zapisać w całości. Układ klawiatury jest pobierany z ustawień klawiatury maszyny docelowej.

Dodano tryb wideorejestratora działający na tej samej zasadzie co samochodowy: urządzenie stale przechowuje ostatnie minuty obrazu z ekranu i zapisuje je wraz z kolejnymi sekundami, gdy coś się wydarzy — ekran staje się jednolity (co jest typowe dla ekranu awaryjnego zatrzymania), pojawia się monitorowana fraza, gaśnie wskaźnik zasilania ATX albo operator naciska przycisk. Otrzymany materiał jest konwertowany do MP4 z rozdziałami dla każdego zdarzenia, a przy włączonych powiadomieniach wysyłany do Telegrama jako wideo odtwarzane bezpośrednio w czacie.

Przeszłość można przechowywać na dwa sposoby: w pamięci operacyjnej PSRAM, gdzie do momentu wystąpienia zdarzenia nie zajmuje ona miejsca na karcie, albo na samej karcie w krótkich fragmentach z usuwaniem nieaktualnych danych — drugi sposób działa także na płytkach z rewizją układu wcześniejszą niż 3.0, gdzie po uruchomieniu kodera H.264 pozostaje około 3 MB wolnej pamięci PSRAM zamiast 11 MB w nowszych rewizjach.

Pojawił się tryb timelapse: zapisywana jest jedna klatka co zadaną liczbę sekund, a odtwarzanie odbywa się z prędkością 25 klatek na sekundę, dlatego godzina pracy przy interwale 10 sekund mieści się w 14 sekundach wideo. Nagrania i zrzuty ekranu zebrano w osobnym panelu interfejsu, skąd można je pobrać, usunąć i odtworzyć bez wcześniejszego pobierania całego pliku: MP4 otwiera się w standardowym odtwarzaczu przeglądarki, a plik .ts jest rozbijany na klatki bezpośrednio w konsoli i dekodowany tym samym dekoderem H.264 co obraz na żywo, z przewijaniem i wyświetlaniem napisów. Do przewijania po stronie urządzenia zaimplementowano obsługę zakresów HTTP.

Zaimplementowano wyszukiwanie tekstu na ekranie. Podczas nagrywania urządzenie co trzy sekundy odczytuje ekran jako zestaw znaków i zapisuje odczyt do pliku obok wideo; w panelu nagrań wyszukiwanie frazy pokazuje, kiedy była ona widoczna na ekranie, i odtwarza nagranie od tego momentu. Odczytywane są tylko ekrany renderowane przez generator znaków — BIOS, menu rozruchowe, program instalacyjny, konsola.

Nagrywanie, timelapse i zrzut ekranu można uruchamiać ze skryptów urządzenia („record 300”, „timelapse 60”, „screenshot”) oraz z Home Assistant, gdzie są do tego przełącznik i przyciski. Zegar urządzenia jest teraz synchronizowany przez NTP, a strefę czasową wybiera się z listy miast w ustawieniach — wcześniej była przechowywana w sekcji, której interfejs nie wyświetlał.

Inne zmiany w wydaniach opublikowanych po wersji 0.45.0:

  • 0.46. Dodano buildy dla płytek VIEWE ESP32-P4-Pi i Waveshare ESP32-P4-NANO-WIFI6-DB. Firmware jest teraz kompilowany z optymalizacją -O2, drobne alokacje pamięci przeniesiono do PSRAM, a zawieszone zadanie powoduje teraz restart z zachowaniem zrzutu pamięci.
  • 0.47. Pojawiły się scenariusze (runbooks) — makra, które potrafią czekać na pojawienie się lub zniknięcie frazy na tekstowym ekranie i są wykonywane bezpośrednio na urządzeniu przy zamkniętej przeglądarce; obsługiwane są skrypty w formacie DuckyScript. Dodano harmonogram z składnią cron oraz powiadomienia w Telegramie (ze zrzutem ekranu) lub na webhook.
  • 0.48. Karta microSD i moduł WiFi zaczęły działać jednocześnie — wcześniej oba korzystały z jednego slotu SDMMC.
  • 0.49. Karta microSD na płytkach Function EV i Waveshare ESP32-P4-ETH zaczęła działać z częstotliwością magistrali 40 MHz zamiast 4 (odczyt około 9 MB/s, zapis około 4 MB/s): nie było włączone zasilanie linii slotu z wbudowanego stabilizatora. Wgrywanie obrazu przez interfejs WWW przyspieszono około 50 razy, do 3,5 MB/s przez Ethernet. Dodano tryb klawiatury dla starszych BIOS-ów — maszyna docelowa widzi jedno urządzenie z prędkością USB 1.1, bez myszy i pamięci masowej. Urządzenie zgłasza, jeśli tryb HDMI przekracza przepustowość dwóch linii MIPI CSI.
  • 0.49.1. Odczyt wirtualnego nośnika przez maszynę docelową przyspieszono z 5,6 do 9 MB/s dzięki odczytowi z karty blokami po 256 KB. Zmiana obrazu stała się widoczna dla maszyny docelowej bez ponownego podłączania USB.
  • 0.50. Kartę microSD można wymieniać na działającym urządzeniu, także wyjmując ją w trakcie kopiowania: slot jest sprawdzany co pięć sekund. Naprawiono opóźnienie w MJPEG, przez które przy nieruchomym ekranie przeglądarka pokazywała klatkę poprzedzającą ostatnie naciśnięcie klawisza.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster