SkillAgentSearch skills...

PicoKVM

No description available

Install / Use

/learn @wl56012102/PicoKVM
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

PicoKVM

项目说明

  • 本项目用于搭建并自己DIY一个IP-KVM,底层开发板基于Luckfox Pico Ultra,采用Rockchip的RV1106G3(单核A7+内置256MB内存),和JetKVM使用的是同样的底层方案,因此很够很快速的移植和使用JetKVM的软件。

  • HDMI采集芯片采用东芝TC358743 HDMI转MIPI-CSI,最大1080p@60hz,但是因为Pico Ultra的CSI接口只接了2lanes,因此最大只能到1080p@30hz,略有遗憾,可能会有些奇怪系统不支持30FPS。

  • 扩展板设计已在嘉立创开源,硬件部分见下方嘉立创链接,本项目主要用于系统和软件层面的移植说明

硬件扩展板链接:https://oshwhub.com/madbob/luckfox_tc358743 PS: Luckfox自己也出了个PicoKVM,但是貌似没开源

系统预编译

软件开发环境使用Ubuntu 22.04,系统基于Luckfox-pico的SDK

首先进行一次系统预编译,将uboot,kernel,rootfs都编译好,后续修改再编译会方便些 系统编译基础知识见官方文档:https://wiki.luckfox.com/zh/Luckfox-Pico-Ultra/SDK-Image-Compilation/

# 安装依赖
sudo apt-get install -y git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config bc python-is-python3 passwd openssl openssh-server openssh-client vim file cpio rsync

# 拉SDK
git clone https://github.com/LuckfoxTECH/luckfox-pico
cd luckfox-pico

# 选择Luckfox Ultra W的配置文件,emmc,buildroot
./build.sh lunch

# 跑一遍编译
./build.sh 

编译好的镜像如何烧录参考官方教程里的Linux环境:https://wiki.luckfox.com/zh/Luckfox-Pico-Ultra/Flash-image

系统移植

系统移植需要进行以下几个步骤: 设备树: luckfox-pico/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-ultra-ipc.dtsi

  • csi2_dphy0配置
  • I2C4支持TC358743芯片
  • 删除RKISP相关,因为是HDMI转的,用不到ISP

TC358743驱动:

  • 复制JetKVM里的
  • luckfox-pico/sysdrv/source/kernel/drivers/media/i2c/tc35874x_regs.h
  • luckfox-pico/sysdrv/source/kernel/drivers/media/i2c/tc35874x.c
  • luckfox-pico/sysdrv/source/kernel/include/media/tc35874x.h
  • tc35874x.c里的EDID_1920x1080_60 数组代表了EDID信息,由于只支持30FPS,因此这里实际修改为1080P@30

内核: luckfox-pico/sysdrv/source/kernel/arch/arm/configs/luckfox_rv1106_linux_defconfig

  • CONFIG_VIDEO_TC35874X=m 添加TC35874X编译ko选项

驱动加载:luckfox-pico/sysdrv/drv_ko/insmod_ko.sh

  • 这个文件决定了系统启动后加载哪些驱动
  • 删除没用的摄像头驱动
  • 添加tc35874x.ko

RkLunch.sh:开机启动jetkvm软件

将src中对应的文件都复制到luckfox-pico对应的目录下,再重新编译就行了

参考install.sh脚本,也可以运行脚本直接复制文件


./install.sh

# 进入SDK目录
cd luckfox-pico
# 编译系统
./build.sh 
# 烧录镜像
sudo ./rkflash.sh update

JetKVM软件移植

JetKVM软件主要分为两个项目:

1. jetkvm_native

  • 原项目地址:https://github.com/jetkvm/jetkvm-native
  • 采用C语言开发,负责视频编码,触摸屏控制和状态显示
  • 调用瑞芯微的rockit实现对csi视频的硬件编码,与jetkvm_app程序使用/var/run/jetkvm_video.sock进行通讯
  • 移植需要删除lvgl和屏幕ui相关功能,仅保留video编解码相关,简化功能
  • 移植后项目见:https://github.com/wl56012102/jetkvm-native

2. jetkvm_app

  • 原项目地址:https://github.com/jetkvm/kvm
  • 主项目,使用go开发后端,nodejs+react做前端
  • 实现WebRTC视频通讯,网页相关操作界面,HID设备模拟等功能
  • 移植简化功能
  • 移植后项目见:https://github.com/wl56012102/jetkvm-app

3. 软件编译

# 安装编译依赖
sudo apt-get update &&
sudo apt-get install -y --no-install-recommends \
  build-essential \
  device-tree-compiler \
  gperf g++-multilib gcc-multilib \
  libnl-3-dev libdbus-1-dev libelf-dev libmpc-dev dwarves \
  bc openssl flex bison libssl-dev python3 python-is-python3 texinfo kmod cmake

# 下载jetkvm-native代码
git clone https://github.com/wl56012102/jetkvm-native
cd jetkvm-native

# 下载Jetkvm-native依赖
BUILDKIT_VERSION="v0.2.2"
wget https://github.com/jetkvm/rv1106-system/releases/download/${BUILDKIT_VERSION}/buildkit.tar.zst
mkdir -p /opt/jetkvm-native-buildkit
tar --use-compress-program="unzstd --long=31" -xvf buildkit.tar.zst -C /opt/jetkvm-native-buildkit
# 编译,可执行文件在build下
make
cd ..


git clone -b dev https://github.com/wl56012102/jetkvm-app.git
cd jetkvm-app

# 需要预先装好go和nodejs环境

# 编译前端
make frontend
# 编译整个二进制包,生成的文件在bin下
make build_release


4. 软件部署

在开发板刷好系统后,串口或者IP SSH登录,将编译出来的两个可执行文件放到/userdata/jetkvm/bin/ 目录下

# 删除没用的开机脚本和usb hid
cd /etc/init.d/
rm S99usb0config
rm S99python
rm S50usbdevice
rm S99luckfoxconfigload
rm S99luckfoxcustomoverlay
reboot 

#创建目录
mkdir -p /userdata/jetkvm/bin

# 在编译的机器上将文件复制到对应目录下
scp jetkvm-native/bin/jetkvm_native root@{机器IP}:/userdata/jetkvm/bin/
scp jetkvm-app/bin/jetkvm_app root@{机器IP}:/userdata/jetkvm/bin/

# 添加可执行权限
cd /userdata/jetkvm/bin/
chmod +x jetkvm_app
chmod +x jetkvm_native

# 运行程序
./jetkvm_aop


用浏览器访问设备IP,如果网页有初始化显示,则表示移植成功,如果运行有报错,查看对应报错并处理。

开机自启

最后把开发板的HDMI和USB-C接到被控制设备上,等待几秒开机,如果成功看到画面并能控制设备,表示DIY KVM 成功!

View on GitHub
GitHub Stars13
CategoryDevelopment
Updated1mo ago
Forks4

Languages

C

Security Score

70/100

Audited on Jan 27, 2026

No findings