向日葵控控盒子晓得吧? 简直是很好用的了, 但是太贵了, 而且似乎它有一些特征会被一些软件识别出来. 那么我们来自制一款特征不明显的IP KVM吧.
方案
其实IP KVM也不难做, 无非就是采集屏幕+遥控键鼠. 屏幕采集可以使用采集卡, 遥控键鼠则就需要用到单片机进行模拟了.
在模拟键鼠方面可选型也有不少, 首先就有PS/2和USB HID两种大方向可以选择. 在USB HID方面, 可选的方案有: 树莓派的OTG/ Arduino Leonardo/ ESP 32/ CH9329; PS/2的话则只需要随便一个单片机进行编程即可了.
如果是使用树莓派的话, 可以看看pikvm这个项目, 一个树莓派配一个采集卡即可实现了, 而且这个项目的前端也做的很不错, 可以参考文章自行实践: DIY带外管理 · 强悍Pi-KVM | 渔人小径 (fisherworks.cn)
另外就是, 使用单片机模拟PS/2键鼠的话似乎也挺不错的, 首先PS/2可以实现键盘唤醒电脑, 其次PS/2不像USB HID那样会有很多的特征. 也许可以用MCU试一试模拟PS/2呢.
我用的方案是X86主机+CH9329模拟键鼠+MS2109采集卡, 软件使用修改过的open-ip-kvm, 组网使用自建的tinc局域网.
整个架构如下所示:
硬件
硬件方面, 我使用了一台普通的X86电脑当中心服务器; 使用独立的CH9329模块用杜邦线连接了CH340G的TTL模块; 采集卡则在淘宝上购置了一个30元左右的USB2.0采集卡. 同时为了不影响正常使用屏幕, 我还加了一个HDMI一分二的分屏器, 这样就可以在屏幕上同步显示画面了.
此外, 也可以购买CH9329双头线, 比起来用杜邦线连接更为可靠一些. 除了换跳线的话可能会不太方便. (淘宝搜索: USB键盘鼠标控制器双头线)
关于CH9329
关于该模块的使用, 可以参考该文章: CH9329双头线使用说明-CSDN博客, 相关的工具和文档可以在官网下载: 串口转HID键盘鼠标芯片 CH9329 - 南京沁恒微电子股份有限公司 (wch.cn).
1. 修改USB特征
将CH9329模块(双头线的"受控端")插到电脑上, 使用官网提供的配置软件, 先"搜索设备", 然后"获取参数". 之后在软件里设置一下VID/PID/Manufact和序列号等参数. 将这些参数改成实际的键鼠的.
2. 修改工作模式
芯片默认的"工作模式"在"模式0: 模拟标准USB键盘+USB鼠标设备+USB自定义HID类设备". 这个模式功能最全, 但是却可以被配置软件探测到. 为了防止被受控电脑利用这一协议探测, 所以要把它切换到"模式2: 模拟标准USB键盘+USB鼠标设备"
如果是用的双头成品线的话, 可以使用配置工具在软件层修改. 像我是用的模块, 则用跳线帽把MODE 1引脚拉到GND上即可.
串口工作模式无需修改.
软件
- 如果使用的是Linux的话, 将要运行OpenIPKVM服务的用户添加到
dialout
和video
用户组(这两个用户组可以使用ls -l
查看/dev下的串口文件和video文件获得), 否则的话会类似Cannot open /dev/ttyUSB0: Permission denied
的错误. - 如果是Windows的话, 需要安装CH340G的驱动.
如果像我一样使用了CH9329模块的话, 则克隆我修改过的仓库: ciaoly/open-ip-kvm at dev (github.com);
Arduino Leonardo的话, 克隆原来的仓库: Nihiue/open-ip-kvm (github.com)
我的仓库如果不能用的话, 试试切换到dev分支. 如果还不行的话, 提issue. 截至今天我也没来得及做测试.
之后按照NodeJS项目的步骤运行服务即可.