ESPKVM an Open Source Kvm with IP and an ESp32
18 august 2026
My old kvm has finally died, at first time I think I have found the culprint : a capacitor on a DC to DC
converter has died.
The replacement of the capacitor doesn't fix the problem, one other component is dead and I'm not good enough
to find the problem fast and easily, I still have a lot to learn in that domain. But I still need to
access to our servers, in particular in case of a cold restart.
I look for an a alternative to a "classical datacenter kvm with IP", why ? Really simple, just check
the price for a KVM console with IP.... even for a used one, that's interesting. When I buyed mine in
2020, the kvm was a used one for 800$ CAD. Not free but a reasonable price at this time.
The company that build the kvm is still there, they even took the time to reply to me, but the kvm is
to old and they don't have any spare part even if you are ready to buy it. They don't have any tehcnical
plan or documentation that can help me to understand what is the problem.
I search on the internet, google, digikey .... to try to find the DC to DC with the number on the pcb but
nothing.
Ok may be it's time to look for an alternative.
After eb...y, New...g, am...z..., I found some really cheap kvm with all cables and almost free
shipping but with absolutely horrible review, the kvm died after 1 month, kind of work but now
my display flicking horribly and many other problem.
Not really good in my point of view. All of this really really cheap kvm are made in ch...n...,
Sorry but I have some concerns about this kind of hardware directly connected to our servers. If
you want to know why ?
Just looks at the price of the tenda ac1200 wifi router on am...z... than
check this github Advisory Database for tenda : https://github.com/advisories?query=tenda
85 pages of vulnerability, stack buffer overflow, cleartext storage and exposure of WPA2
credentials ... at the time I view the page there is 2125 advisories.
Amazing didn't it.
Recently the firmware of their router has been encrypted and all previous version has been removed
from the download page... Not sure why but may be there is something strange in the neighborhood.
It's time to search for something different and my be open source.
This is a nice hardware and a really nice work but the price of a PI is around 250$ CAD, for the
PiVKM V4 Mini, V3, PiKVM Switch, and this is big as the Pi. I'm not a fan to use the DIY version
because of wifi, bluetooth. I think this is not a good idea to put your server console on wifi...
You can check PiKVM at : https://pikvm.org/
For a while I made thing with ESP32, this is cheap, I can build the firmaware relatively easily by
myself, I can find help for the code with Claude code and I learn more about this little chip and
electronic. I work with a friend on a complete thermostat for hot and cold management for reversible
air conditioner with buttons and electronic relay, a e-paper for screen all running with an ESP32.
After some research I finally found the "Graal", ESPKVM. A small ESP32-P4-ETH, no wifi, no bluetooth
just a RJ45 with a POE module, a Tf slot, 32MB of PSRAM 32 MB of Flash, with a capture device the
Geekworm C790.
But wait there is more :
An IP-KVM built from an ESP32-P4 and a TC358743 HDMI bridge. The target
machine’s screen, and a USB keyboard and mouse it cannot tell from real ones, over HTTPS —
even when it has no operating system at all. Work live with Home Assitant, got a virtual device,
can boot your server from a disk image stored on an TF Card, Https, Wireguard, all the code
source is available, not need for vscode, no platformIO ....
OK Flashing from the web browser not the best idea but you can do it if you want....
The ESP32 is a WWaveshare ESP32-P4-ETH with 100M Ethernet and an sdcard slot, a Raspberry-Pi-
compatible CSI connector, USB-C OTG and a microSD slot. Another ESP32-P4 board with Ethernet and
the same CSI connector can run it too — the pins are set in menuconfig, not the code.
The Geekworm C790, A TC358743 HDMI → MIPI CSI-2 bridge that turns the target’s HDMI into a camera
stream the ESP32-P4 can read. Any other TC358743 capture board should do just as well.
You can also add a PC817 optocoupler module A pair of these cheap two-channel boards lets ESP-KVM
press the target’s power and reset buttons and read its power LED, electrically isolated from the
machine. Skip it and everything else still works.
Another option is an I2C OLED — SSD1306 / SH1106 A 0.96″ 128×64 mono OLED on four wires. It shares
the capture chip’s I2C bus, so it needs no pins of its own and is auto-detected — the device draws
its IP, link, capture status and health across a few pages.
All details are available here :
ESPKVM : https://espkvm.io//
Easy just follow the instructions in the section "Getting started" :
The easiest way is flashing straight from the browser — Chrome and Edge can talk to the board
over USB, and nothing needs installing. If you would rather use the command line, download
the merged firmware image for your board from the releases page and write it at offset 0 with
esptool — one file, no unpacking:
esptool --chip esp32p4 -b 921600 write-flash 0x0 espkvm-
--merged.bin
Installing esptool, finding the serial port and the driver notes for Linux, macOS and Windows
are all in the flashing guide.
Then plug in Ethernet, HDMI from the target and USB to the target, and open https://espkvm.local/.
The browser will warn about the certificate once — the device signed it itself, and nothing else
vouches for it. Sign in as admin / admin; the console will not go any further until that password
is changed.
Accepting the warning is enough to watch the screen. For H.264 and for the keyboard and mouse
the browser needs a trusted connection, so download the device’s CA (Settings → Security) and add
it to your trusted authorities once — the README has the steps.
If your ESPKVM is not available at https://espkvm.local/ no problem.
Stop it connected the usb cables to your pc, open a serial port software like GTKTerm or putty
or any software that can open a serial communication, check your dmesg to find the TTYACMO or
TTYUSB to get the boot of the ESPKVM, get the mac address, setup a dhcp server (under openbsd it
take 2 or 3 minutes) and reserve an ip for the mac address of the ESPKVM and voila you can access
your kvm console via IP.
Test and limitations ESPKVM
If you have server, they probably have a vga port, not HDMI, you need to find a vga converter to hdmi
display. For my test I used this one :
BENFEI VGA to HDMI Adapter, 1080P Converter with Audio from Computer/Laptop VGA Source to
HDMI TV/Monitor
Due to limitation of the Geekworm C790 I reduce the resolution of the test pc I use to 1280x720
to get the video working.
If you don't have this mode (1280x720) on you X server you can add it with xrandr like this :
Inject and Apply the New Mode
This is probably not applicable if you have Wayland instead of X11.
ATTENTION TO SET MODE ON THE CORRECT MONITOR, don't do this from a ssh session, xrandr will detect
the screen of the current display not the remote.
# 1. Define the new mode in X11
xrandr --newmode "1280x720_60.00" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync
# 2. Bind the new mode to your specific display port
xrandr --addmode DP-2 "1280x720_60.00"
# 3. Switch your screen to the new resolution
xrandr --output DP-2 --mode "1280x720_60.00"
Make some test and if this is ok to make it permanent in your .profile (debian based distro) add
the same line at the begining of the file
The next test will be the usb cable to get the control of the mouse and keyboard of the remote
server.