pikvm/v4/index.html

3366 lines
75 KiB
HTML

<!DOCTYPE html><html lang="en" class="no-js"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Getting started with PiKVM V4 Mini &amp; Plus">
<meta name="author" content="Maxim Devaev">
<link rel="canonical" href="https://pikvm.github.io/pikvm/v4/">
<link rel="next" href="../v3/">
<link rel="icon" href="../_assets/favicon.ico">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.22">
<title>PiKVM V4 Mini &amp; Plus quickstart guide - PiKVM Handbook</title>
<link rel="stylesheet" href="../assets/stylesheets/main.84d31ad4.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=arial,+sans-serif:300,300i,400,400i,700,700i%7Cmonospace:400,400i,700,700i&amp;display=fallback">
<style>:root{--md-text-font:"arial, sans-serif";--md-code-font:"monospace"}</style>
<link rel="stylesheet" href="../_assets/user.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<link href="../assets/stylesheets/glightbox.min.css" rel="stylesheet"><script src="../assets/javascripts/glightbox.min.js"></script><style id="glightbox-style">
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color); }
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color); }
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color); }
</style></head>
<body dir="ltr">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pikvm-v4-mini-plus-quickstart-guide" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="PiKVM Handbook" class="md-header__button md-logo" aria-label="PiKVM Handbook" data-md-component="logo">
<img src="../_assets/logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
PiKVM Handbook
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
PiKVM V4 Mini &amp; Plus quickstart guide
</span>
</div>
</div>
</div>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"></path></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/pikvm/pikvm" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
</div>
<div class="md-source__repository">
pikvm/pikvm
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="PiKVM Handbook" class="md-nav__button md-logo" aria-label="PiKVM Handbook" data-md-component="logo">
<img src="../_assets/logo.png" alt="logo">
</a>
PiKVM Handbook
</label>
<div class="md-nav__source">
<a href="https://github.com/pikvm/pikvm" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
</div>
<div class="md-source__repository">
pikvm/pikvm
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" checked>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
Device guides
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Device guides
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
PiKVM V4 Mini &amp; Plus
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
PiKVM V4 Mini &amp; Plus
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#whats-in-the-box" class="md-nav__link">
<span class="md-ellipsis">
What's in the box
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#interface" class="md-nav__link">
<span class="md-ellipsis">
Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#flashing-the-os" class="md-nav__link">
<span class="md-ellipsis">
Flashing the OS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#wiring" class="md-nav__link">
<span class="md-ellipsis">
Wiring
</span>
</a>
<nav class="md-nav" aria-label="Wiring">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#network" class="md-nav__link">
<span class="md-ellipsis">
Network
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hdmi-and-usb-c" class="md-nav__link">
<span class="md-ellipsis">
HDMI and USB-C
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#power-up" class="md-nav__link">
<span class="md-ellipsis">
Power up
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#connect-and-set-up" class="md-nav__link">
<span class="md-ellipsis">
Connect and set up
</span>
</a>
<nav class="md-nav" aria-label="Connect and set up">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configure-the-display" class="md-nav__link">
<span class="md-ellipsis">
Configure the display
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#access-pikvm" class="md-nav__link">
<span class="md-ellipsis">
Access PiKVM
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#change-the-default-passwords" class="md-nav__link">
<span class="md-ellipsis">
Change the default passwords
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#access-the-remote-system" class="md-nav__link">
<span class="md-ellipsis">
Access the remote system
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#important-next-steps" class="md-nav__link">
<span class="md-ellipsis">
Important next steps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#further-recommendations" class="md-nav__link">
<span class="md-ellipsis">
Further recommendations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#known-issues-and-limitations" class="md-nav__link">
<span class="md-ellipsis">
Known issues and limitations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#basic-troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Basic troubleshooting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getting-user-support" class="md-nav__link">
<span class="md-ellipsis">
Getting user support
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../v3/" class="md-nav__link">
<span class="md-ellipsis">
PiKVM V3
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../switch/" class="md-nav__link">
<span class="md-ellipsis">
PiKVM Switch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../v2/" class="md-nav__link">
<span class="md-ellipsis">
DIY PiKVM V2
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../v1/" class="md-nav__link">
<span class="md-ellipsis">
DIY PiKVM V1
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2">
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
<span class="md-ellipsis">
Getting started
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Getting started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../cheatsheet/" class="md-nav__link">
<span class="md-ellipsis">
Cheat Sheet
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../webui/" class="md-nav__link">
<span class="md-ellipsis">
Web UI Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../config/" class="md-nav__link">
<span class="md-ellipsis">
Configuring PiKVM
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../auth/" class="md-nav__link">
<span class="md-ellipsis">
Authentication &amp; 2FA
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../faq/" class="md-nav__link">
<span class="md-ellipsis">
FAQ &amp; Troubleshooting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../flashing_os/" class="md-nav__link">
<span class="md-ellipsis">
Flashing OS
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3">
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Networking
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Networking
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3_1">
<label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
<span class="md-ellipsis">
Internet access
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1">
<span class="md-nav__icon md-icon"></span>
Internet access
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../port_forwarding/" class="md-nav__link">
<span class="md-ellipsis">
Port forwarding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reverse_proxy/" class="md-nav__link">
<span class="md-ellipsis">
Reverse proxy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../tailscale/" class="md-nav__link">
<span class="md-ellipsis">
Tailscale VPN
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cloudflared/" class="md-nav__link">
<span class="md-ellipsis">
Cloudflare Tunnel
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../wifi/" class="md-nav__link">
<span class="md-ellipsis">
Setting up Wi-Fi
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../modem/" class="md-nav__link">
<span class="md-ellipsis">
Setting up 3G/4G/LTE modem
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../letsencrypt/" class="md-nav__link">
<span class="md-ellipsis">
Let's Encrypt certificates
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4">
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-ellipsis">
Video
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Video
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../video/" class="md-nav__link">
<span class="md-ellipsis">
Video modes (WebRTC, Direct)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../webrtc_config/" class="md-nav__link">
<span class="md-ellipsis">
WebRTC configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../edid/" class="md-nav__link">
<span class="md-ellipsis">
Tuning HDMI EDID
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pass/" class="md-nav__link">
<span class="md-ellipsis">
HDMI passthrough
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5">
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-ellipsis">
Peripheral devices
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Peripheral devices
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../atx_board/" class="md-nav__link">
<span class="md-ellipsis">
ATX board
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../usb/" class="md-nav__link">
<span class="md-ellipsis">
USB configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../usb_pass/" class="md-nav__link">
<span class="md-ellipsis">
USB passthrough
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../audio/" class="md-nav__link">
<span class="md-ellipsis">
Audio / Microphone
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5_5">
<label class="md-nav__link" for="__nav_5_5" id="__nav_5_5_label" tabindex="0">
<span class="md-ellipsis">
Keyboard &amp; mouse
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_5">
<span class="md-nav__icon md-icon"></span>
Keyboard &amp; mouse
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../mouse/" class="md-nav__link">
<span class="md-ellipsis">
Mouse modes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../mouse_jiggler/" class="md-nav__link">
<span class="md-ellipsis">
Mouse jiggler
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pico_hid/" class="md-nav__link">
<span class="md-ellipsis">
Pico HID (USB, PS/2)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../bluetooth_hid/" class="md-nav__link">
<span class="md-ellipsis">
Bluetooth HID
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../msd/" class="md-nav__link">
<span class="md-ellipsis">
Mass Storage Drive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../usb_ethernet/" class="md-nav__link">
<span class="md-ellipsis">
Ethernet-over-USB
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../usb_serial/" class="md-nav__link">
<span class="md-ellipsis">
Serial-over-USB
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../gpio/" class="md-nav__link">
<span class="md-ellipsis">
GPIO (pins, relays, lamps, etc)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6">
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="">
<span class="md-ellipsis">
Advanced usage
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Advanced usage
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../auth_advanced/" class="md-nav__link">
<span class="md-ellipsis">
Advanced authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../id/" class="md-nav__link">
<span class="md-ellipsis">
PiKVM identification
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../on_boot_config/" class="md-nav__link">
<span class="md-ellipsis">
On-boot configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../auto_snapshots/" class="md-nav__link">
<span class="md-ellipsis">
Automatic snapshots
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../vnc/" class="md-nav__link">
<span class="md-ellipsis">
Using VNC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../multiport/" class="md-nav__link">
<span class="md-ellipsis">
Multiport KVM-over-IP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../wol/" class="md-nav__link">
<span class="md-ellipsis">
Wake-on-LAN the server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ipmi/" class="md-nav__link">
<span class="md-ellipsis">
IPMI &amp; Redfish integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pst/" class="md-nav__link">
<span class="md-ellipsis">
Persistent storage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../prometheus/" class="md-nav__link">
<span class="md-ellipsis">
Prometheus monitoring
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7">
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="">
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../api/" class="md-nav__link">
<span class="md-ellipsis">
HTTP API reference
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../building_os/" class="md-nav__link">
<span class="md-ellipsis">
Building PiKVM OS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../3d_printing/" class="md-nav__link">
<span class="md-ellipsis">
Cases for 3D printing
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_8">
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="">
<span class="md-ellipsis">
Legacy
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Legacy
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../arduino_hid/" class="md-nav__link">
<span class="md-ellipsis">
Arduino HID
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../msd_legacy/" class="md-nav__link">
<span class="md-ellipsis">
Big DVD images on old PiKVM
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9">
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="">
<span class="md-ellipsis">
PiKVM Info
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
PiKVM Info
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../compliance/" class="md-nav__link">
<span class="md-ellipsis">
Compliance
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9_2">
<div class="md-nav__link md-nav__container">
<a href="../blog/" class="md-nav__link ">
<span class="md-ellipsis">
Blog &amp; News
</span>
</a>
<label class="md-nav__link " for="__nav_9_2" id="__nav_9_2_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_9_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9_2">
<span class="md-nav__icon md-icon"></span>
Blog &amp; News
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9_2_2">
<label class="md-nav__link" for="__nav_9_2_2" id="__nav_9_2_2_label" tabindex="0">
<span class="md-ellipsis">
Archive
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_9_2_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9_2_2">
<span class="md-nav__icon md-icon"></span>
Archive
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../blog/archive/2025/" class="md-nav__link">
<span class="md-ellipsis">
2025
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../blog/archive/2024/" class="md-nav__link">
<span class="md-ellipsis">
2024
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../blog/archive/2023/" class="md-nav__link">
<span class="md-ellipsis">
2023
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../blog/archive/2022/" class="md-nav__link">
<span class="md-ellipsis">
2022
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../blog/archive/2021/" class="md-nav__link">
<span class="md-ellipsis">
2021
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../blog/archive/2020/" class="md-nav__link">
<span class="md-ellipsis">
2020
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9_2_3">
<label class="md-nav__link" for="__nav_9_2_3" id="__nav_9_2_3_label" tabindex="0">
<span class="md-ellipsis">
Categories
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_9_2_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9_2_3">
<span class="md-nav__icon md-icon"></span>
Categories
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../blog/category/development/" class="md-nav__link">
<span class="md-ellipsis">
Development
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../blog/category/products/" class="md-nav__link">
<span class="md-ellipsis">
Products
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../blog/category/releases/" class="md-nav__link">
<span class="md-ellipsis">
Releases
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#whats-in-the-box" class="md-nav__link">
<span class="md-ellipsis">
What's in the box
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#interface" class="md-nav__link">
<span class="md-ellipsis">
Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#flashing-the-os" class="md-nav__link">
<span class="md-ellipsis">
Flashing the OS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#wiring" class="md-nav__link">
<span class="md-ellipsis">
Wiring
</span>
</a>
<nav class="md-nav" aria-label="Wiring">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#network" class="md-nav__link">
<span class="md-ellipsis">
Network
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hdmi-and-usb-c" class="md-nav__link">
<span class="md-ellipsis">
HDMI and USB-C
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#power-up" class="md-nav__link">
<span class="md-ellipsis">
Power up
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#connect-and-set-up" class="md-nav__link">
<span class="md-ellipsis">
Connect and set up
</span>
</a>
<nav class="md-nav" aria-label="Connect and set up">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configure-the-display" class="md-nav__link">
<span class="md-ellipsis">
Configure the display
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#access-pikvm" class="md-nav__link">
<span class="md-ellipsis">
Access PiKVM
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#change-the-default-passwords" class="md-nav__link">
<span class="md-ellipsis">
Change the default passwords
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#access-the-remote-system" class="md-nav__link">
<span class="md-ellipsis">
Access the remote system
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#important-next-steps" class="md-nav__link">
<span class="md-ellipsis">
Important next steps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#further-recommendations" class="md-nav__link">
<span class="md-ellipsis">
Further recommendations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#known-issues-and-limitations" class="md-nav__link">
<span class="md-ellipsis">
Known issues and limitations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#basic-troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Basic troubleshooting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getting-user-support" class="md-nav__link">
<span class="md-ellipsis">
Getting user support
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<div><h1 id="pikvm-v4-mini-plus-quickstart-guide">PiKVM V4 Mini &amp; Plus quickstart guide<a class="headerlink" href="#pikvm-v4-mini-plus-quickstart-guide" title="Permanent link"></a></h1>
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="overview.jpg" data-desc-position="bottom"><img alt="PiKVM V4 Mini &amp; Plus" src="overview.jpg" title="PiKVM V4 Mini (left) &amp; Plus (right)" width="450"></a></p>
<p>PiKVM is a feature-rich, production-grade, open-source, Raspberry Pi based KVM-over-IP device. It allows you to turn your computer on or off, restart it, configure the UEFI/BIOS, and even reinstall the OS using the Virtual CD-ROM or flash drive.</p>
<p>PiKVM uses your remote keyboard and mouse to simulate a local keyboard, mouse, and monitor, which are then presented in a web browser as if you were working on a remote system directly.</p>
<p><strong>Datasheets</strong>:</p>
<p><a class="md-button" href="v4mini_datasheet.pdf">PiKVM V4 Mini</a> <a class="md-button" href="v4plus_datasheet.pdf">PiKVM V4 Plus</a></p>
<hr>
<h2 id="whats-in-the-box">What's in the box<a class="headerlink" href="#whats-in-the-box" title="Permanent link"></a></h2>
<ul>
<li>PiKVM V4 Mini or Plus device</li>
<li>Micro SD card with pre-imaged PiKVM software</li>
<li>ATX control board</li>
<li>ATX connection cables</li>
<li>ATX installation brackets</li>
<li>1 x Ethernet cable</li>
<li>1 x ATX cable</li>
<li>1 x USB C to USB A cable</li>
<li>12V 2A Power Supply (international adapters)</li>
</ul>
<hr>
<h2 id="interface">Interface<a class="headerlink" href="#interface" title="Permanent link"></a></h2>
<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><input checked id="__tabbed_1_1" name="__tabbed_1" type="radio"><input id="__tabbed_1_2" name="__tabbed_1" type="radio"><input id="__tabbed_1_3" name="__tabbed_1" type="radio"><input id="__tabbed_1_4" name="__tabbed_1" type="radio"><div class="tabbed-labels"><label for="__tabbed_1_1">Front view</label><label for="__tabbed_1_2">Rear view</label><label for="__tabbed_1_3">Right view</label><label for="__tabbed_1_4">Top view</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="v4-front-view-numbered.svg" data-desc-position="bottom"><img alt="V4 front view" height="250" src="v4-front-view-numbered.svg"></a></p>
<ol>
<li>Power LED (Green)</li>
<li>Power Input 5.1V 3A</li>
<li>Activity LED (Red)</li>
<li>Micro SD card slot</li>
<li>USB 2.0 Serial console port</li>
<li>Serial console active LED / Beacon LED (Green)</li>
<li>RJ45 1Gb Ethernet port</li>
<li>RJ45 Serial console port <strong>(V4 Plus only)</strong></li>
<li>USB 3.0 port 1 <strong>(V4 Plus only)</strong></li>
<li>Power Input 12V 2A <strong>(V4 Plus only)</strong></li>
</ol>
</div>
<div class="tabbed-block">
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="v4-rear-view-numbered.svg" data-desc-position="bottom"><img alt="V4 rear view" height="250" src="v4-rear-view-numbered.svg"></a></p>
<ol>
<li>RJ45 ATX control port</li>
<li>USB 2.0 OTG connector</li>
<li>Beacon LED</li>
<li>Video source ready status LED</li>
<li>HDMI video input port</li>
<li>Video capture ready status LED</li>
<li>Optional antenna mounting hole <strong>(only one in V4 Mini)</strong></li>
<li>HDMI video output port 2 <strong>(V4 Plus only)</strong></li>
<li>HDMI video output port 1 <strong>(V4 Plus only)</strong></li>
<li>USB 3.0 port 2 <strong>(V4 Plus only)</strong></li>
<li>Optional antenna mounting hole <strong>(only one in V4 Mini)</strong></li>
</ol>
</div>
<div class="tabbed-block">
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="v4-right-view-numbered.svg" data-desc-position="bottom"><img alt="V4 right view" height="250" src="v4-right-view-numbered.svg"></a></p>
<ol>
<li>Service switches</li>
<li>Kensington Security Slot</li>
</ol>
</div>
<div class="tabbed-block">
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="v4-top-view-numbered.svg" data-desc-position="bottom"><img alt="V4 top view" height="250" src="v4-top-view-numbered.svg"></a></p>
<ol>
<li>Display</li>
</ol>
</div>
</div>
</div>
<hr>
<h2 id="flashing-the-os">Flashing the OS<a class="headerlink" href="#flashing-the-os" title="Permanent link"></a></h2>
<p>Most of the time, this step is not necessary. However, if there is a possibility that your device had a previous owner (e.g. "Used - Like New" on Amazon), we recommend reflashing the OS to ensure a clean start. Please follow <a href="../flashing_os/">this guide</a>.</p>
<hr>
<h2 id="wiring">Wiring<a class="headerlink" href="#wiring" title="Permanent link"></a></h2>
<p>Let's connect all the wires before you power up the device.</p>
<h3 id="network">Network<a class="headerlink" href="#network" title="Permanent link"></a></h3>
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="v4-ethernet-wiring.svg" data-desc-position="bottom"><img alt="Ethernet wiring" src="v4-ethernet-wiring.svg"></a></p>
<p>Connect <strong>Ethernet</strong> (<strong>bottom right</strong> on the <strong>front</strong> side) to the network using the cable from the kit. The kit includes two Ethernet cables of different colors: one for the network, the second for ATX. Use whichever one you like best.</p>
<h3 id="hdmi-and-usb-c">HDMI and USB-C<a class="headerlink" href="#hdmi-and-usb-c" title="Permanent link"></a></h3>
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="v4-hdmi-usb-wiring.svg" data-desc-position="bottom"><img alt="HDMI and USB-C wiring" src="v4-hdmi-usb-wiring.svg"></a></p>
<p><strong>HDMI input</strong> (the <strong>bottom right</strong> on the <strong>rear</strong> side) and <strong>OTG</strong> port (USB emulation) should be connected to the computer.</p>
<p>Optionally, the <strong><a href="../atx_board/">ATX port</a></strong> can be connected to control the power. There should be no USB hub between PiKVM and the computer, as some UEFI/BIOS cannot detect them at the boot stage.</p>
<hr>
<h2 id="power-up">Power up<a class="headerlink" href="#power-up" title="Permanent link"></a></h2>
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="v4-power-supply-wiring.svg" data-desc-position="bottom"><img alt="Power supply wiring" src="v4-power-supply-wiring.svg"></a></p>
<p>V4 Mini and V4 Plus have different power supplies:</p>
<ul>
<li>The Mini comes with USB-C 5V power supply</li>
<li>The Plus comes with with Barrel 12V</li>
</ul>
<p>The Plus can also work from 5V. In that case, avoid creating a significant power load on USB (external flash sticks, cameras, and so on).</p>
<p>Attach the appropriate connector on the <strong>front</strong> side. Do <strong>not</strong> block the ventilation holes on the sides of the device.</p>
<p>After turning on the power, PiKVM OS generates unique SSH keys and certificates and performs all necessary operations on the memory card. It takes a few minutes. Do <strong>not</strong> turn off the device until it's fully booted for the first time. Once it's done, the PiKVM will show a greeting on the built-in display.</p>
<hr>
<h2 id="connect-and-set-up">Connect and set up<a class="headerlink" href="#connect-and-set-up" title="Permanent link"></a></h2>
<h3 id="configure-the-display">Configure the display<a class="headerlink" href="#configure-the-display" title="Permanent link"></a></h3>
<p>The operating system on your remote computer will treat PiKVM as an additional display and use it in the Extend mode by default. That's why you will see an empty desktop when you first connect.</p>
<p>To avoid that, go to the display settings in your remote computer's operating system and enable the mirror mode for the external screen that your operating system identifies as PiKVM. Refer to your operating system's documentation on that.</p>
<h3 id="access-pikvm">Access PiKVM<a class="headerlink" href="#access-pikvm" title="Permanent link"></a></h3>
<p>By default, PiKVM receives a dynamic IP address via DHCP and shows it in the top row of the OLED display:</p>
<div class="highlight"><pre><span></span><code><span class="go">192.168.0.26</span>
<span class="gp gp-VirtualEnv">(|)</span> <span class="go">iface: eth0</span>
<span class="go">cpu: 1% mem: 13%</span>
</code></pre></div>
<p>Let's assume that PiKVM has received the address <code>192.168.0.26</code> and has also been assigned a hostname <code>pikvm</code>.</p>
<p>Type the URL in the browser's address bar and press <strong>Enter</strong>: <a href="https://192.168.0.26/">https://192.168.0.26/</a> or <a href="https://pikvm/">https://pikvm/</a>.</p>
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="login-prompt.png" data-desc-position="bottom"><img alt="Login screen" src="login-prompt.png" width="450"></a></p>
<p>Submit the default credentials and click <strong>Login</strong>:</p>
<ul>
<li>Username: <code>admin</code></li>
<li>Password: <code>admin</code></li>
<li>2FA Code: disabled by default, skip this field</li>
</ul>
<p>You will see the initial dashboard screen of the PiKVM, where you can access the remote host, connect to the PiKVM command line, or log out:</p>
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="initial-ui.png" data-desc-position="bottom"><img alt="Initial UI" src="initial-ui.png" width="450"></a></p>
<h3 id="change-the-default-passwords">Change the default passwords<a class="headerlink" href="#change-the-default-passwords" title="Permanent link"></a></h3>
<p>For security's sake, it's best to change the default passwords immediately after running PiKVM for the first time. </p>
<div class="admonition danger">
<p class="admonition-title">Passwords are important!</p>
<p>Please ensure that you change <strong>both</strong> passwords: for Web UI access and for the Linux superuser (root).</p>
</div>
<p>To do that:</p>
<ol>
<li>
<p>On the initial dashboard screen, click the <strong>Terminal</strong> button to open the web terminal. You will see this command line interface:</p>
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="pikvm-web-terminal-start.png" data-desc-position="bottom"><img alt="MISSING SCREENSHOT" src="pikvm-web-terminal-start.png" width="450"></a></p>
</li>
<li>
<p>Gain superuser privileges:</p>
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>su<span class="w"> </span>-
</code></pre></div>
<p>When prompted for a password, use <code>root</code>.</p>
</li>
<li>
<p>Run <code>rw</code> to change the access to the SD card to the write mode:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>rw
</code></pre></div>
</li>
<li>
<p>Change the password for the superuser:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>passwd<span class="w"> </span>root
</code></pre></div>
<p>Submit the new password, retype it the second time to confirm, press <strong>Enter</strong>, and you should see this:</p>
<div class="highlight"><pre><span></span><code><span class="go">passwd: password updated successfully</span>
</code></pre></div>
</li>
<li>
<p>Change the password for web access:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>kvmd-htpasswd<span class="w"> </span><span class="nb">set</span><span class="w"> </span>admin
</code></pre></div>
<p>Submit the new password, retype it the second time to confirm, and press <strong>Enter</strong>.</p>
</li>
<li>
<p>Run <code>ro</code> to change the access to the SD card back to the read-only mode:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>ro
</code></pre></div>
</li>
<li>
<p>Press <strong>Ctrl+D</strong> or type "exit" and press <strong>Enter</strong> to drop the root privileges.</p>
</li>
<li>
<p>Go back one page in the browser. You should be back to the initial dashboard screen.</p>
</li>
</ol>
<h3 id="access-the-remote-system">Access the remote system<a class="headerlink" href="#access-the-remote-system" title="Permanent link"></a></h3>
<ol>
<li>
<p>On the initial dashboard screen, click the <strong>KVM</strong> button to access the remote host.</p>
</li>
<li>
<p>You should now see the host system's display and interact with it remotely using a keyboard and a mouse.</p>
<p><a class="glightbox" data-type="image" data-width="95%" data-height="auto" href="remote-screen.png" data-desc-position="bottom"><img alt="Work remotely" src="remote-screen.png" width="450"></a></p>
</li>
</ol>
<hr>
<h2 id="important-next-steps">Important next steps<a class="headerlink" href="#important-next-steps" title="Permanent link"></a></h2>
<ul>
<li>
<p><strong>We strongly recommend updating the PiKVM OS</strong> after the first launch:</p>
<details class="note">
<summary>Updating PiKVM OS</summary>
<p>To update, run following commands under the <code>root</code> user:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>pikvm-update
</code></pre></div>
<p>If you encounter an error like:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>pikvm-update
<span class="go">bash: pikvm-update: command not found</span>
</code></pre></div>
<p>It's most likely you have an old OS release. You can update the OS as follows:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>rw
<span class="gp">[root@pikvm ~]# </span>pacman<span class="w"> </span>-Syy
<span class="gp">[root@pikvm ~]# </span>pacman<span class="w"> </span>-S<span class="w"> </span>pikvm-os-updater
<span class="gp">[root@pikvm ~]# </span>pikvm-update
</code></pre></div>
<p>Next time you will be able to use the usual method with <code>pikvm-update</code>.</p>
</details>
</li>
<li>
<p>Learn the basics of <strong>PiKVM OS Configuration</strong>: where to find configs, how to edit the, etc.</p>
<details class="note">
<summary>Configuring PiKVM OS</summary>
<div class="admonition tip">
<p class="admonition-title">Need more info? We have it!</p>
<p>The following is a brief guide to configuring PiKVM.
For more information (including the basics of YAML syntax and how to use a text editor in the Linux console),
please refer to <a href="../config/">this page</a>.</p>
</div>
<p>Most of the PiKVM configuration files are located in the <code>/etc/kvmd</code> directory.</p>
<p>The <code>/usr/lib/kvmd/main.yaml</code> file defines the platform configuration, and <strong>you should never edit it</strong>.
To redefine system parameters use the file <code>/etc/kvmd/override.yaml</code>.
All other files that are also not recommended for editing have read-only permissions.</p>
<p>You can also create several files with the <code>.*yaml</code> suffix and put then into <code>/etc/kvmd/override.d</code> directory
to split your customization into logical parts.
The <code>override.yaml</code> file definitions takes precedence over the <code>override.d</code> directory.</p>
<p>A complete list of all parameters can be viewed using the <code>kvmd -m</code> command.</p>
<p>Files with the <code>*.yaml</code> suffix uses the <a href="https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html">YAML syntax</a>
and describes a parameter tree with key-value pairs of different types.
To define the parameters within one section, an indent of 4 spaces is used.
Comments starts with the <code>#</code> symbol.</p>
<div class="admonition warning">
<p class="admonition-title">Only 4 spaces should be used for indentation</p>
<p>Be careful when editing YAML and follow this rule.
Invalid indentation or tabs instead of spaces will cause an error when starting the services.</p>
</div>
<p>Sections under the same keys <strong>should be merged</strong>:</p>
<ul>
<li>
<p><strong>Wrong:</strong></p>
<div class="highlight"><pre><span></span><code><span class="nt">kvmd</span><span class="p">:</span>
<span class="w"> </span><span class="nt">gpio</span><span class="p">:</span>
<span class="w"> </span><span class="nt">drivers</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
<span class="nt">kvmd</span><span class="p">:</span>
<span class="w"> </span><span class="nt">gpio</span><span class="p">:</span>
<span class="w"> </span><span class="nt">scheme</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
</code></pre></div>
</li>
<li>
<p><strong>Correct:</strong></p>
<div class="highlight"><pre><span></span><code><span class="nt">kvmd</span><span class="p">:</span>
<span class="w"> </span><span class="nt">gpio</span><span class="p">:</span>
<span class="w"> </span><span class="nt">drivers</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
<span class="w"> </span><span class="nt">scheme</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
</code></pre></div>
</li>
</ul>
<p>In the <code>/etc/kvmd/meta.yaml</code> file you can specify some information regarding this PiKVM installation in an almost free YAML format.</p>
</details>
</li>
<li>
<p><strong>Get to know PiKVM Web UI</strong>: read <a href="../webui/">this help section</a> to better understand all the possibilities of the web user interface.</p>
</li>
<li>
<p><strong>Set up an <a href="../atx_board/">ATX connection</a></strong> if you need to control the power of the remote system.</p>
</li>
</ul>
<hr>
<h2 id="further-recommendations">Further recommendations<a class="headerlink" href="#further-recommendations" title="Permanent link"></a></h2>
<ol>
<li>
<p><strong>Customize the system</strong>:</p>
<ul>
<li><a href="../auth/">Harden the remote access</a> by enabling 2FA.</li>
<li>Configure access to PiKVM from the Internet using <a href="../port_forwarding/">port forwarding</a> or <a href="../tailscale/">Tailscale VPN</a>.</li>
<li>Enable a microphone for <a href="../audio/">two-way audio</a>.</li>
<li>Enable <a href="../pass/">HDMI pass-through</a> and <a href="../usb_pass/">USB passthrough</a>.</li>
<li><a href="../config/">Learn</a> how configuration files are structured.</li>
<li>Read how PiKVM is <a href="../id/">identified</a> on the target host.</li>
</ul>
</li>
<li>
<p><strong>Configure hardware</strong>:</p>
<ul>
<li>
<p>Install and set up the Wi-Fi antenna:</p>
<details class="note">
<summary>Quick WiFi antenna how-to</summary>
<p>The PiKVM V4 has a robust metal case that protects your device from physical damage and electromagnetic interference. This also means that an external antenna must be used for Wi-Fi. We recommend the official Antenna Kit for Raspberry Pi.</p>
<p>To install the antenna, fix it in the round hole in the back side of the PiKVM, and connect the wire to the connector on the Compute Module 4, as described in the instructions.</p>
<p>Next, to activate the antenna, add line <code>dtparam=ant2</code> to the <code>/boot/config.txt</code> file on PiKVM.</p>
<p>Here is a video:</p>
<p></p><div class="video-container"><iframe src="https://www.youtube.com/embed/WyHBWEbtxB4" style="position:relative;width:100%;height:22.172vw" frameborder="0" allowfullscreen alt="type:video"></iframe></div><p></p>
<p>Follow <a href="../wifi/">this guide</a> to configure Wi-Fi in PiKVM OS.</p>
</details>
</li>
<li>
<p>Install and set up <a href="../modem/">LTE/5G modem</a> (<strong>only for PiKVM V4 Plus</strong>).</p>
</li>
<li>
<p>Set up internal USB port for USB 3.0 (<strong>only for PiKVM V4 Plus</strong>):</p>
<details class="note">
<summary>Enable USB 3.0 on the internal port</summary>
<p>PiKVM V4 Plus has an internal USB port. It supports USB 3.0, but only works with USB 2.0 devices by default to minimize the power consumption. You need to flash the USB controller to enable USB 3.0. To do so, follow these steps:</p>
<ol>
<li>
<p>Open a terminal window and log into the PiKVM via SSH:</p>
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>ssh<span class="w"> </span>user@host
</code></pre></div>
</li>
<li>
<p>Flash the USB controller using the built-in <code>flashrom</code> utility. Choose <code>usb3</code> for USB 3.0 support:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>flashrom-vl805<span class="w"> </span>usb3
</code></pre></div>
<p>If you need to disable USB 3.0 support at any time later, run the same command, but use <code>default</code> instead:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>flashrom-vl805<span class="w"> </span>default
</code></pre></div>
</li>
<li>
<p>Perform the soft reboot:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>reboot
</code></pre></div>
</li>
<li>
<p>After the soft reboot, perform the <strong>reboot by power</strong>: unplug and plug again the power cable.</p>
</li>
</ol>
</details>
</li>
<li>
<p>Learn about DIP switches:</p>
<details class="note">
<summary>DIP switches purpose</summary>
<dl>
<dt>The left switch <strong>[1]</strong>:</dt>
<dd>When pulled down (<strong>ON</strong> state), the advanced backpower protection is used. On the default state is <strong>OFF</strong> (up), "diode protection" is used. This is required for debugging at the request of technical support. Under normal conditions, it is not necessary to change the mode.</dd>
<dt>The right switch <strong>[2]</strong>:</dt>
<dd>When pulled down (<strong>ON</strong> state), the Power Delivery chip is activated on the USB OTG port. The default state is <strong>OFF</strong> (up).</dd>
</dl>
<p>To change the position of switches:</p>
<ol>
<li>Turn the PiKVM off.</li>
<li>Change the position of the switched.</li>
<li>Turn the PiKVM on.</li>
</ol>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Do not do that change the state of the DIP switched while the device is turned on. <strong>This may cause irreparable damage.</strong></p>
</div>
</details>
</li>
<li>
<p>Choose Fahrenheit over Celsius to display on the OLED:</p>
<details class="note">
<summary>How to set up Fahrenheit on the OLED</summary>
<p>Create a directory for a configuration file:</p>
<div class="highlight"><pre><span></span><code><span class="gp">[root@pikvm ~]# </span>mkdir<span class="w"> </span>-p<span class="w"> </span>/etc/systemd/system/kvmd-oled.service.d
</code></pre></div>
<p>Create file <code>/etc/systemd/system/kvmd-oled.service.d/override.conf</code>:</p>
<div class="highlight"><pre><span></span><code><span class="k">[Service]</span>
<span class="na">ExecStart</span><span class="o">=</span>
<span class="na">ExecStart</span><span class="o">=</span><span class="s">/usr/bin/kvmd-oled --clear-on-exit --fahrenheit</span>
</code></pre></div>
</details>
</li>
</ul>
</li>
</ol>
<hr>
<h2 id="known-issues-and-limitations">Known issues and limitations<a class="headerlink" href="#known-issues-and-limitations" title="Permanent link"></a></h2>
<ul>
<li>
<p>There may be compatibility issues with certain motherboards, such as <strong>HP</strong> or <strong>DELL</strong>. If there is no image from the BIOS, you can fine-tune the HDMI settings, but it is possible that mass storage devices may not be available in the BIOS. In the latter case, <a href="../usb/">USB dynamic configuration</a> will solve the problem.</p>
</li>
<li>
<p>While the V4 Plus features a Mini-PCIe slot, it was only designed for LTE modems. An NVME card will not work.</p>
</li>
</ul>
<hr>
<h2 id="basic-troubleshooting">Basic troubleshooting<a class="headerlink" href="#basic-troubleshooting" title="Permanent link"></a></h2>
<ul>
<li>
<p>Ensure that you are using the right <a href="../flashing_os/">OS image</a> for your platform
by running the following command: <code>pacman -Q | grep kvmd-platform</code>.</p>
</li>
<li>
<p>If you are not getting a display, run the two following commands:</p>
<ul>
<li><code>dmesg | egrep 'tc35|1-1.4|uvc'</code></li>
<li><code>systemctl status kvmd-tc358743</code></li>
</ul>
</li>
</ul>
<hr>
<h2 id="getting-user-support">Getting user support<a class="headerlink" href="#getting-user-support" title="Permanent link"></a></h2>
<p>If something doesn't work, check out our <a href="../faq/">FAQ</a>. Otherwise, head straight to our <a href="https://pikvm.org/support/">Support</a>.</p></div>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"></path></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright © 2018-2025 Maxim Devaev
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["navigation.indexes", "navigation.sections", "navigation.top", "navigation.expand", "search.highlight", "search.share", "search.suggest", "content.code.copy"], "search": "../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../assets/javascripts/bundle.f55a23d4.min.js"></script>
<script src="../_assets/add_paragraphs.js"></script>
<script src="../_assets/scroll_to_summary.js"></script>
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": false, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(()=>{ lightbox.reload(); });
</script></body></html>