# PiKVM V3 HAT

<img src="assembled.jpg" width="400" />


## Installation requirements

??? note "If you have an assembly kit, you will need the following things"
    * Raspberry Pi 4 with 1Gb RAM or more.
    * Heat sinks (Optional)
    * MicroSD card (at least 16Gb, class 10 recommended).
    * USB-C to USB-A cable.
    * HDMI cable.
    * [Straight Ethernet cable](https://www.home-network-help.com/straight.html) (for the ATX board connection).
    * Power supply unit (5.1V 3A USB-C, recommended by the Raspberry Pi).

!!! tip "Before assembling"
    * Please review the back of the box. All parts are required before the HAT is fully functional.
    * The USB-C bridge is located in with the ATX end which includes a pink foam spacer.
    * Please assemble the HAT onto the RPi and test all of the parts before installing in the case, it's easier to install in the case than to dissasemble it.
    * If going from a V2 to a V3, the splitter is **no longer needed**.
    
??? note "For pre-assembled V3"
    * If going from a V2 to a V3, the splitter is built in and is **no longer needed**.


## Basic setup

If you have a kit without a metal case, you can use our free 3D printing case drawing: [V3.3](stl/v3.3/index.md){target=_blank} for the Kickstarter/Store model, [V3.2](stl/v3.2/index.md){target=_blank} for the pre-release.

1. **[Flash the memory card.](flashing_os.md){target=_blank}**. Please use the V3 image, V2 image is not compatible.

2. **Build PiKVM** according to the video instruction or review the [illustrated instructions](v3_illustrated_install_instructions.md):
    
    ??? tip "Video Guide: Metal case step by step" 
        NOTE: OLED will not light up till step 5 is performed, video was performed after it was already configured, heat sinks NOT included.
        ![type:video](https://www.youtube.com/embed/jdqiwHKQcD4)

    ??? tip "Video Guide: Step by step with HAT device with or without the 3D-printed case"
        ![type:video](https://www.youtube.com/embed/-SRL92VJ870)

    !!! warning
        OLED glass can crack if force is used to install it, please handle with care and rock back and forth on the pins side to install.


3. **Connect PiKVM** to the computer according to the diagram below:

    | Back side | Front side |
    |-----------|------------|
    | <img src="basic_back.jpg" width="300" /> | <img src="basic_front.jpg" width="300" /> |

    * **HDMI input** and **USB emulation** port must be connected to the computer. Optionally, the **[ATX port](atx_board.md)** 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. On the HDMI the HAT, like the CSI bridge, supports 1080p50Hz or 720p60Hz or lower.

    * Connect **Ethernet** to the network and **USB power** to the Raspberry Pi power supply.

4. **Carefully read and follow [the "First steps" guide](first_steps.md){target=_blank}.**<br>
    It describes how to find PiKVM on the network, how to log in there, change passwords, and so on.<br>
    **Follow the steps described there and come back to this page.**

5. ??? note "If your kit includes the OLED display and/or the fan, you'll need to turn them on (this is only needed for the older V3 image for the HAT, in the box image everything is enabled by default)"

        Log in to PiKVM and run these commands:

        ```console
        [root@pikvm ~]# rw
        [root@pikvm ~]# systemctl enable --now kvmd-oled kvmd-oled-reboot kvmd-oled-shutdown
        [root@pikvm ~]# systemctl enable --now kvmd-fan
        [root@pikvm ~]# ro
        ```
    
6. ??? note "Using Fahrenheit instead of Celsius on the OLED"

        ```console
        [root@pikvm ~]# mkdir -p /etc/systemd/system/kvmd-oled.service.d
        ```

        Create file `/etc/systemd/system/kvmd-oled.service.d/override.conf`:

        ```ini
        [Service]
        ExecStart=
        ExecStart=/usr/bin/kvmd-oled --clear-on-exit --fahrenheit
        ```

        Then run `systemctl restart kvmd-oled`. In some cases, if you still do not see Fahrenheit being displayed, reboot the device.

7. **Just reminding again:**

    {!_passwd.md!}

8. **Try to manage the computer using PiKVM with the Web Interface.**<br>
    Make sure that you get an image and both keyboard and mouse are working.
    If something doesn't work, check out our [FAQ](faq.md) (it's really useful).
    If nothing helped, you can get support in our [Discord chat](https://discord.gg/bpmXfz5).

9. ??? note "Check the HDMI backpowering problem. ONLY applicable under specific circumstances. NOT getting NO SIGNAL."
    Try restarting PiKVM using the `reboot` command executed in the terminal. If PiKVM hangs during boot (you can't get the Web Interface for a long time), then you are faced with this rare problem. **Don't worry, it's easy to fix.** Turn off the PiKVM, disconnect all cables from it, take a close look at the [diagram of its ports and jumpers](#io-ports-and-jumpers), and **remove jumper #14** (it is to the right of the CSI connector). Then you can connect and power up PiKVM again. Now everything will be fine. If you are interested in the technical background, it is described [here](https://www.kickstarter.com/projects/mdevaev/pikvm-v3-hat/posts/3296343). Also, just for information: not a single case of negative consequences from the removal of the jumper has been recorded.

10. !!! warning "IO ports and other things"
    **Before using GPIO** pins to control a relay, KVM switch, or anything else, be sure to [check the HAT pinout](#io-ports-and-jumpers). Many ports are busy with internal functions. Before using them for your own use, you must disable them, otherwise you may damage the device.

11. Enable [audio forwarding](audio.md){target=_blank} if you want.

12. Configure access to PiKVM from the Internet using [port forwarding](https://docs.pikvm.org/port_forwarding)
    or [Tailscale VPN](https://docs.pikvm.org/tailscale), if you need it.

13. Explore the features of PiKVM using the site's table of contents and have fun!


## Video modes

PiKVM V3 supports maximum resolution 1920x1080@50Hz, 60Hz will not work. You can use any other resolution less than the specified one, for example: 1600x1200@60Hz, 1280x720@60Hz, etc. If you have problems with the video, follow [this guide](edid.md).


## ATX connection

[See here](atx_board.md).


## IO ports and jumpers

??? note "See the diagram"
    <img src="v3_features.jpg" />

    1. [**ATX controller** interface](atx_board.md) (power on/off, reboot control, PWR and HDD ACT LEDs).
    2. **HDMI reset** jumper. Connects GPIO 17 and RESET pin to HDMI capture chip. Currently not used, don't touch it.
    3. **SPI and GPIO** for the custom extension boards.
    4. **Audio capture** jumpers. Connects I2S pins 18, 19, 20 to HDMI capture chip.
    5. **UART access** jumpers. Connects GPIO 14 and 15 to the RJ-45 and USB console ports.
    6. **Serial console port** (default: /dev/ttyAMA0, RS232 input, outputs +6V/-6V, for the Raspberry Pi or server console access, use the [Cisco/Mikrotik-style](https://wiki.mikrotik.com/wiki/File:Rj45-pinout.gif.png) cable).
    7. **USB-C console port** (shared with #6 above, takes priority over RJ45).
    8. **Power** and **activity LEDs**. On the left of the LEDs the watchdog jumper is located. Don't touch it.
    9. **USB-C power input**.
    10. **I2C display connector**.
    11. **Alternate +5V power input/output** header pins.
    12. **RTC clock** supercapacitor (rechargeable).
    13. **FAN connector** - PWM controlled.
    14. **CSI-2 interface** and **HDMI backpowering** jumper, see [Step 9 of the Basic Setup](#basic-setup). Open: (jumper removed) diode will stop current from HDMI input (backpower will be fixed), closed: (jumper connected to both pins) will allow current from HDMI device. 
    15. Built-in **power splitter** port.
    16. **HDMI capture port** (max 1080p @ 50Hz) with **sound capture** support.
    17. **USB emulation pins** for alternative access.
    18. **USB-C emulation port** - this port is doing the emulation of a USB keyboard, mouse, Virtual CD-ROM or USB Flash Drive, USB-Ethernet, USB-Serial port and a lot of other Linux-supported features.
    19. **1-Wire** & **Neo-pixel** interface (under, advanced user feature).

??? note "GPIO pinout"

    !!! warning
        Before proceeding, make sure that the mb you are using has normal ATX headers

    * **ATX control**
      - `power led = GPIO 24` - Used for reading the host power state.
      - `hdd led = 22` - Same for the HDD activity.
      - `power switch = 23` - Used for pressing the power button of the host.
      - `reset switch = 27` - Same for the reset button.

      These pins can't be used for any other purposes even if ATX function is disabled.

    * **I2C bus** - `GPIO 2, 3` - Can be used as I2C ONLY (OLED/RTC).

    * **1-Wire [19]** - `GPIO 4` - Also available under ATX RJ-45 port (point [19] on the above) as bi-directional buffered open-drain 5V for regular 1-Wire usage.

    * **UART** - `GPIO 14, 15` - Can be used as UART only for the serial console. When jumpers [5] are removed, you can connect to pins 14 and 15 directly using GPIO header. Also you can remove jumper [5] and disable UART console in the `/boot/config.txt` and `/boot/cmdline.txt` to use this pins for any purpose. But it's not recommended.

    * **Red activity led on the front [8]** - `GPIO 13` - Can be disabled in `/boot/config.txt` and available on the Neo-pixel port [19].

    * **PWM fan controller** - `GPIO 12`. Can be used for custom purposes if the fan disconnected and `kvmd-fan` service is stopped.

    * **I2S HDMI sound** - `GPIO 18, 19, 20, 21`. Can be used for custom purposes if the `tc358743-audio` overlay in `/boot/config.txt` is disabled **AND** jumpers [4] are removed.

    * **USB breaker** - `GPIO 5` - Can't be used for any other purposes.

The standard Raspberry Pi HDMI output (marked as `VIDEO OUT` on the PiKVM case) displays its own PiKVM OS console.


## Known issues and limitations
* The actual frame rate of the image received via HDMI will depend on the network bandwidth, resolution and the load on the Raspberry Pi. This is usually **~24-28 FPS for 1080p over LAN**.
* There may be **compatibility** issues with some motherboards (such as **HP** or **DELL**) which are the same as those that exist with PiKVM V2. Not everything is perfect, but if you have already used PiKVM V2 - our new V3 will work great and please you. If there is no image from the BIOS, you can fine-tune the HDMI settings, but it is possible that the Mass Storage devices will not be available in the BIOS.
* Pre-release V3.2 board (NOT Kickstarter/Store edition) doesn't have HDMI backpowering workaround jumper.
