This repro contains all the code and documentation for the MiniKvm project and the CH9329 controller.
The MiniKvm is a personal project designed and implemented by Andrea Allievi (AaLl86) for "totally" remote controlling machines from the Firmware to the OS execution, allowing the author to work remotely from Italy on test machines located elsewhere.
There are already similar projects around the web, like:
All those solution were not a good fit for the author since:
- The majority of them were Raspberry PI based
- Maximum speed and resolution was not acceptable (24 Fps max)
- They allow you only to control one target at time
- They were kind of expensive
Hence I started to design my own one, based on Video capture cards, Ch9392 controller and relays (connected to Arduino or the GPIO interface of the motherboard).
- Being able to transmit Video, keyboard and mouse signal through Internet (and possibly audio)
- Power on, off, and reset the target
- Being fast enough to not see significant slowdowns (target: 60Fps)
- OS independent. The project should not require anything in the target
- Generic enough to be used with multiple Power switch implementation (there are plenty)
- Cheap enough to be usable by everyone (try to stay under the 100 USD base price)
Here are the needed material for running a base version of the MiniKvm (no power switch
- FT232RL USB to serial to communicate with the CH9392 (18.90 $)
- Graphics capture acquisition card (4K / FULLHD 60 Hz) (25.99 $)
- CH9392 Chip (around 2.00 $)
The stuff listed above will allow you to try a basic (but fully working) MiniKvm for a total of 47 USD. If you would like to add also the power switch capability, or to design a always on device that controls all of your target, you just need the following:
- For sharing an HDMI port in the target HDMI Splitter (10.59 $)
- For power switching 4 different targets 5V Relay (9.90 $
- Relay box 125 x 80 x 35mm (12.99 $)
- Arduino uno (for controlling the Relay) (€29,30)
- Aaeon board (perfect as host, it has GPIO ports) (399.00$)
This repository contains the following:
- CH9329.cs - C Sharp code that implement the Protocol transmission mode for the CH9329 controller connected through a serial port.
- Specs - CH9329 specifications, Chip serial communication protocol (translated in English) and test tools
- Arduino - Includes the Power switch implementation using an Arduino Uno controller, and some other (dumb) trials with it :-)
- Release - Includes compiled version of the MiniKvm project targeting the .Net framework 8
The source code in this repository is published with a "free-to-use" license, similar to the GPL one:
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
The only modification that is required is to inform and list me (AaLl86, the author) in case you are going to use or modify the code... but, at the end of the day, a part of that, you can do whatever you want at your own risk with the code.
I maintain also a PRIVATE Github repository for the MiniKvm project: https://github.com/AaLl86/MiniKvm
Since the MiniKvm is still under active development, since I am not really a fun open-sourcing everything and I do not know the implications of it, it is private, but you can still collaborate (check, modify and reuse the code. I would love to have more people on it) by sending a mail or a Twitter message to me (aall86@gmail.com).
I will sooner or later write a blog post about how this thing works under the hood.
