Skip to content

(With CH9329 Support) Build your own open-source ip-kvm device

License

Notifications You must be signed in to change notification settings

slzKud/open-ip-kvm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About This Fork

This repo is modified from Nihiue/open-ip-kvm to use WCH CH9329 Relpace to Arduino Leonardo to Emulate HID.

The C0 C1 M0 M1 of the CH9329 module need to be all 1. (Protocol transmission mode, simulates keyboard, mouse and custom HID device). That is, pull out the jumper caps for these pins on the module board.

Why?

  • CH9329 modules is cheaper and smaller than Arduino Leonardo. (CH9329 modules only use 5CNY(~0.7 USD))

  • The peripheral circuit of CH9329 is relatively simple and easy to integrate on a PCB.

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)

  • RD software requires a working OS, and must be pre-configured. It often fails in an emergency situation
  • IP-KVM is out-of-band, so it can be used to install OS, setup BIOS or fix low-level issues

Features

Demo Video

  • Web browser as client
  • 1080P 30fps video stream
  • Full mouse & keyboard support
  • UI Indicator
  • Remote Paste: Input ASCII sequence

screenshot

System Diagram

diagram

Hardware Requirements

  • HDMI-USB capture device
    • Recommendation: MS2109 based devices link
    • Input: Up to 4K 30FPS
    • Output: Up to 1080P 30FPS @ MJPEG
  • Linux single-board computer
    • Recommendation: Phicomm N1, Raspberry Pi 4 or other models,
    • Recent linux kernel
    • 2+ USB ports
  • Arduino Leonardo link
  • CH9329 Modules
    • Emulate HID (mouse and keyboard)
  • Optional
    • USB-to-TTL Adapter
      • If linux sbc has no built-in serial port
      • Recommendation: PL2303HX
    • USB Wi-Fi Adapter
      • If linux sbc has no built-in Wi-Fi

Deploy and Run

1. Prepare Arduino Leonardo (see note on top)

Upload program
  1. Download and install Arduino IDE on your PC.
  2. Connect leonardo to PC via USB
  3. Download arduino code file 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

serial

2. Prepare Linux SBC

SSH to linux SBC with your pc.

Deploy App and Dependency on Linux SBC
Connect IO and edit config
  • Connect IO
    • HDMI-USB capture device via USB
    • CH9329 Modules 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 CH9329 Modules 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

  • Mouse
    • Click anywhere to enter pointer capture mode
    • Press ESC to exit
  • Keyboard
    • Press Enter to enter key capture mode
    • press Shift + ESC to exit

License

MIT

Credits

mjpg_streamer

For production environment, use Pi-KVM

About

(With CH9329 Support) Build your own open-source ip-kvm device

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 78.4%
  • HTML 14.0%
  • CSS 7.6%