mirror of https://github.com/pikvm/pikvm.git
				
				
				
			
		
			
				
	
	
		
			88 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| !!! warning "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](pico_hid.md).
 | |
|     This one can also serve as an in-place compatible replacement for the Arduino HID in the old build.
 | |
| 
 | |
| # Flashing the Arduino HID
 | |
| 
 | |
| ## Note for the recent images
 | |
| 
 | |
| Current image no longer ships with necessary tools for flashing Arduino HID, therefore please install `platformio-core` and `avrdude` and continue:
 | |
| 
 | |
| ```shell
 | |
| pacman -Syu
 | |
| pacman -S platformio-core avrdude
 | |
| ```
 | |
| 
 | |
| ## Serial Firmware (the default option)
 | |
| 
 | |
| This operation can be done using your RPi (except Pi Zero W). Here the common steps:
 | |
| 
 | |
| 1. Disconnect the RESET wire from the Arduino board.
 | |
| 
 | |
| 2. Connect the Arduino and RPi with a suitable USB cable.
 | |
| 
 | |
| 3. Log in to the Raspberry Pi console using SSH or Web Terminal.
 | |
| 
 | |
| 4. Upload the firmware (USB keyboard & mouse is used by default, on this step [you can choose PS/2 keyboard](arduino_hid.md#ps2-keyboard)):
 | |
| 
 | |
|     ```
 | |
|     # rw
 | |
|     # systemctl stop kvmd
 | |
|     # cp -r /usr/share/kvmd/hid/arduino ~
 | |
|     # cd ~/arduino
 | |
|     # make
 | |
|     # make install
 | |
|     # reboot
 | |
|     ```
 | |
| 
 | |
| 5. 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](https://github.com/pikvm/kvmd).
 | |
| 
 | |
| 
 | |
| ## SPI Firmware
 | |
| 
 | |
| This operation can be done using your Raspberry Pi without disconnecting any wires:
 | |
| 
 | |
| 1. Connect the Arduino and RPi with a suitable USB cable.
 | |
| 
 | |
| 2. Log in to the Raspberry Pi console using SSH or Web Terminal.
 | |
| 
 | |
| 3. Execute `rw`, add line `dtoverlay=spi0-1cs` to `/boot/config.txt` and perform `reboot`.
 | |
| 
 | |
| 4. Build and upload the firmware (USB keyboard & mouse is used by default)
 | |
| 
 | |
|     ```shell
 | |
|     # rw
 | |
|     # systemctl stop kvmd
 | |
|     # cp -r /usr/share/kvmd/hid/arduino ~
 | |
|     # cd ~/arduino
 | |
|     # 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.
 |