IP KVM’s are generally not cheap. They sure do come in handy though especially for someone who is not interested in lugging around a monitor, keyboard and mouse with them when setting up new bare metal systems. In comes the PiKVM project. For the cost of a Raspberry Pi 4, HDMI-CSI bridge, USB A to USB C cable and a SD card you can create a low cost but effective IP KVM which comes in at under $100 USD. So I built one and wanted to test it out.
Putting it together
This part is fairly straight forward when going off the PiKVM documentation. Download the correct version of the OS and flash it to a memory card. Insert into the Pi, provide the Pi with network access and plug the USP A to USB C cable into the Pi and machine you are wanting to control. The Pi will automatically grab DHCP on the network. Interface the HDMI input with the monitor output of the machine to be controlled and power the machine on. At this point the Pi should boot and you should be able to browse to the Pi’s web interface.
As the Pi 4 supports USB OTG, the power port can also be used for data transfer. In this case, it is used for power, keyboard, mouse and even DVD drive (more on that in a bit). The one gotcha (which the PiKVM documentation points out) is that some systems don’t supply power to the USB ports when the machine is powered down. In my case with the Minix Z83 I’m attempting to load Debian 11 on this is the case as well however, the Z83 does not remove power from the USB port when in a reboot command is issued so I will be able to let the Minix load it’s existing OS, reboot and then access the BIOS to select a new boot order (and configure it to provide power to the USB ports) without losing power to the Pi.
Remote Control
When browsing to the PiKVM in a web browser, you may get a certificate error…this is okay but some browsers do warn you. The login prompt looks as such.
Default username and password is admin/admin. You are provided with several options to access the KVM, PiKVM’s terminal (easier than SSH in some cases) and logout. Click on KVM and you should be presented with a video window launching the monitor output of the machine you are remotely managing.
As can be seen in the above picture, my Minix was running on Windows 10 (which is a horrible OS choice for this particular hardware configuration, more in another post). From here we can manage the computer, login install software, reboot, etc. Issuing a reboot and smashing the delete key gets me into the BIOS.
Another cool feature is the ability to mount ISO images as a virtual disk image. In my case I’ve gone ahead and taken the time to load my usual ISOs (VyOS 1.2, Red Hat 8, Fedora Server, and Debian 10). So I’ll go ahead and attach the Debian 11 install ISO and boot off it it (which I actually attached before I issued the reboot from Windows).
Everything else, is like installing Debian as if I was interfaced with a real monitor and keyboard.
Take away
Minus some minor configuration changes I made to my PiKVM instance (which are well documented in the project’s documentation) for personal preferences…this just worked out of the box more or less which was quite surprising as typically one would spend some time messing with things. Overall, I think this a very well built image and the PiKVM team definitely deserves kudos for what they have managed to build. I recently watched Jeff Geerling’s video comparing several Pi based KVM solutions and while there are some “nicer” setups out there…I simply have nothing but praise to say about this. In three days I’ve literally used multiple times for configuring devices around my house. Have to say, I am definitely impressed with this solution .