PiKVM Setup Script for Pi Zero 2W
bin | ||
lib | ||
src | ||
install.sh | ||
motd | ||
README.md |
PiKVM - Pi Zero 2 W
The official PiKVM is expensive so I decided take build my own & add some features in the process:
- Small "USB dongle" form-factor with minimal connections
- Simple install script which lets you toggle all added features
- Static MAC addresses to fix IP changes on reboot while using DHCP
- Creates access point when network connection is lost for easy configuration
- Ethernet connection for wired networks
- Ethernet passthrough coming soon!
- E-ink display for showing network information
- Create a jumpbox by adding a wireguard config (
wg0.conf
) to the boot partion - Simple SWAP managment script to download more memory on the fly
- Install 1G of memory:
swap.sh 1024
- Uninstall swap:
swap.sh --disable
- Install 1G of memory:
Hardware
- Pi Zero 2 W + SD Card
- Ethernet to SPI
- W5500 (Faster)
- or ENC28J60
- HDMI to CSI-2
- 2.13" E-Ink Display
Assembly
- Cut the head off a USB cable & solder it to the debug pads on the back of the Pi; extend to the right (Opposite the SD card)
- Connect HDMI/CSI-2 module via short ribbon cable (~40 mm); fold over and glue to back of board alighting with the SD card
- Wire the Ethernet/SPI module onto SPI chanel 0
Module | RPI GPIO (Board) |
---|---|
V | 17 (5/3.3 V) |
G | 20 (Any Ground) |
MI | 19 (SPI0 MOSI) |
MO | 21 (SPI0 MISO) |
SCK | 23 (SPI0 SCLK) |
CS | 24 (SPI0 CE0) |
INT | 22 (GPIO 25) |
- Connect E-Ink display via side pins to SPI channel 1
Module | RPI GPIO (Board) |
---|---|
VCC | 4 (5/3.3 V) |
GND | 6 (Any Ground) |
DIN | 19 (SPI0 MOSI) |
CLK | 23 (SPI0 SCLK) |
CS | 26 (SPI0 CE1) |
DC | 15 (GPIO 22) |
RST | 16 (GPIO 23) |
BUSY | 18 (GPIO 24) |
Build PiKVM
To use ethernet over SPI, you will need to build your own version of PiKVM by doing the following:
- Install tools:
sudo apt install git make curl binutils docker.io -y
- Clone sources:
git clone --depth=1 https://github.com/pikvm/os
- Create the following file
config.mk
:
# Base board
BOARD = zero2w
# Hardware configuration
PLATFORM = v2-hdmi
# Target hostname
HOSTNAME = pikvm
# ru_RU, etc. UTF-8 only
LOCALE = en_US
# See /usr/share/zoneinfo
TIMEZONE = UTC
# For SSH root user
ROOT_PASSWD = root
# Web UI credentials: user=admin, password=adminpass
WEBUI_ADMIN_PASSWD = admin
# IPMI credentials: user=admin, password=adminpass
IPMI_ADMIN_PASSWD = admin
- Make the OS:
sudo make os NC=1
- Make image:
sudo make image
- Use the created image inside
images/
in the next step
Install
- Flash SD card with your built image or the latest PiKVM image using the Raspberry Pi Imager
- Open the newly created boot directory on the SD card in your file browser
- Enable SSH by creating an empty file:
/boot/ssh
- Edit
/boot/config.txt
to include:
# For screen and/or ethernet:
dtparam=spi=on
# Pick correct ethernet chip:
dtoverlay=w5500
# Or
dtoverlay=enc28j60
- Edit
/boot/pikvm.txt
to include your WiFi credentials for initial configuration:
FIRST_BOOT=1
WIFI_ESSID="wifi_name"
WIFI_PASSWD="wifi_pass"
- Insert SD card into Pi, connect an HDMI cable to the PI HDMI output (not the added module), connect the USB port to power
- After statup, open the IP address in your browser or SSH directly & use
admin/admin
to login - Open the console, login as root & run the install script:
$ su -
**Enter password: root**
# curl https://git.zakscode.com/ztimson/PiKVM/raw/branch/master/install.sh | bash