Nihiue / open-ip-kvm

Build your own open-source ip-kvm device
MIT License
388 stars 73 forks source link
arduino ip-kvm linux-board raspberry-pi

Open IP-KVM

This project provides an open-source IP-KVM solution.

Related article:

DIY 一个运维神器 Open IP-KVM

English Version By Google Translate

What is IP-KVM

KVM Over IP (IP-KVM) is a hardware based solution for remote access to your computer or server.

The unit plugs into the Keyboard, Video and Mouse ports of a computer or server and transmits those to a connected user through a network.

IP-KVM vs RD software(VNC/RDP/TeamViewer)

Features

Demo Video

screenshot

System Diagram

diagram

Hardware Requirements

Deploy and Run

1. Prepare Arduino Leonardo

Upload program 1. Download and install [Arduino IDE](https://www.arduino.cc/en/software/) on your PC. 2. Connect leonardo to PC via USB 3. Download arduino code file [virt-hid-arduino.ino](https://raw.githubusercontent.com/Nihiue/open-ip-kvm/main/virt-hid-arduino/virt-hid-arduino.ino), Open it with Arduino IDE, then click `Sketch/Upload (Ctrl + U)` 4. Disconnect leonardo USB
Reference: How to connect serial port ![image](https://user-images.githubusercontent.com/5763301/198872791-cbac6e09-562a-43ae-82fb-a5533461d36b.png) ![serial](https://user-images.githubusercontent.com/5763301/198873347-8bade4fc-e682-4f46-a115-ec6dc4e09d22.jpg)

2. Prepare Linux SBC

SSH to linux SBC with your pc.

Deploy App and Dependency on Linux SBC * Build and install [MJPG-Streamer](https://github.com/jacksonliam/mjpg-streamer) * [How to build MJPG-Streamer](https://www.acmesystems.it/video_streaming) * Install Node.js 14.x+ * [Install NodeJS on Armbian](https://www.autoptr.top/htmls/i12bretro/0507) * Clone repo and install its dependency * `git clone https://github.com/Nihiue/open-ip-kvm.git` * `cd open-ip-kvm && npm install`
Connect IO and edit config * Connect IO * HDMI-USB capture device via USB * Arduino Leonardo via native serial port or USB-TTL adapter * Edit `open-ip-kvm/server/config.json` * `mjpg_streamer.device`: path of HDMI-USB capture device * `serialport`: path of serial port

3. Run

  1. Connect HDMI output of target computer to HDMI-USB capture device
  2. Connect target computer to leonardo via USB
  3. Run cd open-ip-kvm && npm run start on linux SBC
  4. Turn on target computer
  5. Open http://[IP of Linux SBC]:8000 in web browser

How to control

License

MIT

Credits

mjpg_streamer

For production environment, use Pi-KVM