KVMZer0: Cheapest KVM
В этом посте речь пойдет о сборке и установке PiKVM на Orange Pi Zero 2W с HDMI to USB. Я постарался собрать самый дешевый (но рабочий!) вариант, посмотрим получилось ли :)
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):
С картой захвата не многим интереснее, вот она:
Очевидно, что USB Type-A в этом проекте совсем не к месту. Можно было бы чуть доплатить и купить сразу с Type-C штурком…но мы же тут экономим! Потому кабелек из коробки в шкафу и тут придет на помощь:
Осталось собрать все воедино на стяжках и двойном скотче:
Тадаам!
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.