5 мин на чтение

В этом посте речь пойдет о сборке и установке PiKVM на Orange Pi Zero 2W с HDMI to USB. Я постарался собрать самый дешевый (но рабочий!) вариант, посмотрим получилось ли :)

cover

Hardware: intro

KVMZer0 похож на любой другой KVM на базе Raspberry Pi Zero 2W, в гайде PiKVM V2 в деталях описан процесс сборки такого. Но делать такой же было бы скучновато и странновато, а заниматься скучноватыми вещами я не готов. Поэтому я решил подобрать какую-то альтернативу и выбрал Orange Pi Zero 2W, т.к. он с одной стороны одного ценового диапазона с малинкой, с другой - выигрывает у него по характеристикам, а с третьей - не малинка :)

Смотрите сами как они выглядят в сравнении:

  Orange Pi Zero 2W Raspberry Pi Zero 2 W
CPU Allwinner H618 Quad-Core Cortex-A53 Processor 1.5GHz Broadcom BCM2710A1 64-bit SoC with quad-core Arm Cortex-A53 @ 1GHz
RAM 1GB, 1.5GB, 2GB or 4GB LPDDR4 512MB LPDDR2
GPU Mali G31 MP2 Broadcom VideoCore IV
Ports Mini HDMI (4K@60FPS), USB-C 2.0 OTG, USB-C 2.0 Host, 24Pin expansion interface Mini HDMI (1080p@30fps), micro USB 2.0 OTG, micro USB 2.0 power, MIPI CSI-2 camera connector
Networking Wi-Fi 5 and Bluetooth 5.0 Wi-Fi 4 and Bluetooth 4.2 with BLE
Storage MicroSD card slot MicroSD card slot
Price $15-$30 $20

Конкретно у меня Orange Pi Zero 2W 1GB. Если бы у меня не было цели собрать что-то максимально дешевое, то я бы скорее взял Orange Pi Zero3, т.к. его форм-фактор и лучше, и современнее - но условия игры определял не я! :)

С Orange Pi Zero 2W по деньгам получилось около $20 за все:

  • Orange Pi Zero 2W 1GB - $15 с доставкой
  • HDMI to USB - $2 на распродаже или $4 без
  • два Type-C кабеля из коробки в шкафу - $0
  • два Type-C коннектора и какой-то корпус - пусть еще будет $1-$2

Больше всего переживаний, конечно же, вызывает USB карта захвата. Выполнена она на базе супер популярного (и дешевого) MS2109, поддерживает только MJPEG и в целом ребята из PiKVM предупреждают:

Some users report hardware problems: the dongle may not work in the BIOS or simply stop working after a while. It’s a black box, and no one knows what’s inside it. If you have problems with it, it will not be possible to fix them.

Ну да где наша не пропадала!

Hardware: assemble

Мутим Y-cable. У меня уже был с прошлых экспериментов, но принципиально там ничего хитрого (в самом простом виде вообще делается из двух кабелей: making a USB Y-splitter cable): cover

С картой захвата не многим интереснее, вот она: cover

Очевидно, что USB Type-A в этом проекте совсем не к месту. Можно было бы чуть доплатить и купить сразу с Type-C штурком…но мы же тут экономим! Потому кабелек из коробки в шкафу и тут придет на помощь: cover

Осталось собрать все воедино на стяжках и двойном скотче: cover

Тадаам!

Software

Софт у меня “классический”:

  • Armbian в качестве дистрибутива
  • KVMD For Armbian (порт PiKVM) для остального

Ставим Debian 12 (Bookworm) Minimal на sd карту, делаем первичную настройку, топаем по SSH и включаем USB OTG, добавив нужный Device Tree overlay:

root@kvmzer0:~# mkdir -p /boot/overlay-user
root@kvmzer0:~# cat << '_EOF_' > /boot/overlay-user/usb-otg.dts
/dts-v1/;
/plugin/;

/ {
		metadata {
				title = "Enable USB OTG";
				compatible = "allwinner,sun50i-h616";
				category = "misc";
				description = "Enable USB OTG port";
		};
};

&usbotg {
	 	dr_mode = "otg";
		status = "okay";
};
_EOF_

Затем ставим KVMD For Armbian:

root@kvmzer0:~# apt install -y git vim make python3-dev gcc xz-utils wget sudo
root@kvmzer0:~# git clone --depth=1 https://github.com/srepac/kvmd-armbian.git
root@kvmzer0:~# cd kvmd-armbian
root@kvmzer0:~/kvmd-armbian#  ./install.sh
Python 3.12 is supported.

Running part 1 of PiKVM installer script v3.4 by @srepac
Single Board Computer:  OrangePi Zero 2W

Press ENTER to continue or CTRL+C to break out of script.

Broadcast message from root@kvmr0ck on pts/1 (Sat 2024-12-14 19:37:20 MSK):

The system will reboot now!

root@kvmzer0:~/kvmd-armbian# ./install.sh 
Python 3.12 is supported.

Running part 2 of PiKVM installer script v3.4 by @srepac
[...]
Check kvmd devices

lrwxrwxrwx 1 root root 5 Dec 21 15:21 /dev/kvmd-hid-keyboard -> hidg0
lrwxrwxrwx 1 root root 5 Dec 21 15:21 /dev/kvmd-hid-mouse -> hidg1
lrwxrwxrwx 1 root root 5 Dec 21 15:21 /dev/kvmd-hid-mouse-alt -> hidg2
lrwxrwxrwx 1 root root 6 Dec 21 15:17 /dev/kvmd-video -> video0

You should see devices for keyboard, mouse, and video.

Point a browser to https://kvmzer0
If it doesn't work, then reboot one last time.
Please make sure kvmd services are running after reboot.

root@kvmr0ck:~/kvmd-armbian# reboot

Проверяем:

root@kvmzer0:~# systemctl status kvmd
● kvmd.service - PiKVM - The main daemon
     Loaded: loaded (/usr/lib/systemd/system/kvmd.service; enabled; preset: enabled)
     Active: deactivating (stop-post) (Result: exit-code) since Sat 2024-12-21 15:24:22 MSK; 1s ago
    Process: 1528 ExecStart=/usr/bin/kvmd --run (code=exited, status=1/FAILURE)
   Main PID: 1528 (code=exited, status=1/FAILURE); Control PID: 1546 (kvmd-cleanup)
      Tasks: 1 (limit: 933)
     Memory: 16.3M (peak: 31.2M)
        CPU: 3.691s
     CGroup: /system.slice/kvmd.service
             └─1546 /usr/bin/python /usr/bin/kvmd-cleanup --run

Dec 21 15:24:22 kvmzer0 kvmd[1528]:     code = _get_keysyms().get(name)
Dec 21 15:24:22 kvmzer0 kvmd[1528]:            ^^^^^^^^^^^^^^
Dec 21 15:24:22 kvmzer0 kvmd[1528]:   File "/usr/lib/python3/dist-packages/kvmd/keyboard/keysym.py", line 90, in _get_keysyms
Dec 21 15:24:22 kvmzer0 kvmd[1528]:     loader = finder.find_module(module_name)
Dec 21 15:24:22 kvmzer0 kvmd[1528]:              ^^^^^^^^^^^^^^^^^^
Dec 21 15:24:22 kvmzer0 kvmd[1528]: AttributeError: 'FileFinder' object has no attribute 'find_module'
Dec 21 15:24:22 kvmzer0 systemd[1]: kvmd.service: Main process exited, code=exited, status=1/FAILURE
Dec 21 15:24:23 kvmzer0 kvmd-cleanup[1546]: kvmd.apps.cleanup                 INFO --- Cleaning up ...
Dec 21 15:24:23 kvmzer0 kvmd-cleanup[1546]: kvmd.apps.cleanup                 INFO --- Trying to find and kill the streamer 'kvmd/streamer: <app>' ...
Dec 21 15:24:23 kvmzer0 kvmd-cleanup[1546]: kvmd.apps.cleanup                 INFO --- Bye-bye

Ну да, что-то пошло не так. Установленная версия kvmd не поддерживает Python 3.12, благо только в одном месте - потому патчим /usr/lib/python3/dist-packages/kvmd/keyboard/keysym.py (стоило, конечно, обновить, но мне было лень), проверяем, успех!

Demo

Самый приятный момент (кроме получения посылки):

Closure

Признаюсь честно, уровень ожиданий у меня был не высок. Но результат меня очень приятно удивил. Да есть заметный input lag (а где его нет?), но не такой большой, чтобы грустить. Да выглядит с виду не оч, но это можно поправить. В остальном же отличная рабочая лошадка, чтобы раз в пару месяцев зайти куда-нить в биос или операционку накатить. А если учесть, что это все обошлось в примерно $20 - ваще красота, ясчитаю! Ну правда.

Единственное, смущает опыт ребят из PiKVM, но я пользовался картой захвата от UGREEN (тоже на MS2109) без каких-либо проблем. Возможно, на всякий случай стоит посмотреть в сторону MS2130 или других более дорогих чипов. Но там уже будет USB3.0, а с обратной совместимостью у китайцев бывает по-разному - как бы не пришлось тогда и борд другой выбирать.

Небольшое сравнение с остальными представителями читайте в KVMBattle.

Разделы: ,

Дата изменения: