← All boards

ESP-KVM is free, open-source firmware that turns the Waveshare ESP32-P4-ETH into an IP-KVM: the screen, keyboard and mouse of another computer in your browser, from the BIOS up. Add an HDMI capture board, flash it from the browser, and it runs with no Linux, no app and no cloud. What it does → Try the demo →

Waveshare ESP32-P4-ETH
The device - the one this project is built on

Waveshare ESP32-P4-ETH

ESP32-P4 with 100M Ethernet, a Raspberry Pi camera connector, USB-C OTG and a microSD slot.

StatusRun on hardware
ChipESP32-P4, rev 1.x or rev 3.x (an image for each)
Memory32 MB PSRAM, 32 MB flash
Network100M Ethernet
To the targetUSB 2.0 OTG on an MX1.25 connector
Capture15-pin Raspberry Pi camera connector
microSDyes
Measured1080p MJPEG 20 fps; 720p 45 fps

Install from the browser Waveshare product page

The board ESP-KVM was written on, and the default image: the flasher offers it first. Ethernet only, no Wi-Fi.

Wiring

  • The USB-C port is the flashing and console bridge (CH343), not the target's port.
  • The USB 2.0 OTG that goes to the target is on the MX1.25 connector, so the lead is MX1.25 to USB-A.
  • The target's 5 V comes back down that lead: pulling it at the target's end restarts the KVM.
  • The C790's 15-pin ribbon goes into the camera connector.

Measured

MJPEG at quality 70, rev 1.3 chip:

ModefpsBitrate
1920x10802017.5 Mbit/s
1280x72045.516.8 Mbit/s
1024x7685617.6 Mbit/s

A still screen costs nothing, since unchanged frames are skipped. H.264 on this chip runs at 5-7 fps at 1080p and 17 fps at 720p, but an idle desktop costs 170 kbit/s against MJPEG's 8.5 Mbit/s: it is for narrow links, not for smoothness. A rev 3.x chip does 22-24 fps at 1080p.

Good to know

  • The BOOT button (GPIO 35) is also an Ethernet pin, so the device reads it once, early in start-up. For the password reset: press reset, release, then hold BOOT.
  • The microSD writes at 40 MHz because the slot's power comes from the chip's LDO 4.
  • Waveshare ships rev 1.3 today, and the product code does not tell the revision. The boot log prints Chip rev:.

Another ESP32-P4 board with Ethernet and the same camera connector can run it too. The pins are set in menuconfig, not in the code.

Capture boards

Cases for it