2
0
mirror of https://github.com/pikvm/pikvm synced 2024-11-14 18:12:53 +00:00
pikvm/README.md
2024-01-26 08:15:21 +02:00

25 KiB

Open and inexpensive DIY IP-KVM based on Raspberry Pi

Discord Reddit

A very simple and fully functional Raspberry Pi-based KVM (Keyboard-Video-Mouse) over IP that you can make with your own hands. This device helps to manage servers or workstations remotely, regardless of the health of the operating system or whether one is installed. You can fix any problem, configure the BIOS, and even reinstall the OS using the virtual CD-ROM or Flash Drive.

The website: pikvm.org. Also check out the documentation and join to the Discord Community Chat for news, questions and support!

>>> New PiKVM V4 - Buy it right now! <<<
drawing
>>> DIY Device Getting Started <<< >>> PiKVM V3 Getting Started <<<
DIY Review by Novaspirit Tech
Hackaday & Tom's HARDWARE & Elector MAG
Our boring presentation for the DIY :)
PiKVM V3 Review by Linus Tech Tips
Review by Novaspirit Tech
Another review by Level1Techs
Review by The Geek Freaks (DE)
drawing drawing
Web UI
drawing

Features

  • Supported Raspberry Pi 2, 3, 4 and Zero2W;
  • FullHD video using advanced HDMI-to-CSI bridge or USB dongle;
  • Extra low video latency with MJPEG or H.264 / WebRTC (for CSI bridge);
  • Bootable Virtual CD-ROM and Flash Drive, ability to store images on NFS;
  • USB Keyboard and mouse (with leds and the wheel), PS/2 keyboard, Bluetooth HID;
  • Control the server power using ATX functions;
  • Access via Web UI or VNC;
  • Ability to use IPMI BMC, IPMI SoL, Redfish and Wake-on-LAN to control the server;
  • The ready-made OS with read-only filesystem;
  • Extensible authorization and HTTPS out of the box;
  • Health monitoring of the Pi;
  • Control GPIO ports and USB relays;
  • It only costs between $30 and $100 for parts!
  • 100% Open Source!
More indepth details about the PiKVM features
  • Cheaper, but better than commercial solutions
    Costs between $30 and $100 depending on the features desired. Even the most expensive configuration will be cheaper than a $500 commercial IP-KVM.
  • Easy to build - For the V1 variant
    A ready-to-use OS that can be created just by running make build and installed to an SD-card using make install. The hardware can be made in half an hour and without soldering.
  • The widest hardware support
    There are many ways to build a PiKVM. Video capture devices can be attached using the CSI-2 or USB interfaces. Raspberry Pi models 2, 3, 4 or Zero2W may be used. Any combination of hardware is supported, and PiKVM implements the maximum possible set of features.
  • Very low latency
    ~100 milliseconds of video latency. This is the smallest delay of all existing solutions.
  • Extra lightweight and fancy Web UI
    No weird proprietary clients. No ugly Java applets. Just use your favorite browser to connect to the PiKVM. No flash plugins either!
  • Keyboard and mouse
    Mouse usage works directly in the browser. The keyboard emulator supports displaying the state of the keyboard LEDs.
  • Mass Storage Drive
    On the Raspberry Pi 4 and Zero2W, PiKVM can emulate a virtual CD-ROM or Flash Drive. A live image can be uploaded to boot the attached server.
  • ATX power management
    With a very simple circuit that can be assembled on a breadboard, the power button of the attached server can be controlled using the ATX button headers on the motherboard.
  • Security
    PiKVM can be opened to the Internet and no one will get access without the password. SSL is used to protect traffic from being intercepted by third parties.
  • Local monitoring
    PiKVM monitors the health of the Raspberry Pi board and will warn you if it's too hot or is not receiving enough power.
  • GPIO management You can control GPIO and USB relays via the web interface. The extensible interface allows you to make anything out of it.

Production-ready

  • Linux-based embedded OS
    The PiKVM OS is based on Arch Linux ARM and can be customized for any needs. Thousands of pre-built binary packages are at your service and can be updated with a single command!
  • Read-only filesystem
    By default the OS runs in read-only mode, as an embedded system should. This prevents damage to the memory card due to a sudden power outage.
  • VNC server
    The managed server and its BIOS can be accessed using a regular VNC client which supports JPEG compression.
  • IPMI BMC and Redfish
    Use ipmitool, ipmiutil or any existing network infrastructure that supports IPMI to monitor and manage the server's power. Redfish and redfishtool supported too.
  • Wake-on-LAN
    PiKVM can be configured to power up a managed server using WoL. This will be available in the Web menu.
  • Extensible authorization methods
    Multiple PiKVMs can be configured to use a common authorization service. PAM and its rich authorization mechanisms can also be used to integrate PiKVM into your existing authentication infrastructure.
  • Macro scripts
    If repetitive actions must be performed on the attached server (or on several different servers), a macro can be recorded with keyboard & mouse actions and can be played back multiple times.

Open Source

  • Community & support
    PiKVM has a large community. Join the discord chat if you have any questions.
  • Extensible
    PiKVM was designed as a set of microservices with a plug-in architecture. It's very easy to modify and maintain.
  • Comprehensive API
    Everything that can be done via the user interface can also be done via a powerful HTTP API.
  • Know-how
    We created our very own MJPG video server written in C with multi-threading support and GPU video encoding - the fastest streaming solution available to provide the best video quality for PiKVM. We also tested a lot of hardware configurations so that you can be sure devices you assemble will work reliably.
Comparsion table
DIY V1 DIY V2 V3 Kit V4 Mini V4 Plus
Plug and Play out of box!
DIY

DIY
Base Raspberry unit RPi3
RPi2
Zero2W
RPi4
Zero2W
RPi4
Included!
CM4
Included!
CM4
Included!
HDMI 1080p@60Hz support for better BIOS/UEFI compatibility
HDMI audio capture
USB keyboard/mouse emulation
Virtual Flash Drive and CD-ROM emulation
Ability to simulate "eject/insert" for USB
Onboard ATX controller for power management of the host DIY DIY
CISCO-style RJ-45 console port
USB serial console port
Built-in OLED with IP and other info
USB host support (external USB devices connectivity)
Internal secured USB 3.0 storage port
Multiport KVM switches support
A real-time clock for accurate logging
Locator LED to find device in the rack
mPCIe slot with USB lines for LTE/5G cards
SIM card slot for modem
External antenna support
Pi's GPIO ports control from the Web UI
USB relays, lamps, smartplugs control
Cooling system / fan type DIY DIY Axial Fanless Quiet
Radial
PWM fan controller
Fan speed and health monitoring
Power consumption in idle mode 3.3W 2.65W 3.3W

DIY Getting Started

Required hardware

PiKVM supports several different hardware configurations, referred to as platforms. Now available: V2 and V1.

  • Recommended: V2 is the most powerful implementation for Raspberry Pi 4 and Zero2W supporting all of the features of PiKVM including the Mass Storage Drive. It's also the easiest to make.
  • V1 was designed to work with Raspberry Pi 2 and 3 that do not have USB emulation port and requires a few more components for a basic implementation. It also does not support the Mass Storage Drive feature.

The full list of parts is at the very beginning according to the assembly instructions for the corresponding platform. You can review both options to decide which one is most suitable for you.

So, again, in short:

  • DIY PiKVM V2:

  • DIY PiKVM V1:

    • Here are the instructions and a complete list of components.
    • Requires Raspberry Pi 2 or 3.
    • Requires Raspberry Pi Pico for the keyboard/mouse emulation.
    • Requires extra wiring and little bit more parts.
    • Supports H.264 (for recommended CSI capture).
    • Doesn't support CD-ROM and Flash Drive (mass storage) emulation.

PiKVM V3

We have developed our own HAT and pre-assembled device based on the Raspberry Pi 4.

The Pre-Assembled device The DIY kit
drawing drawing

>>> Buy PiKVM V3 right now! <<<

>>> PiKVM V3 User Guide <<<

  • HDMI video capture for extra low latency with MJPEG or H.264/WebRTC (1080p 50Hz max).
  • HDMI audio capture.
  • USB keyboard & mouse, bootable Virtual CD-ROM & Flash Drive;
  • Ability to simulate "removal and insertion" for USB.
  • Onboard ATX controller to manage the server's power.
  • PWM fan controller.
  • A real-time clock for accurate logging.
  • CISCO-style and USB serial console port (to manage PiKVM OS or to connect the server).
  • No need for soldering or breadboarding. It's a ready-made, reliable thing which you can use yourself or provide to your clients.

Watch the video:

History:


Donate

This project is developed by Open Source enthusiasts. If you find PiKVM useful or it has saved you a long trip to check on an unresponsive server, you can support us by donating a few dollars on Patreon or Paypal or buying our devices. With this money, we will be able to buy new hardware (Raspberry Pi boards and other components) to test and maintain various configurations of PiKVM, and generally devote significantly more time to the project. At the bottom of this page are the names of all the people who have helped this project develop with their donations. Our gratitude knows no bounds!

If you wish to use PiKVM in production, we accept orders to modify it for your needs or implement custom features you require. Contact us via live chat or email the lead developer at: mdevaev@gmail.com


Special thanks

These kind people donated money to the PiKVM project and supported work on it. We are very grateful for their help, and commemorating their names is the least we can do in return.

View all people!
  • A. Isenring
  • Aaron Graubert
  • Aaron Heise
  • Aaron Stein
  • Accalia
  • Adam Goodbar
  • Adam S
  • Adam Stuart
  • AdamBomb
  • adipisicing
  • Adrian Basham
  • Ahmed Syed
  • Alberto Bassi
  • alejandro
  • Aleksei Brusianskii
  • Alessio Curri
  • Alex T
  • Alex Z
  • Alexander Martin
  • Alexander Pankov
  • Alexandre Jablonski
  • Alexey Kamenskiy
  • alm0241
  • Alok Anand
  • Alucard
  • Ananthaneshan Elampoornan
  • Andreas Marufke
  • Andreas Schmid
  • Andrew Brant
  • Andrew Melton
  • Andrew Reusch
  • Andrew Ruan
  • Andrzej V
  • Andy
  • Andy Keys
  • Anish Patel
  • Anix
  • Anonymous
  • Anthony Junk
  • Anton Kovalenko
  • Armen
  • Aron Green
  • Aron Perelman
  • Artem Simonov
  • Arthur Mayer
  • Arthur Woimbée
  • Ashlesh Chaudhari
  • Asim Shakour
  • Augusto Becciu
  • AVS Computer
  • awkspace
  • baddog
  • Bao Tin Hoang
  • Bean Co.
  • Bela Bargel
  • Belf Igor
  • Ben Gordon
  • Ben Scott
  • Benedikt Heine
  • Benedikt Meier
  • Benjamin Frewert
  • Benjamin Melancon
  • Benjamin Schwartz
  • Benjamin Stegmann
  • Benni Stauder
  • Bernhard Fitzke
  • Beu
  • bikmaek
  • bitjoe
  • Bits and Bytes Computers LLC
  • Bjoern Petsch
  • Blindside
  • Blue Frog LLC
  • Bootstrapper - Programmierung erklärt
  • Bosco
  • Bradford King
  • Brainspore Networks
  • Branden Shaulis
  • Brandon Daniels
  • Brian Moses
  • Brian T Mulcahy
  • Brian Vecchiarelli
  • Brian White
  • Bruno Gomes
  • Bryan Adams
  • Bryan Montgomery
  • Buzzer
  • C P ELSE
  • Calanish
  • Cameron Hatcher
  • Cameron Tacklind
  • Carl Mercier
  • Carl-Fredrik Johansson
  • Carlos Manuel Torres
  • cbad536
  • CHINATERA LIMITED
  • Chris Blackmon
  • Chris Burton
  • Chris Campbell
  • Chris Jackson
  • Chris Lewis
  • Chris Rizio
  • Christi King
  • Christian Schlögl
  • Christian Svensson
  • Christoph Dette
  • Christof Maluck
  • Christoffer Lund
  • Christopher Bulla
  • Christopher Gelatt
  • Christopher Hearn
  • Christopher Mandlbaur
  • Christopher Mendoza
  • Christopher Simms
  • Chucktastic
  • Cihan VURAL
  • clauskj3r
  • Clifford Coleman
  • Clinton Lee Taylor
  • Cole Imhoff
  • Colin Goodman
  • Corey Layton
  • Corey Lista
  • Craig Keenan
  • Crossfactor
  • Cruzzer
  • ctag
  • Curt Sammer
  • CyB0rgg
  • DeMentor
  • Desmond Whitt
  • Daegara
  • DailyAneurism
  • Damon Meledones
  • Dan Berkowitz
  • Dan Brakeley
  • Daniel Bowder
  • Daniel Cabrera
  • Daniel Davila
  • Danilo Saft
  • Danne
  • David
  • David Brausewetter
  • David Godibadze
  • David Howell
  • David Irvine
  • David Klinkman
  • David Niemann
  • David Shay
  • David Ye
  • David York
  • Denis
  • Denis Andreev
  • Denis Yatsenko
  • Dennis Becker
  • Dennis Joslin
  • Dennis Lomet
  • Derek Jarvis
  • Derek Yap
  • Didrik
  • digitalbaconbits
  • Dimitrij Jedich
  • dixon wong
  • dizztrukshin
  • Dmitry Shilov
  • DogeLabs
  • Dominic Phoon
  • Dominik Klonowski
  • Edmon Abdul Nur
  • Egan Ford
  • Elani Ferri
  • Elliot Woo
  • Eric Phenix
  • Eugene Sukhodolin
  • ewook
  • eye-catcher.com
  • Fabian Druschke
  • Fabiano Sidler
  • Far Pin Solutions, LLC
  • Felyx Gabryel
  • Fergus McKay
  • Finn Ebenritter
  • floppy
  • fo0bar
  • Foad Yousef
  • Foamy
  • Foli Ayivoh
  • Folkert Weistra
  • Francisco Pavon
  • Frank
  • Frank Sander
  • Frederick Czajka
  • Fredrik Idréus
  • Garrett Dangerfield
  • Ge Men
  • Geekworm
  • Genkinger Andreas
  • Geijer
  • Geoffrey Wright
  • George Becker
  • Georgy Brodsky
  • Gerald
  • Gerardus Vernimmen
  • Gernot Neuschröer
  • Giovanni Fulco
  • GK
  • Glen Dragon
  • Greg Winterstein
  • Gregory Smith
  • Gregory Treantos
  • Grey Cynic
  • Guenter Honisch
  • Guido Bernacchi
  • Gustin Johnson
  • György Tamás Vizi
  • Haiberg GmbH
  • Haven Zheng
  • Heibunny
  • Heikki Tiittanen
  • Helio Leonardo Pinheiro e Mota
  • Henrik Ählström
  • Henry Hood
  • HimKo
  • HouseFPV
  • Howard Simons
  • HyunohRyu
  • Icculus
  • iks
  • Invader Monks
  • IT Lifesaver
  • Ivan Ganev
  • Ivan Josiah Lapis
  • Ivan Shapovalov
  • iwbjhbweriuhf
  • J
  • J L
  • Jaanus
  • Jackson Wyatt
  • Jacob Karaffa
  • Jacob Morgan
  • James Cadd
  • James Cobb
  • James Edwards
  • James Kocher
  • James Mayhugh
  • James Ye
  • Jamie Murphy
  • Jamie Scott
  • Jan Niehusmann
  • Jari Hiltunen
  • Jason Crossley
  • Jason Downey
  • Jason Toland
  • Jasper Backer
  • Jay Davis
  • Jay Isaacs
  • Jazereel Goh
  • Jean-Daniel Croteau
  • Jean-Philippe Guilbault
  • Jeff
  • Jeff Bowman
  • Jeff Urlwin
  • Jennifer Herting
  • Jennifer Rowlett
  • Jeremy Abel
  • Jeremy Combs
  • Jeremy Hines
  • Jerremy Holland
  • Jerry Nall
  • Jerry Y. Chen
  • Jim Bailey
  • Jim Harbin
  • Jimmy Burgett
  • Jimmy Stanley
  • Joachim Bruening
  • Joe Hanson
  • Joe Hinteregger
  • Joe Ventura
  • Joel Jacobs
  • John Andersen
  • John Copeland
  • John F Glenn
  • John Kelley
  • John McGovern
  • Johnny Henson
  • Jon Ferguy
  • Joni Ruuskanen
  • Jonathan Slenders
  • Jonathan Vaughn
  • Joost Backer
  • Joseph Swift
  • Josh Nethery
  • Josh Ricker
  • Josh VanDeraa
  • Joshua Futterer
  • Jordan Blake
  • Jordi Pakey-Rodriguez
  • Joris van Embden
  • Jozef Riha
  • Jörgen Fredriksson
  • Julian Forero
  • Julian Schneider
  • Julien Angelier
  • Justin
  • Justin Waters
  • Kai Hadler
  • Kamil Chyba
  • Kari Matti Korpi
  • Karl Dunne
  • Karl Moos
  • Keith Muggleton
  • Ken Lee
  • Kenneth Younger III
  • Kenny Hui
  • KeonWoo PARK
  • Kevin Bajohr
  • Kevin Schwartz
  • Kevin Sherwood
  • Kiera Kujisawa
  • Kiran Schuler
  • Koloman
  • Konrad Neitzel
  • Krzysztof Żelaśkiewicz
  • Lance Ward
  • Larry Meaney
  • Lars
  • Lars Reinhardt
  • Lee Wilkinson
  • LeeNX
  • Leon Siegl
  • Leonard Feineis
  • Liran
  • Liviu Dimitriu
  • Lizardo Hernandez
  • LoCascio
  • Lordbob75
  • Lothar Schweikle-Droll
  • Louis Müller
  • LSDTripp
  • Ľubor Slušný
  • Luca Di Diomede
  • Lucio De Carli
  • Luiz Bizzio
  • Lukas Bischof
  • Lukas Kammerer
  • Lukas Söder
  • Maksim Terehin
  • Malcolm Cameron
  • Manfred Radeschnig
  • Marc Khouri
  • Marcin Wilk
  • Marcio Zimbres
  • Marco Rossi
  • Marcos Wolf
  • Marek Marczykowski-Górecki
  • Marius
  • Mar. Balske
  • Mark Farrell
  • Mark Gilbert
  • Mark Knam
  • Mark Robinson
  • Markrosoft
  • Markus Halm
  • Markus Schicker
  • Markus Sobczack
  • Marshall Bjerke
  • Marten Hermans
  • Martin Gasser
  • Martin Raine
  • Martin Suelmann
  • Martin Wilhelmi
  • Marvin Honderboom
  • Mateusz Grabowski
  • Mathias Uhl
  • Matt Kane
  • Matthew Cameron
  • Mauricio Allende
  • Max Evans
  • Mecky
  • Mehmet Aydoğdu
  • Michael Bartholomew
  • Michael Bell
  • Michael Bombe
  • Michael Collins
  • Michael Copeland
  • Michael Ho
  • Michael Kovacs
  • Michael Lynch
  • Michael Pennington
  • Michael Sage
  • Michael Thalmann
  • Michael Wu
  • MichaelZ
  • Michel Bissonnette
  • Mikael Wikström
  • Mike Mason
  • Milan Múčka
  • Miles Davis
  • Minh Tang
  • Moez Tharani
  • Morgan Helton
  • Myron Weber
  • N Patel
  • Nathaniel Griswold
  • Nelson Lee
  • nezu
  • Nicholas Jeppson
  • Nicholas Kopas
  • Nicholas Walczak
  • Nick Leffler
  • Nick Roethemeier
  • Nico Baumgartner
  • Nicolai Kragh-Hansen
  • Nigel Smith
  • Nihal Fernando
  • Nils Orbat
  • Nis Wechselberg
  • Nithin Philips
  • Nod Swal
  • Nolan Haynes
  • nubbn
  • nybble
  • Oh Be
  • Oliver Schwarz
  • Oliver Zimmer
  • Omar El-Domeiri
  • Omar Siam
  • Oscar
  • Patrick
  • Patrick Fortin-Ducharme
  • Patrick McDowell
  • Patrick Wagstrom
  • Paul Bishop
  • Paul De La Rosa
  • Paul Pietkiewicz
  • Paul Tan
  • Pawel Trofimiuk
  • Peder Madsen
  • Peter
  • Peter Drayton
  • Peter Farrelly
  • Peter Okelmann
  • Petra Lohmann
  • Petri Heiskanen
  • Phil Wu
  • Philip Edwards
  • Philip Merricks
  • Pierre Brassart
  • Pierre Peine
  • posicat
  • pozitron03
  • Przemysław Szypowicz
  • P_Dmitrij
  • Qteal
  • Quattro Uno
  • Quentin Peten
  • Ralph Borchers
  • Ranc1d
  • Randall D Bilbrey
  • RandomJerk
  • Ref Chowdhury
  • Raphael Schitz
  • René Rathenau
  • ReysDad
  • Ricardo Marques
  • Richard
  • Richard Bernarts
  • Richard Fancher
  • Richard Freemantle
  • Richard Michael
  • Rico Cantrell
  • Rob
  • Rob Holden
  • Rob Tongue
  • Robert Klauco
  • Robert Weemhoff
  • Robin Gfatter
  • Rodion DENISYUK
  • Rohit Priyadarshi
  • Rolfs 3D UG
  • Ronald LeBaron
  • Ronald Wells
  • Ronny Haldorsen
  • rotx
  • Rufo Sanchez
  • Russell Scott
  • Ryan
  • Ryan Peacock
  • Samed Ozoglu
  • Sameul Davies
  • Samuel Vetsch
  • Samuel Walker
  • Sarah Foster
  • Sarten X
  • Satish Alwani
  • Scott
  • Scott Gagon
  • Scott Spicola
  • Scott Tusing
  • Scott Worthington
  • Sean
  • SEAT
  • Sebastian
  • Seonwoo Lee
  • Sergey Lukjanov
  • Seth Jennings
  • Shane Selling
  • Shawn Butts
  • Sheran Gunasekera
  • Shichun Chen
  • Shin Guey Wong
  • Simon Evans
  • Simon Sundgaard
  • Simplistic Realities
  • Snowy Maslov
  • Solve Technology
  • srepac
  • Stefan Bautz
  • Stefan Müller
  • Stefan Stemmer
  • Stefan Vaillant
  • Stephan Schmidt
  • Stephen
  • Stephen Hocking
  • Steve Jones
  • Steve Kerr
  • Steve Ovens
  • Steve Stringham
  • Steven Richter
  • Stratagem Solutions Ltd
  • Sven Breckler
  • sudo34
  • SuperHiTech
  • Tango_Echo_Alpha
  • Tarlak Desaydrone
  • TechBear
  • Ted
  • Tejun Heo
  • TheSnowedOne
  • TheTechGiant
  • Thomas Charisoulis
  • Thomas Gitlin
  • Thomas Hagenmaier
  • Thomas Hedberg Jensen
  • Thomas Price
  • Thomas Søfteland
  • Tim Lenz
  • Tim Wilkinson
  • Timo Brinkmann
  • Timothee Besset
  • Tom Lawson
  • Tom York
  • Tomas Kuchta
  • Tomáš hrubý
  • Torsten Droste
  • Tobias Schafferhans
  • Tracy Fitch
  • Tristan Schoening
  • Truman Kilen
  • turbochris
  • tutanak
  • Tyler
  • Udo Schroeter
  • Uli Fahrer
  • Vasily Lazarev
  • Vicente Salvador Cubedo
  • Vidru Eduard
  • Viktor Aschenbrenner
  • Viktor Ekmark
  • Vincent Chov
  • Vlad Sterescu
  • Volker Gropp
  • Walli
  • Walter_Ego
  • William Wenzel
  • Will Froning
  • William Hooper
  • William Perrin
  • William Stearns
  • Woojin Son
  • xMdb
  • Yanko Kaneti
  • Yaroslav Kulikovskikh
  • Yethal
  • Yevgeniy Kuksenko
  • Yogi
  • Yigal Dar
  • YURI LEE
  • Yurii Ostapchuk
  • Zeljko
  • zgen
  • Zoltan Magyari
  • Zsombor Vari