Sipeed 新推出了 NanoKVM PCIe 版本,简直是没有 BMC 的台式机和工作站的福音。有了这个就可以轻松实现以往服务器才有的远程管理功能。
我这次收到了 Sipeed 送测的 NanoKVM PCIe 顶配版本,包含了 PoE 和 Wi-Fi 功能,系好你的安全带,我们马上开始。

外观
这次工业包装风格,非常简洁,内部由 EVA 材料填充,可以有效保护 NanoKVM PCIe 在运输过程中不受损坏。
附件中包含2条USB2.0 A转C口线,螺丝刀,半高PCIe挡板,HDMI线,棒状天线,以及杜邦线。




卡本身是半高的,因此可以很好的适应各种机箱。极端情况下,甚至可以不插在主板上,直接使用主板USB供电。
全高机箱适配情况:


半高机箱适配情况:


性能指标&结构
我们开看下拆解后的具体结构和 IC 方案。其中 OLED 屏幕是由一个3D打印的小支架来固定的。如果在更换PCIe挡板的时候,屏幕偏移的话,可以稍微调整下就可以将屏幕对准开窗了。

主芯片使用的是算能的 SG2002,这个IC集成了1 x C906@1GHz + 1 x C906@700MHz 和 1 x Cortex-A53@1GHz,另外提供了 256M 的内存。系统默认启动到的是 RISC-V大核。


HDMI 转换使用的是 Lontium 的 LT6911UXC,这个芯片将 HDMI 2.0 信号转换为 MIPI 或 LVDS 输出,同时具备完善的音频处理能力和灵活的控制接口。可以处理4K@60Hz 的 HDMI 2.0 信号。所以其实视频信号的瓶颈其实在 SG2002 上。不过体验下来 1080p 是还算流畅的。

外部连接
从上到下依次是 Wi-Fi SMA 母座,以太网接口, BOOT 按钮,HDMI接口,USB-C 接口(HID,连接到主板上用于模拟鼠标和键盘),STATUS 指示灯,状态显示 OLED,USB-C 接口(供电)。



Wi-Fi 需要注意的是选配的,另外如果使用半高挡板,是没有 SMA 母座的空间的,因此建议如果要用半高挡板,可以考虑买一个贴片 Wi-Fi 天线,然后从机箱的其他部分将天线引出或者贴在机箱内没有金属屏蔽的部分即可。

以太网接口可选配 PoE,HDMI 接口建议使用附带的 HDMI 线,不会阻挡下面的 USB-C 接口。(下图是一个DP转HDMI的转接线,这种线通常内部含有转换芯片,因此插头会很大,会阻挡下面的USB-C接口)

USB-C 接口部分,其中一个是 USB 2.0 接口,这个接口内部是一个 USB 复合设备 (不是 HUB,HUB 是 USB 组合设备),插到电脑上用来给电脑提供 USB HID (键鼠)和 USB 存储设备(装入镜像可以引导)。
另一个则只有 5V+ 和 GND 两个针脚,所以这个接口只能用来给 NanoKVM 供电。
这里有个小建议,将第二个 USB-C 接口的 D+ 和 D- 针脚也引出,这样用户可以自行决定使用哪个 USB 接口来作为数据传输,可以有效避免 HDMI 插头过大阻挡 USB-HID 接口无法插入数据线的问题。

当然这里也有个小技巧,就是将 USB HID 的排线拔掉,然后用杜邦线直接接在主板上,这样就能避免 HDMI 插头过大,USB 插头插不进去的情况了,也能有效节省主板的 USB 接口。

状态显示 OLED 屏幕是我最喜欢的部分,可以显示 网络连接状态,HID 使用状态, IP 地址,当前分辨率,帧率,甚至可以展示二维码扫码链接 AP。

内部连接
PCB 上有 UART 针脚,用于串口连接。

侧面有双 9 pin 的 JFP1 连接针脚,用于连接主板的 Power, Reset 和 Power LED, HDD LED JFP1 针脚。其中母座是用于连接主板的,公座则是连接到机箱上,这样机箱上的原有按钮和指示灯也可以正常工作。

按照主板的针脚定义连接即可。

需要注意的是,Power LED 正确连接后,是在界面上有显示的,开机按钮会显示绿色。HDD LED 目前则没有显示,期待后续版本能支持。

9 pin 下面就是 USB 针脚,上面4个是 USB HID,下面 2 个是供电用的。将这个线拔掉,然后连接到主板的USB针脚上也是可以的,而且走线更为简洁不占用主板背面的USB接口。

然后是 PCIe 供电金手指,需要插到一个PCIe 插槽中进行供电,也只有供电作用,没有其他作用。
供电
NanoKVM PCIe 支持多种供电方式,包括 USB 供电,PoE 供电,以及 PCIe 供电。如果主板上有空闲的 PCIe 插槽,则建议直接使用 PCIe 供电,这样最为简单。
如果条件允许可以再搭配一个 PoE 供电。或者用一个 USB 充电头供电。另外如果主板有关机 USB 供电功能,也可以考虑将 USB 的 pin 直接插在主板上关机供电的 USB 接口或者 pin 上。我的建议还是另外一路供电如有必要尽量不从主机取电,可以有效避免单点故障。
PCIe 规范中是有 Standby 关机供电的,因此即使关机后,只要 ATX 电源没有断掉,NanoKVM PCIe 仍然可以正常工作。
我测试了在 PoE 情况下从主板上拔下来,然后插入 USB 供电,拔掉 PoE,最后再插回主板,拔掉 USB供电,整个过程 NanoKVM 可以正常工作,无任何掉电。如下图,为直接PoE供电。

在主机待机状态,NanoKVM PCIe 需要大概 0.136A 左右的电流。

而在视频传输状态(1080p 无损 60fps拉满),NanoKVM PCIe 需要大概 0.186A 左右的电流。

测试中的最大电流应该是视频传输的同时向 USB 存储里面拷贝东西,此时电流大概在 0.201A 左右。

所以 5V1A 的普通 USB-A 口充电头供电完全没问题。
测试开始
本次测试使用的镜像版本是v1.3.0,应用版本是 2.1.2,测试采用PCIe + PoE 供电,测试平台为十朝元老 MSI X79A-GD45 主板。不过 NanoKVM PCIe 本身其实与平台无关,甚至平台没有 PCIe, 只要有视频输出和 USB2.0 接口即可使用。

测试系统使用 windows 10,测试过程是:
虚拟键盘按 Delete 键进入 BIOS 界面,调整 boot 顺序从装有windows10 安装镜像的U盘启动

开始远程安装 windows 10

最后进入到桌面并全屏播放视频,来测试高码率的情况会不会导致问题
(桌面操作完全没问题)

(全屏播放视频就略惨了,可以看到码率相当低,所以不要妄图当远程桌面用,玩游戏就更不要想了,应该也没人用 KVM 玩游戏吧哈哈哈)

整个测试过程中,配置 BIOS 和安装 windows 10 的过程非常顺利,没有遇到任何问题。
不过由于处理性能限制,看视频虽然不至于导致 NanoKVM 卡死,但是经过压缩的码率非常低。所以本身设备的定位还是以KVM为主,并不是远程桌面。有远程桌面需求的同学还是正常使用远程桌面比较好。KVM操作仅能满足基本操作,无法满足远程桌面需求。
下面来具体介绍下 NanoKVM PCIe 的图像传输,虚拟键盘,鼠标,以及镜像功能。
图像传输
图像传输目前分辨率支持
- 1920x1080 (16:9)
- 1280x720 (16:9)
- 800x600 (4:3)
- 640x480 (4:3)
需要注意的是,尽量将桌面分辨率和 NanoKVM 的分辨率设置一致,不然鼠标在绝对模式下会位置偏移。这里建议还是尽可能多增加一些分辨率,比如 1024x768,1280x800,1366x768,1440x900,1600x900,1680x1050 等。
视频在 H.264 编码,1080p,无损, 帧率 60fps 的情况下,传输带宽大概平均需要 1.5MB/s (12Mbps),峰值在 2.5MB/s (20Mbps)。这里使用的测试方式是直接全屏播放高码率视频。


所以如果需要保证流畅使用,建议至少使用 12Mbps 的带宽。
而 MJPEG 模式更多是为了在不支持 H.264 的情况下兼容存在的,该模式下对带宽依赖特别高,需要 11MB/s(90Mbps) 左右的带宽。

另外屏幕分辨率不匹配的情况有概率出现花屏,出现这种情况可以尝试将 NanoKVM 的分辨率调高一些,一般都会解决。(即 NanoKVM 作为容器,必须大于宿主机的屏幕大小。所以我猜花屏可能是缓冲区不足或者溢出导致的?)。

虚拟键盘&鼠标
虚拟键盘提供了 Windows 和 Mac 两种模式,建议增加一些组合键选项,这样可以在没键盘的情况下完成诸如按 Ctrl+F8 这样的操作。另外支持粘贴功能,可以将大段内容粘贴进去(只支持键盘按键的字符,因为是模拟键盘输入的)。


鼠标提供了很多指针,另外提供了绝对模式和相对模式,需要注意绝对模式下在某些 BIOS 界面无法使用,需要切换到相对模式。
镜像功能
NanoKVM PCIe 版本可以在卡背面插一个TF卡,里面可以拷进去多个 iso 镜像,然后选择镜像即可在开机时进行引导。可以方便的进行系统安装和重装。

我的测试中,ubuntu-server-24.04 镜像可以正确识别并且在UEFI模式进行引导并安装,但是 windows 10 镜像无论在 IDE 模式还是 UEFI 模式都无法引导。
我在测试过程中还遇到了比较奇特的情况,如果安装一些 HID 驱动支持比较少的系统(例如 ESXi 或者 OpenWRT),那么在进入系统引导过程后,可能会导致 HID 设备无法正常工作,需要尝试重置 HID,如果重置后仍然无法正常工作,则需要将 NanoKVM 完全断电重启才可以恢复。我已经将这个情况反馈给了 NanoKVM 的开发者,希望后续版本可以修复。
另外要注意,拷贝镜像尽量将TF卡拔下来用读卡器拷贝,而不是直接插在 NanoKVM 上拷贝,因为USB复合设备本身速度并不是很快,拷贝镜像会非常慢。

总之希望镜像功能还是要多打磨一下,目前感觉不是很可用。
远程访问
NanoKVM PCIe 支持通过 Tailscale 进行远程访问,设置非常方便,直接复制生成 tailscale 链接后登录,然后在浏览器访问生成的 IP 地址即可。(tailscale 跟 zerotier 类似,都是通过虚拟网络进行远程访问的工具)

脚本功能
NanoKVM PCIe 还支持运行脚本功能,可以方便的将脚本上传上去并随时运行。

以下是一个脚本示例,可以打印出当前的 Python 版本和 pip 版本。
import sys
from importlib.metadata import version
def print_hello_world_ascii():
ascii_art = """
██░ ██ ▓█████ ██▓ ██▓ ▒█████ █ █░ ▒█████ ██▀███ ██▓ ▓█████▄
▓██░ ██▒▓█ ▀ ▓██▒ ▓██▒ ▒██▒ ██▒ ▓█░ █ ░█░▒██▒ ██▒▓██ ▒ ██▒▓██▒ ▒██▀ ██▌
▒██▀▀██░▒███ ▒██░ ▒██░ ▒██░ ██▒ ▒█░ █ ░█ ▒██░ ██▒▓██ ░▄█ ▒▒██░ ░██ █▌
░▓█ ░██ ▒▓█ ▄ ▒██░ ▒██░ ▒██ ██░ ░█░ █ ░█ ▒██ ██░▒██▀▀█▄ ▒██░ ░▓█▄ ▌
░▓█▒░██▓░▒████▒░██████▒░██████▒░ ████▓▒░ ░░██▒██▓ ░ ████▓▒░░██▓ ▒██▒░██████▒░▒████▓
▒ ░░▒░▒░░ ▒░ ░░ ▒░▓ ░░ ▒░▓ ░░ ▒░▒░▒░ ░ ▓░▒ ▒ ░ ▒░▒░▒░ ░ ▒▓ ░▒▓░░ ▒░▓ ░ ▒▒▓ ▒
▒ ░▒░ ░ ░ ░ ░░ ░ ▒ ░░ ░ ▒ ░ ░ ▒ ▒░ ▒ ░ ░ ░ ▒ ▒░ ░▒ ░ ▒░░ ░ ▒ ░ ░ ▒ ▒
░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░
"""
print(ascii_art)
def print_python_version():
version = sys.version.split()[0] # Get only the version number
print(f"Current Python version: {version}")
def print_pip_version():
pip_version = version("pip")
print(f"Current pip version: {pip_version}")
print_hello_world_ascii()
print_python_version()
print_pip_version()

可以看到 python 版本比较新,3.11.6 是 2023年10月发布的。不过这里页面的文本展示出了问题,建议增加一个 <pre>
标签,这样文本展示会更好看一些。
同样,我还编写了一个shell脚本,用于简单监控 NanoKVM 的网络,磁盘,内存,负载情况。

所有脚本可以到这个项目 NanoKVM Scripts 下载。
终端功能 & Wake on LAN
NanoKVM PCIe 直接提供了网页终端,可以快速进入系统terminal,并且支持通过串口连接到其他设备终端,这个功能最大的优点是,可以串口再连接个内网的串口设备,比如交换机或者UPS,来进行更多层次的远程管理。不过官方只提供了杜邦线,所以有需要的同学可以考虑弄一个串口转杜邦母头的线。
NanoKVM PCIe 还支持 Wake on LAN 功能,指定目标 MAC 地址后,可以方便的远程唤醒目标设备。
总结
作为一款 KVM 产品,NanoKVM PCIe 的性能表现非常不错,可以满足绝大部分的 KVM 需求。建议将细节尤其是镜像功能再打磨一下,可用度又会上升一个层次。
考虑到 PiKVM 的售价(甚至不包括树莓派核心板还要自己再买一个),NanoKVM PCIe 还是非常不错的选择。我尤其喜欢这块 OLED 屏幕的设计,再也不用登陆到路由器查看DHCP新分配的IP地址来推测设备的IP地址了。
目前这款产品已经进入量产,具体可以查看 Sipeed 的 NanoKVM PCIe 产品页面
mini oled 屏含金量最高的一集
cola整体网络2 months ago我的PCIE版本到货了,但是USB-HID设备兼容性太差了,主机板还在固件启动的时候无法响应任何键鼠操作,包括grub引导界面,直到进入系统后才能响应操作。于是只好掏出之前的ASUS IPMI管理卡装回,乖乖的把它丢回盒子里吃灰了。
把模式调节一下试试?有的绝对模式不起作用。另外可以尝试在设置中把存储功能关掉试试。(说实话这部分的确需要打磨,起码存储部分在我眼里可用性很差了)
cola整体网络2 months ago问题是键盘也不起作用,存储关闭了也不行
草
苏大强2 months ago看起来不错
T0cKer2 months agoLite 用户飘过,考虑换一个 PCIE 版本的试试。
yanling2 months ago也就是说,是一个类似“ipm“ 那样的硬件,我在想,如何远程访问。这样就可以做一个” 家庭IDC“了,去国外租个车库就可以开接物理机托管了,
根据实际经验,特别长时间的远程还是很不容易的。这种情况最好还是有个人能定期维护,或者干脆买VPS。
yanling2 months ago能远程操作重装就行,我看都有sdk的文档,参考添加一个功能也不难,可以,看好前景
TotalAshes2 months ago草,十朝元老还行
john_liao2 months ago要是有个独立的架构也不错,毕竟pice要占用一个槽位
也有 cube 版本 https://sipeed.com/nanokvm
Martis2332 months ago这竟然还带一个小屏幕…最开始看到这玩意宣传图还以为是贴纸
单色oled,效果非常不错,可以说是大加分了
Martis2332 months ago这太酷了,很符何我对外来生活的想象 😂
naivekun2 months ago得做点差异化功能出来呀,不然垃圾佬明天把25包邮老母鸡板子套个转接板插pcie槽一样用
感觉最难解决的是HDMI信号转换?其他的垃圾佬设备都能搞定
naivekun2 months ago其实挺简单,usb插一个ms2130就行了。但是我没有测试过转CSI的稳定还是USB采集的稳定,因为我都是aspeed…
山里老王2 months ago请问这个kvm是如何获取主板输出的视频信号的?我貌似没有看到任何的视频输入接口,仅有一个usb主机与主板相连 🤨
需要用HDMI线将显卡与这个卡连接才可以
missing2 months ago那岂不是需要在机箱外面拖一根hdmi线?
对的,所以附带了短的HDMI线。