PiKVM

pikvm.org

🌐 Resources 🔗


RPi 4 PiKVM V2 DIY

🔬 Hardware

Raspberry Pi 4 board with 16GB MicroSD card.

  • PiKVM SD card image used is the one For HDMI-USB dongle - download here

  • RPi4 Power consumption ranging from 2.7W to 6.4W depending on the workload

For power supply and USB connectivity, I have chosen the "Variant #2: Power supply + Y-splitter based on power blocker" from the PiKVM v2 guide with:

  • x1 Raspberry Pi Official USB-C Power Supply

  • x1 USB C splitter (male->double females)

  • x1 USB-A to USB-C cable (male-male)

    • 📌 as power blocker for the VCC of the USB-A male connector that goes into the PC/NAS, I've used a small piece of tape over the right-most pin on the connector to block the 5V pin

Similar diagram as my setup:

USB Connections - Credit: Tom's Hardware

The "USB C to Double USB C Splitter" used:

For the video capture device I've used an HDMI-USB dongle for my testing lab.

Anyway, a HDMI-CSI bridge board is better for video encoding, resolution and latency.

On-boot configuration

Setup WiFi SSID & Password if necessary in the pikvm.txt file from the SD Card (on another PC), by adding the following variables:

WIFI_ESSID='mynet'
WIFI_PASSWD='p@s$$w0rd'

PiKVM Shell commands

Authentication

[root@pikvm ~]# cat /etc/os-release
NAME="Arch Linux ARM"
su - 
# use "root" as password

# Commands [root@pikvm ~]#

# Update system
pikvm-update
# or
rw
pacman -Syy
pacman -S pikvm-os-updater
pikvm-update

Wake-on-LAN

rw
vim /etc/kvmd/override.yaml
  • (Extra) Disable "ATX" menu

kvmd:
    atx:
        type: disabled
  • Configuration for single device WoL

###############
# Wake-ON-LAN #
###############

kvmd:
    wol:
        mac: FF:FF:FF:FF:FF:FF # change this to desired MAC Address
kvmd -m # syntax check
systemctl restart kvmd
###############
# Wake-ON-LAN #
###############

kvmd:
    wol:
        mac: FF:FF:FF:FF:FF:FF
    gpio:
        drivers:
            truenas:
                type: wol
                mac: FF:FF:FF:FF:FF:FF
            proxmox:
                type: wol
                mac: FF:FF:FF:FF:FF:FF
            pc:
                type: wol
                mac: FF:FF:FF:FF:FF:FF
        scheme:
            truenas:
                driver: truenas
                pin: 0
                mode: output
                switch: false
            proxmox:
                driver: proxmox
                pin: 0
                mode: output
                switch: false
            pc:
                driver: pc
                pin: 0
                mode: output
                switch: false
        view:
            table:
                - ["#AsusMiniPC-Proxmox", "proxmox|Send Wake-on-LAN"]
                - ["#PC-Win", "pc|Send Wake-on-LAN"]
                - ["#NAS-Truenas", "truenas|Send Wake-on-LAN"]
kvmd -m # syntax check
systemctl restart kvmd
reboot

Mass Storage Drive

Insert the USB into an RPi USB3 port.

Open the PiKVM Terminal/Shell. Use the following procedure.

  • Identify the USB drive and its filesystem type using, ensuring it's recognized (e.g., exfat for Ventoy)

  • Add a mount entry in /etc/fstab to automatically mount the USB drive at boot, with read/write access and permissive permissions

  • Ensure the mount point exists and is writable, using mkdir, kvmd-helper-otgmsd-remount, or mount -o remount,rw as needed

  • Manually mount or reboot the system to apply changes, allowing access to the USB contents under /var/lib/kvmd/msd/usb

su -
rw

# Check USB drive presence and FS type
lsblk -f
# e.g. Ventoy thumb drive
    sda
    |-sda1      exfat  1.0   Ventoy  4E21-0000
    `-sda2      vfat   FAT16 VTOYEFI 626B-4255

# Add mount entry
nano /etc/fstab

# Add the following line at the end of the file
# This says to mount it automatically, do not fail if it's missing, mount it read/write by default, and allow all users and groups access to it
/dev/sda1   /var/lib/kvmd/msd/usb   exfat  auto,nofail,rw,umask=0000  0 0

# Make the filesystem Read/Write
kvmd-helper-otgmsd-remount
# If this is not working, mount the /var/lib/kvmd/msd manually as following
mount -o remount,rw /var/lib/kvmd/msd

# Create dedicated mounting directory
mkdir -p /var/lib/kvmd/msd/usb
kvmd-helper-otgmsd-remount ro

# Reboot PiKVM or mount manually for testing
mount /var/lib/kvmd/msd/usb

ll /var/lib/kvmd/msd/usb
df -hT
	/dev/sda1      exfat      58G   52G  5.5G  91% /var/lib/kvmd/msd/usb

Tailscale on PiKVM

# Tailscale
pikvm-update
rw

pacman -S tailscale-pikvm
systemctl enable --now tailscaled
tailscale up

reboot

ip addr show tailscale0

Last updated

Was this helpful?