Legacy warning
This page describes the legacy keyboard and mouse emulator used in old DIY builds. There is no point using it today because there is a more modern and better replacement for the new Pico HID. This one can also serve as an in-place compatible replacement for the Arduino HID in the old build.
Flashing the Arduino HID¶
Serial Firmware (the default option)¶
This operation can be done using your RPi (except Pi Zero W). Here the common steps:
-
Disconnect the RESET wire from the Arduino board.
-
Connect the Arduino and RPi with a suitable USB cable.
-
Upload the firmware (USB keyboard & mouse is used by default, on this step you can choose PS/2 keyboard):
# rw # systemctl stop kvmd # cp -r /usr/share/kvmd/hid/arduino ~ # cd ~/hid # make # make install # reboot
-
Connect the RESET wire, disconnect the USB cable, and reboot the RPi.
With a Pi Zero W, you may consider building the firmware on a faster system and programming using USB or booting from another SD card and following the build steps using a clone of the KVMD repo.
SPI Firmware¶
This operation can be done using your Raspberry Pi without disconnecting any wires:
-
Connect the Arduino and RPi with a suitable USB cable.
-
Execute
rw
, add linedtoverlay=spi0-1cs
to/boot/config.txt
and performreboot
. -
Build and upload the firmware (USB keyboard & mouse is used by default)
# rw # systemctl stop kvmd # cp -r /usr/share/kvmd/hid/arduino ~ # cd ~/hid # make spi # make install # reboot
Common Errors¶
Circuit Issues¶
Common - Reset Wire¶
Different pins are used for the reset wire but serve a similar function. For programming the TTL firmware over USB, the reset wire should be disconnected. When programming using SPI, the reset wire needs to be connected through a transistor circuit and connected to GPIO25 (pin 22 on the GPIO header)
SPI-specific Wiring¶
The 3v3, ground, Reset (GPIO25), MISO, MOSI, SCLK, and CS1 need to be connected appropriately. SPIO_CS0 and SPIO_CS1 can both be used but the default configuration uses SPIO_CS1 for the Arduino Microcontroller (CS0 is used for another device on the V3). These generally follow a block as follows:
Pin 0 2 4
2 0 0
.........GR.C.......
Row # 12345678901234567890
........3MMS........
Pin 0 1 3
1 7 9
The most common error is an "off-by-one" error where pins are shifted by a row. Some cases have non-standard GPIO layouts so please be careful when following these instructions using a case that has a modified pinout.