@ -100,7 +100,7 @@ Pi-KVM supports several different hardware configurations, referred to as **plat
* USB-A 3A charger (female socket) or power supply.
* USB-A 3A charger (female socket) or power supply.
* Video capture device:
* Video capture device:
- **Recommended**: [HDMI to CSI-2 bridge based on TC358743](https://aliexpress.com/item/4000102166176.html) - low latency ~100ms, more reliable.
- **Recommended**: [HDMI to CSI-2 bridge based on TC358743](https://aliexpress.com/item/4000102166176.html) - low latency ~100ms, more reliable.
- ... or [HDMI to USB dongle](https://aliexpress.ru/item/4001043540669.html) (not available for ZeroW) - high latency ~200ms, [not very reliable](#a-few-words-about-hdmi-usb-dongle)).
- ... or [HDMI to USB dongle](https://aliexpress.com/item/4001043540669.html) (not available for ZeroW) - high latency ~200ms, [not very reliable](#a-few-words-about-hdmi-usb-dongle)).
* Only for Raspberry Pi 4: parts for Y-splitter cable:
* Only for Raspberry Pi 4: parts for Y-splitter cable:
* Option #1: DIY (for soldering or twist):
* Option #1: DIY (for soldering or twist):
- 1x USB-A to USB-C cable (male-male).
- 1x USB-A to USB-C cable (male-male).
@ -118,7 +118,7 @@ Pi-KVM supports several different hardware configurations, referred to as **plat
- A breadboard and wires.
- A breadboard and wires.
#### A few words about HDMI-USB dongle
#### A few words about HDMI-USB dongle
It's completely supported and Pi-KVM works great with it. But it has some disadvantages compared with recommended [HDMI-CSI bridge](https://aliexpress.ru/item/4000102166176.html): USB gives a lot of latency (200ms vs 100ms) and it doesn't support stream compression control (you won't be able to use Pi-KVM in a place with a poor internet connection). It also cannot automatically detect screen resolution. All this is caused by the hardware limitations of the dongle itself. In addition, some users report hardware problems: the dongle may not work in the BIOS or simply stop working after a while. It's a black box, and no one knows what's inside it. If you have problems with it, it will not be possible to fix them.
It's completely supported and Pi-KVM works great with it. But it has some disadvantages compared with recommended [HDMI-CSI bridge](https://aliexpress.com/item/4000102166176.html): USB gives a lot of latency (200ms vs 100ms) and it doesn't support stream compression control (you won't be able to use Pi-KVM in a place with a poor internet connection). It also cannot automatically detect screen resolution. All this is caused by the hardware limitations of the dongle itself. In addition, some users report hardware problems: the dongle may not work in the BIOS or simply stop working after a while. It's a black box, and no one knows what's inside it. If you have problems with it, it will not be possible to fix them.
## Hardware for v0
## Hardware for v0
* Raspberry Pi 2 or 3.
* Raspberry Pi 2 or 3.
@ -135,7 +135,7 @@ It's completely supported and Pi-KVM works great with it. But it has some disadv
* ATX control (optional): [see v2 description](#hardware-for-v2).
* ATX control (optional): [see v2 description](#hardware-for-v2).
#### Addition
#### Addition
* If you want to capture VGA from your server instead of HDMI, buy the [VGA-to-HDMI converter](https://aliexpress.ru/item/4000553298530.html).
* If you want to capture VGA from your server instead of HDMI, buy the [VGA-to-HDMI converter](https://aliexpress.com/item/4000553298530.html).
* Pi-KVM can be powered using PoE, but it is not recommend to use the official PoE HAT: it is unreliable and [not compatible with the HDMI bridge](https://github.com/pikvm/pikvm/issues/6). Use any other PoE hat without an I2C fan controller.
* Pi-KVM can be powered using PoE, but it is not recommend to use the official PoE HAT: it is unreliable and [not compatible with the HDMI bridge](https://github.com/pikvm/pikvm/issues/6). Use any other PoE hat without an I2C fan controller.
* **Don't use random relay modules or random optocouplers!** Some relays or optocouplers may not be sensitive enough for the Raspberry Pi, some others may be low-level controlled. Either use relays that are activated by a high logic level, or follow the design provided and buy an OMRON. See details [here](https://github.com/pikvm/pikvm/issues/13).
* **Don't use random relay modules or random optocouplers!** Some relays or optocouplers may not be sensitive enough for the Raspberry Pi, some others may be low-level controlled. Either use relays that are activated by a high logic level, or follow the design provided and buy an OMRON. See details [here](https://github.com/pikvm/pikvm/issues/13).
@ -208,6 +208,9 @@ Congratulations! Your Pi-KVM will be available via SSH (`ssh root@<addr>` with p
To change the root password use command `passwd` via SSH or webterm. To change Pi-KVM web password use `kvmd-htpasswd set admin`.
To change the root password use command `passwd` via SSH or webterm. To change Pi-KVM web password use `kvmd-htpasswd set admin`.
# Access to Pi-KVM from the Internet
You can use port forwarding for port 443 on your router if it has an external IP address. In all other cases, you can use the excellent free VPN service [Tailscale](pages/tailscale.md), which is configured on Pi-KVM with a [few simple commands](pages/tailscale.md).
If you have any problems or questions, contact us using Discord: https://discord.gg/bpmXfz5
If you have any problems or questions, contact us using Discord: https://discord.gg/bpmXfz5
Happy using of Pi-KVM :)
Happy using of Pi-KVM :)
@ -270,23 +273,11 @@ Our future [v3 platform](#the-future-v3-platform-work-in-progress) will contain
* To use IPMI BMC you need to set up an appropriate account and run the `kvmd-ipmi` daemon (`systemctl enable --now kvmd-ipmi`). Although Pi-KVM supports the IPMI protocol, we strongly recommend that you do not use it outside of trusted networks due to the protocol's [insecurity](https://github.com/NitescuLucian/nliplace.com.blog.drafts). Refer to the file `/etc/kvmd/ipmipasswd` to configure IPMI account.
* To use IPMI BMC you need to set up an appropriate account and run the `kvmd-ipmi` daemon (`systemctl enable --now kvmd-ipmi`). Although Pi-KVM supports the IPMI protocol, we strongly recommend that you do not use it outside of trusted networks due to the protocol's [insecurity](https://github.com/NitescuLucian/nliplace.com.blog.drafts). Refer to the file `/etc/kvmd/ipmipasswd` to configure IPMI account.
* To use VNC you need to change the keyboard layout for non-US client keyboards using `/etc/kvmd/override.yaml`. For example:
* [Enabling VNC](pages/vnc.md).
```yaml
vnc:
* [Using Arduino HID (for USB or PS/2) with **v2** platform](pages/arduino_hid.md).
keymap: /usr/share/kvmd/keymaps/ru
```
By default username and password authentication is used. This is not supported by all clients (we recommend [TigerVNC](https://tigervnc.org)). To enable passphrase authentication, you need to edit the file `/etc/kvmd/vncpasswd` to set passphrases and enable this feature in `/etc/kvmd/override.yaml`:
```yaml
vnc:
auth:
vncauth:
enabled: true
```
After that you can enable the `kvmd-vnc` daemon (`systemctl enable --now kvmd-vnc`). VNC will be available on port 5900 by default.
It is reccomended to disable the automatic quality adjust setting if there is one in your client (this is called "Auto-Select"in TigerVNC).
Please note: **we strongly discourage the use of VNC on untrusted networks.** The current implementation does not use encryption, and your passwords are transmitted over the network in a plain text. The existing anonymous TLS mode is also not secure enough.
* To use Arduino HID (for USB or PS/2) with **v2** platform see [here](pages/arduino_hid.md).
* [Wi-Fi configuration after install](pages/wifi_config.md).
-----
-----
@ -337,7 +328,9 @@ These kind people donated money to the Pi-KVM project and supported work on it.
* Aleksei Brusianskii
* Aleksei Brusianskii
* Alucard
* Alucard
* Anton Kovalenko
* Anton Kovalenko
* Aron Perelman
* Arthur Woimbée
* Arthur Woimbée
* baddog
* Ben Gordon
* Ben Gordon
* Branden Shaulis
* Branden Shaulis
* Brian White
* Brian White
@ -355,6 +348,7 @@ These kind people donated money to the Pi-KVM project and supported work on it.
* Grey Cynic
* Grey Cynic
* Guido Bernacchi
* Guido Bernacchi
* HimKo
* HimKo
* Ivan Shapovalov
* Jacob Morgan
* Jacob Morgan
* Jason Toland
* Jason Toland
* Jeff Bowman
* Jeff Bowman
@ -369,9 +363,12 @@ These kind people donated money to the Pi-KVM project and supported work on it.
Using Arduino HID on non-v0 platforms is useful if you need a simple and primitive keyboard emulation device. For example, when used with a hardware KVM switch. You can use the firmware to emulate a USB keyboard and mouse, or for the PS/2 keyboard only.
Using Arduino HID on non-v0 platforms is useful if you need a simple and primitive keyboard emulation device. For example, when used with a hardware KVM switch. You can use the firmware to emulate:
* [USB keyboard & mouse](#usb-keyboard--mouse)
* [PS/2 keyboard only](#ps2-keyboard)
* [PS/2 keyboard & USB mouse](#ps2-keyboard--usb-mouse)
## USB keyboard & mouse
## USB keyboard & mouse
* Build and connect HID according to the [diagram](../README.md#setting-up-the-v0) (the bottom part with transistor, level-shifter and Arduino).
* Build and connect HID according to the [diagram](../README.md#setting-up-the-v0) (the bottom part with transistor, level-shifter and Arduino).
@ -24,7 +27,7 @@ Using Arduino HID on non-v0 platforms is useful if you need a simple and primiti
## PS/2 keyboard
## PS/2 keyboard
Using the PS/2 firmware currently has the following limitations:
Using the PS/2 firmware currently has the following limitations:
* The possibility of using USB HID is excluded.
* The possibility of using USB HID is excluded.
* Mouse is not supported due to features of the [PS/2 protocol](https://wiki.osdev.org/PS/2_Mouse).
* PS/2 mouse is not supported due to features of the [PS/2 protocol](https://wiki.osdev.org/PS/2_Mouse).
Both of these problems will be solved one way or another in the future and the two different firmware versions will be combined into one universal one.
Both of these problems will be solved one way or another in the future and the two different firmware versions will be combined into one universal one.
This is a mixed mode of HID which is a compromise for old computers. Connections are made simultaneously by both USB and PS/2 pins, as shown in the diagram above. Follow the [PS/2 instructions](#ps2-keyboard), but use these commands to build and install the firmware:
You can use [Tailscale](https://tailscale.com/) to access Pi-KVM on the internal network. This is a convenient and free (for private use) tool for organizing a small VPN network.
# Installation
## On the Pi-KVM side
1. Use this commands:
```
# rw
# pacman -Syy
# pacman -S tailscale
# systemctl enable --now tailscaled
# tailscale up
```
2. Follow the link to authorize this installation.
3. After success, perform soft reboot using `reboot` command to make sure that everything will work correctly.
4. Perform command `ip addr show tailscale0` to view the Tailscale IP address.
## On the workstation side
* Download and install tailscale for your OS: https://tailscale.com/download
* Check tha page https://login.tailscale.com/admin/machines to view your VPN network.
* Follow the URL in the web browser: `https://<tailscale_kvm_ip>` and you will see Pi-KVM web interface.
As an alternative to the web interface, you can use VNC with various desktop clients. The main advantage of VNC over the browser is the ability to expand the image to the full screen, as well as complete interception of all keyboard keys. In some cases, VNC will be more responsive than the browser, especially on weak computers.
**Please note: we strongly don't recomment the use of VNC in untrusted networks.** The current implementation uses either weak TLS encryption or no encryption at all (depending on your client). In the latter case, your password will be transmitted over the network in plain text. Unfortunately, this is the reality of the VNC protocol.
# Enabling VNC on the Pi-KVM side
1. Switch Pi-KVM filesystem to the read-write mode using command `rw`.
2. Optional: change client's keyboard layout if you're using an non-US keyboard. To do this edit file `/etc/kvmd/override.yaml` (remove `{}` before adding lines):
```yaml
vnc:
keymap: /usr/share/kvmd/keymaps/ru
```
3. Optional: some VNC clients (for example TightVNC) can't use user/password authentication. In this case you can enable passhrases mode in `/etc/kvmd/override.yaml`:
```yaml
vnc:
auth:
vncauth:
enabled: true
```
To set passphrases edit file `/etc/kvmd/vncpasswd`.
4. Enable `kvmd-vnc` daemon. VNC will be available on the port 5900: `systemctl enable --now kvmd-vnc`.
5. Switch filesystem to the read-only: `ro`.
# Configuring the client
We recommend [TigerVNC](https://tigervnc.org) for the better experience.
Here the settings for this client:
* **Compression** tab:
- Choose **Tight** encoding as preferred and color-level **Full**.