# PicoKVM **Repository Path**: yfyf_510/PicoKVM ## Basic Information - **Project Name**: PicoKVM - **Description**: RV1106 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-03-16 - **Last Updated**: 2026-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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/ ```bash # 安装依赖 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脚本,也可以运行脚本直接复制文件 ```bash ./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. 软件编译 ```bash # 安装编译依赖 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/ 目录下 ```bash # 删除没用的开机脚本和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 成功!