Pi-KVM: Affordable BIOS-Level Remote Management for Your Homelab
Enterprise servers come with built-in remote management — iDRAC, iLO, IPMI. You can power cycle the machine, access the BIOS, mount an ISO, and watch the boot process from anywhere on your network. But consumer hardware and older servers often lack this capability entirely, or the IPMI implementation is so outdated it's a security liability.
Photo by Mika Baumeister on Unsplash
Pi-KVM solves this by turning a Raspberry Pi into a fully featured IP-KVM device. It captures the HDMI output of any machine, emulates a USB keyboard and mouse, and serves it all over a web interface. You get BIOS-level access to any machine — desktops, NUCs, mini PCs, old servers, even gaming rigs — for under $100 in parts.
Why Pi-KVM Over Traditional IPMI
If your server already has working IPMI, you might not need Pi-KVM. But there are several situations where it makes more sense than traditional out-of-band management.
| Feature | Pi-KVM | IPMI (iDRAC/iLO) | Consumer Hardware |
|---|---|---|---|
| BIOS access | Yes | Yes | No (need physical access) |
| Works with any machine | Yes (HDMI + USB) | No (server boards only) | N/A |
| Virtual media (ISO mount) | Yes | Yes (often needs license) | No |
| Cost | $70-150 one-time | Free (included) or $50-200 license | N/A |
| Security updates | Active open-source project | Vendor-dependent, often slow | N/A |
| Video quality | Up to 1080p60 | 720p-1080p (varies) | N/A |
| Web interface | Modern, responsive | Often dated Java applets | N/A |
| ATX power control | Yes (with wiring) | Yes (built-in) | No |
| Multi-machine | One Pi per machine (or KVM switch) | Per-server | N/A |
The biggest wins for Pi-KVM are with consumer hardware that has no IPMI at all, and with older enterprise gear where the IPMI interface is a Java applet that requires an ancient browser to function.
Hardware Options
You have three paths: buy a prebuilt Pi-KVM, build one from a kit, or assemble your own from parts.
Option 1: Pi-KVM V4 (Prebuilt)
The Pi-KVM V4 is a purpose-built device with a Raspberry Pi CM4 inside a metal case. It includes an integrated HDMI capture chip, USB-C emulation, ATX power control header, and a real-time clock. This is the easiest option if you want something that works out of the box.
- V4 Mini: For basic KVM needs without ATX control
- V4 Plus: Includes ATX power control, OLED display, and additional GPIO
Price is roughly $150-200 depending on the model and availability.
Option 2: DIY Build with Raspberry Pi 4
This is the most common homelab approach. You need:
- Raspberry Pi 4 (2 GB RAM is sufficient)
- HDMI capture device: A USB dongle based on the Macrosilicon MS2109 chipset ($10-15). Avoid random "4K capture" dongles — check the Pi-KVM compatibility list
- USB-C to USB-A data cable: For connecting the Pi's USB-C port to the target machine (this is how the Pi emulates keyboard/mouse)
- USB splitter cable (Y-cable): Specifically, a USB-C OTG cable that allows both power delivery and data connection simultaneously
- MicroSD card: 16 GB or larger, class 10 or better
Total cost: $70-100 depending on what you already have.
Option 3: Pi-KVM with a Raspberry Pi 5
The Raspberry Pi 5 is supported with Pi-KVM v4 software. The setup is similar to the Pi 4, but you need to use the Pi 5's USB-C port differently since it handles OTG mode through a different mechanism. Check the Pi-KVM documentation for Pi 5-specific wiring instructions.
Software Installation
Pi-KVM provides a dedicated OS image based on Arch Linux ARM. Don't try to install it on top of Raspberry Pi OS — use the official image.
Flashing the Image
# Download the appropriate image for your hardware
# For Pi 4 with USB HDMI dongle (the most common DIY setup):
wget https://files.pikvm.org/images/v3-hdmi-rpi4-latest.img.xz
# Flash to SD card (replace /dev/sdX with your SD card device)
xzcat v3-hdmi-rpi4-latest.img.xz | sudo dd of=/dev/sdX bs=64K status=progress conv=fsync
# Or use Raspberry Pi Imager / balenaEtcher for a GUI approach
First Boot Configuration
Insert the SD card, connect the Pi to your network via Ethernet, and power it on. Find its IP address from your router's DHCP leases, then open https://<ip-address> in a browser.
Default credentials are admin / admin. Change them immediately:
# SSH into the Pi-KVM (default: root/root)
ssh root@<pikvm-ip>
# Make the filesystem writable (Pi-KVM runs read-only by default)
rw
# Change the web interface password
kvmd-htpasswd set admin
# Change the root SSH password
passwd
# Return to read-only mode
ro
The read-only filesystem is a deliberate design choice. It prevents SD card corruption from unexpected power loss, which is a real concern with Raspberry Pis. Always run rw before making changes and ro when you're done.
Network Configuration
For a static IP (recommended for a management device):
rw
# Edit the network configuration
cat > /etc/systemd/network/eth0.network << 'EOF'
[Match]
Name=eth0
[Network]
Address=10.0.10.60/24
Gateway=10.0.10.1
DNS=10.0.10.1
EOF
systemctl restart systemd-networkd
ro
Put your Pi-KVM on the same management VLAN as any IPMI interfaces. This keeps all out-of-band management traffic separated from your production network.
Like what you're reading? Subscribe to HomeLab Starter — free weekly guides in your inbox.
Connecting to a Target Machine
The physical setup has three connections:
- HDMI: Run an HDMI cable from the target machine's video output to the HDMI capture dongle plugged into the Pi
- USB: Connect the Pi's USB-C OTG port to a USB port on the target machine. This is how the Pi emulates a keyboard and mouse
- Network: Ethernet from the Pi to your switch
Once connected, open the Pi-KVM web interface. You should see the target machine's display output in the browser, and your keyboard and mouse input will be forwarded to it.
ATX Power Control (Optional but Recommended)
Pi-KVM can control the target machine's power button, reset button, and read the power LED status. This requires wiring GPIO pins on the Pi to the corresponding front panel header on the target machine's motherboard.
The wiring uses optocouplers to electrically isolate the Pi from the target machine. The Pi-KVM V4 has this built in. For a DIY build, you'll need a small circuit board — the Pi-KVM project provides schematics. Alternatively, you can buy pre-made ATX control boards from community members.
With ATX control wired up, you can:
- Power on a machine that's completely off
- Force a hard power off (hold power button)
- Press reset
- See whether the machine is currently on or off
This is what turns Pi-KVM from a "fancy remote desktop" into a true out-of-band management tool comparable to IPMI.
Virtual Media: Mounting ISOs Remotely
One of Pi-KVM's most useful features is virtual media — mounting an ISO file so the target machine sees it as a USB drive. This lets you reinstall operating systems, boot rescue disks, or run diagnostics without ever touching a USB stick.
Uploading an ISO
In the Pi-KVM web interface:
- Click the drive icon (virtual media section)
- Upload an ISO file — it gets stored on the Pi's SD card or an attached USB drive
- Select the ISO and click "Connect"
- The target machine now sees a USB mass storage device with the ISO contents
For larger ISOs (Windows installation media is over 5 GB), you'll want to store them on an attached USB drive rather than the SD card:
rw
# Mount a USB drive for ISO storage
mkdir -p /var/lib/kvmd/msd/isos
mount /dev/sda1 /var/lib/kvmd/msd/isos
# Add to fstab for persistence
echo '/dev/sda1 /var/lib/kvmd/msd/isos ext4 defaults,nofail 0 2' >> /etc/fstab
ro
Booting from Virtual Media
Reboot the target machine, enter the BIOS/boot menu, and select the USB device. The Pi-KVM emulates a standard USB mass storage device, so it's universally compatible — no special drivers needed on the target machine.
Multi-Machine Setups
Each Pi-KVM controls one machine. If you have multiple machines to manage, you have a few options.
Dedicated Pi per Machine
The simplest and most reliable approach. One Pi-KVM per target machine, each with its own IP address. Use the Pi-KVM web interface's built-in support for switching between multiple instances, or just bookmark each one.
HDMI/USB KVM Switch
Use a hardware KVM switch between the Pi-KVM and multiple target machines. The Pi-KVM project supports controlling certain KVM switches to select which machine is active. This saves money on Raspberry Pis but introduces a single point of failure and limits you to one machine's console at a time.
Centralized Management
If you're running several Pi-KVMs, you can put them all behind a reverse proxy (Nginx, Caddy, Traefik) with a single entry point:
# Example Caddy configuration
pikvm-node1.lab.local {
reverse_proxy https://10.0.10.60 {
transport http {
tls_insecure_skip_verify
}
}
}
pikvm-node2.lab.local {
reverse_proxy https://10.0.10.61 {
transport http {
tls_insecure_skip_verify
}
}
}
Pi-KVM vs Other KVM-over-IP Solutions
Pi-KVM isn't the only option in this space. Here's how it compares.
TinyPilot: Another Raspberry Pi-based KVM solution. TinyPilot Voyager 2a is a commercial product with polished hardware. The software was open-source but transitioned to a proprietary model. Pi-KVM remains fully open-source.
JetKVM: A newer, purpose-built device with a compact form factor and built-in screen. It's more polished than a DIY Pi-KVM build but less flexible. Good option if you want minimal setup effort.
Lantronix Spider / Raritan: Enterprise KVM-over-IP appliances. Expensive ($200-500+ per port), but designed for data center reliability. Overkill for a homelab unless you find them used on eBay.
IPMI/iDRAC/iLO: If your server already has it, use it. Pi-KVM is for machines that don't have built-in management, or where the built-in management is unusable due to age or licensing restrictions.
Security Considerations
A KVM device has complete control over any machine it's connected to — keyboard input, display capture, power control, and boot media. Treat its security seriously.
- Network isolation: Put Pi-KVM on a dedicated management VLAN, not your general-purpose network
- Strong passwords: Change defaults immediately. Use unique passwords for the web interface and SSH
- HTTPS only: Pi-KVM uses HTTPS by default with a self-signed cert. For proper certificates, set up Let's Encrypt or use your internal CA
- Firewall rules: Only allow access to Pi-KVM from trusted management IPs or a VPN
- Keep it updated: Run
rw && pacman -Syu && roperiodically to apply security patches - Disable SSH if not needed: The web terminal provides shell access, so SSH can be disabled if you don't need it
Practical Tips
SD card longevity: The read-only filesystem helps enormously, but SD cards still fail. Keep a backup of your Pi-KVM configuration and consider using an industrial-grade SD card (SanDisk Industrial or similar).
Video latency: Expect 100-200ms of latency on the video feed. This is fine for BIOS configuration and troubleshooting but not great for anything requiring real-time interaction. If you're seeing significantly more latency, check your network — Pi-KVM should be on a wired connection, never Wi-Fi.
Resolution: Set the target machine's output to 1080p or 720p for the best experience. Higher resolutions increase bandwidth and latency without much benefit through a web browser.
Wake-on-LAN integration: If your target machines support WoL, Pi-KVM can send WoL packets as an alternative to ATX power control wiring. This is simpler but less reliable than direct GPIO power control.
Pi-KVM fills a genuine gap in homelab infrastructure. Enterprise IPMI is either unavailable, insecure, or locked behind a license paywall. Pi-KVM gives you the same capability — BIOS access, virtual media, power control — at a fraction of the cost, with an actively maintained open-source stack. If you've ever walked to another room to plug in a USB stick or connect a monitor for a five-second BIOS change, it pays for itself immediately.
