NanoKVM-W: рожденный ползать - летать может!
Я, будучи счастливым обладателем NanoKVM Cube от Sipeed, грустил только по одному поводу - у него нет WiFi. Прям очень грустил. А грустить плохо (понятненько?), потому будем менять борд и заводить WiFi. Погнали!
На всякий случай, это не обзор NanoKVM Cube
, за обзором лучше сходить к Джеффу Гирлингу.
Hardware: intro
NanoKVM Cube это крохотный, четырехсантиметровый кубик, который предлагает нам:
- Захват видео в 1080p
- OLED дисплейчик для всякой информации
- ATX Board для управления ПК (power, reset, status)
- 2 UART порта
- Эмуляцию HID, сети и внешнего диска
- Ethernet
Что он не предлагает (во всяком случае по состоянию на 2024 год), так это WiFi :( К счастью, это можно решить разными способами, например:
- замутить внешний бридж ETH<->WiFi на ESP32 или чем угодно еще
- припаяться к SDIO пинам и сделать из ESP32 WiFi карту
- заменить SBC на что-то с WiFi
Я решил заменить борд, благо NanoKVM Cube
основан на LicheeRV Nano, у которого есть модификация с WiFi. А значит проблем на железном уровне будет минимум. Есть переживания за SDIO (два пина используются дисплеем), но будем посмотреть.
Вот что нам понадобится:
- сам NanoKVM Cube собсно. Я покупал бету на пресейле, обошелся в районе $40
- LicheeRV Nano W. У меня новая ревизия (возможно это важно), обошлась еще в $16
- 2x PH6.8 DIP header. Да, именно 6.8, иначе придется колхозить
Итого в районе $60 за полный комплект, а если вычесть стоимость LicheeRV Nano E
(он же останется у нас) то и все $50 ;)
Вот оно все богатство:
Hardware: assemble
Что ж, сказано заменить LicheeRV Nano E
на LicheeRV Nano W
, значит нужно заменить. Распаковываем все нужные штуки:
Запаиваем стойки:
И собираем в обратном порядке. Делай раз:
Делай два:
Делай три:
Готово!
Software
Если с железом все довольно скучно, то с софтом все сильно интереснее. К сожалению, NanoKVM не то чтобы полностью OSS-проект (см. большой тред closed source?). Плюс делает страшные вещи:
- зачем-то сделали простенький DRM для своих проприетарных запчастей поверх device id (привет саппорт)
- автообновляется на старте (см. This is embarrassing (for you)). Автообновление в устройстве, которое нужно чтобы что-то починить КАРЛ!
- всегда стартует Tailscale (???)
- проприетарный
kvm_system
совсем не стесняется что-то править в системе на старте
В общем, пользоваться как есть я бы не стал, даже без необходимости иметь WiFi. Благо, я не один такой, и в том же треде какой-то чувак проделал большую работу по переписыванию большей части проприетарщины и приведению сборки в порядок. Моё почтение, как говорится. То самое прекрасное чувство, когда за тебя уже поработали :)
Нам же осталось совсем немного - собираем форк LicheeRV-Nano-Build с небольшим количеством патчей:
% git clone --recursive git@github.com:buglloc/LicheeSG-Nano-Build.git
% cd LicheeSG-Nano-Build
% ./build-nanokvm-ex.sh
apply patches...
apply patch to buildroot: 01-nanokvm-sg200x-init.d-cleanup.patch
patching file package/nanokvm-sg200x/nanokvm-sg200x.mk
apply patch to buildroot: 02-nanokvm-sg200x-init.d-wifi.patch
patching file package/nanokvm-sg200x/0002-nanokvm-fix-wifi.patch
apply patch to buildroot: 03-nanokvm-sg200x-init.d-usbdev.patch
patching file package/nanokvm-sg200x/0003-nanokvm-fix-usb-ncm.patch
apply patch to middleware: 01-kvm_system-no-pinmux.patch
patching file sample/kvm_system/kvm_system.c
build...
OK
[...]
Заливаем образ на флешку, монтируем boot в /tmp/boot
, root в /tmp/root
:
% dd if=2024-12-29-07-19-3497ab.img of=/dev/sdb bs=1M status=progress
1627390464 bytes (1.6 GB, 1.5 GiB) copied, 30 s, 54.9 MB/s
1552+1 records in
1552+1 records out
1627390464 bytes (1.6 GB, 1.5 GiB) copied, 87.022 s, 18.7 MB/s
% mkdir -p /tmp/{boot,root}
% mount /dev/sdb1 /tmp/boot
% mount /dev/sdb2 /tmp/root
Отключаем rndis (один вред имхо) и настраиваем WiFi:
% rm -f /tmp/boot/usb.rndis
% touch /tmp/boot/wifi.sta
% wpa_passphrase "BuggIOT5G" >> /tmp/root/etc/wpa_supplicant.conf
# reading passphrase from stdin
Меняем системные пароли и явки:
% vim /tmp/root/etc/shadow
% mkdir -p /tmp/root/root/.ssh
% wget -q https://s3.buglloc.cc/pub/authorized_keys -O /tmp/root/root/.ssh/authorized_keys
Вставляем флешку на место и вуаля - он запустился и прицепил WiFi:
Demo
Самое время подключать нашу железку:
Closure
Мои первые впечатления - отличная железка получилась. Крохотная. Достаточная мощная. Не без багов (можете оценить трекер NanoKVM), но это дело поправимое. Плюс, как я понимаю, у чуваков из Sipeed этот проект хорошо летит (раз уже есть анонсы новых версий/ревизий), а значит есть шанс на развитие. Будем пробовать в повседневной жизни и следить за проектом, не переключайтесь :)
Небольшое сравнение с остальными представителями читайте в KVMBattle.