Skip to content

Commit

Permalink
Merge pull request #704 from Z2Z-GuGu/main
Browse files Browse the repository at this point in the history
Update NanoKVM Doc
  • Loading branch information
Zepan authored Aug 16, 2024
2 parents 87c5627 + 5bb0bbb commit 368b512
Show file tree
Hide file tree
Showing 64 changed files with 1,051 additions and 105 deletions.
Binary file added docs/hardware/assets/NanoKVM/guide/Old_fix.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/PinDefine.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/fix1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/imgsl.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/install.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/ssh.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/uart1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/uart2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/user1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/user2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/user3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/guide/user4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/unbox/Interface.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/unbox/U-I-W.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/unbox/full_ubox.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/unbox/hdmi.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/unbox/lite_ubox.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/unbox/new-ATX-B.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/unbox/old-ATX-B.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hardware/assets/NanoKVM/unbox/oled.jpg
Binary file added docs/hardware/assets/NanoKVM/unbox/unbox_9.png
8 changes: 8 additions & 0 deletions docs/hardware/en/kvm/NanoKVM/faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: F&Q
keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
---
## Feedback
* MaixHub Forum:https://maixhub.com/discussion/nanokvm
* GitHub :https://github.com/sipeed/NanoKVM
* QQ group: 703230713
90 changes: 90 additions & 0 deletions docs/hardware/en/kvm/NanoKVM/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
title: Introduction
keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
update:
- date: 2024-6-21
version: v0.1
author: BuGu
content:
- Release docs
- date: 2024-8-14
version: v1.1
author: BuGu
content:
- Update docs
---

## Introduction

![](./../../../assets/NanoKVM/introduce/NanoKVM_3.png)

The Lichee NanoKVM is an IP-KVM product based on the LicheeRV Nano, inheriting its compact size and powerful features.

NanoKVM includes an HDMI input interface that can be recognized as a monitor by a computer, capturing the computer's screen. It has a USB 2.0 interface to connect to the computer host, recognized as HID devices like keyboard, mouse, and touchpad, and uses extra storage space on the TF card, mounted as a USB flash drive. It comes with a 100 Mbps Ethernet port for video and control signal transmission. Additionally, the Full version features an ATX power control interface (USB-C form) for remote control and monitoring of the host's power status. Under the Full version's shell, there is an OLED display for showing the device's IP and KVM-related status.

To meet different user needs, NanoKVM is available in two versions:
- **NanoKVM Lite**: Basic version suitable for DIY enthusiasts and enterprises with bulk requirements.
- **NanoKVM Full**: Complete version with a sleek shell and full accessories, including a pre-installed system image card, recommended for individual users.

## Use Cases

![](./../../../assets/NanoKVM/introduce/web_ui.gif)

- **Server Management**: For real-time monitoring and control of servers.
- **Remote Desktop and Power Control**: Provides remote control functionality without requiring the host to be networked or run specific software.
- **Remote Installation**: Simulates a USB flash drive to mount installation images and set up the system, also allows BIOS access.
- **Remote Serial Port (Not exposed in Full beta version)**: Provides two serial ports for IPMI use or connecting other development boards for web-based serial terminal interaction. More features are coming soon (e.g., live streaming), stay tuned.

![](./../../../assets/NanoKVM/introduce/application.png)

## Specifications

| Product | NanoKVM (Lite) | NanoKVM (Full) | PiKVM V4 |
| --- | --- | --- | --- |
| Computing Unit | LicheeRV Nano (RISCV) | LicheeRV Nano (RISCV) | CM4 (ARM) |
| Resolution | 1080P @ 60fps | 1080P @ 60fps | 1080P @ 60fps |
| Video Encoding | MJPEG, H264 (WIP) | MJPEG, H264 (WIP) | MJPEG, H264 |
| Video Latency | 90-230ms | 90-230ms | 100-230ms |
| UEFI/BIOS ||||
| Emulated USB Keyboard/Mouse ||||
| Emulated USB Storage ||||
| IPMI ||||
| Wake-on-LAN ||||
| Tailscale ||||
| WebSSH ||||
| Custom Scripts ||| - |
| ATX Power Control | None, user-configurable | USB interface IO control board | RJ45 interface IO control board |
| OLED Display | None, user-expandable | 128x64 0.96" white | 128x32 0.91" white |
| Serial Terminal | 2 channels | 2 channels | - |
| TF Card | None, user-provided | Included, ready to use | Included |
| Expansion Accessories | None | WiFi or PoE | WiFi/LTE |
| Power Consumption | 0.2A@5V | 0.2A@5V | Peak 2.6A@5V |
| Power Input | Powered by PC USB | Powered by PC USB <br> Supports auxiliary power | Requires DC 5V 3A |
| Cooling | Silent, fanless | Silent, fanless | Requires active fan cooling |
| Dimensions | 23x37x15mm <br> ~1/30 PiKVM V4 size | 40x36x36mm <br> ~1/7 PiKVM V4 size | 120x68x44mm |

## NanoKVM Hardware and Software Resources

NanoKVM is built on the Sipeed [LicheeRV Nano](https://wiki.sipeed.com/hardware/zh/lichee/RV_Nano/1_intro.html) core board. You can find the hardware specifications, schematics, and dimensions here: [Click here](http://cn.dl.sipeed.com/shareURL/LICHEE/LicheeRV_Nano)

NanoKVM Lite consists of the LicheeRV Nano E and HDMItoCSI board, while NanoKVM Full adds the NanoKVM-A/B board and shell to the Lite version. The HDMItoCSI board converts HDMI signals; NanoKVM-A includes OLED, ATX control output (TypeC interface), auxiliary power (TypeC interface), and ATX power/reset buttons; NanoKVM-B connects the A board to the computer's ATX pins for remote power control.

> The NanoKVM image is built on the LicheeRV Nano SDK and MaixCDK, compatible with LicheeRV Nano resources. Other SG2002 products cannot use KVM software. Contact us for technical support if you want to develop HDMI input applications on NanoKVM.
+ [Schematics](https://cn.dl.sipeed.com/shareURL/KVM/nanoKVM/HDK/02_Schematic)
+ [3D Structure](https://cn.dl.sipeed.com/shareURL/KVM/nanoKVM/HDK/04_3D_file)
+ [NanoKVM Image Download](https://github.com/sipeed/NanoKVM/releases)

## Purchase Links

[Official Taobao Store](https://item.taobao.com/item.htm?id=811206560480)
[AliExpress Store]()
[Pre-sale Page](https://sipeed.com/nanokvm)

## Product Feedback

If you encounter any issues or have suggestions, please contact us through the following channels:

+ [Github Issues](https://github.com/sipeed/NanoKVM)
+ [MaixHub Forum](https://maixhub.com/discussion/nanokvm)
+ QQ Group: 703230713
122 changes: 122 additions & 0 deletions docs/hardware/en/kvm/NanoKVM/network/frp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
---
title: frp
keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
update:
- date: 2024-8-13
version: v0.1
author: xwj
content:
- Release docs
---

> Note: Exposing services directly to the public internet is very dangerous! It is recommended to use HTTPS.
To use frp, you need to create your own configuration file. You can refer to the [frp documentation](https://gofrp.org).

Here is an example to access an [internal web service via frp](https://gofrp.org/zh-cn/docs/examples/vhost-http/).

## Start the frps Service

First, you need a server with a public IP address and start the frps service on it. Let's assume the server IP address is `20.190.1.1`. Replace this IP with your own public IP.

1. Download and extract [frp](https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_riscv64.tar.gzf). After extracting, go to the folder:

```bash
wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_riscv64.tar.gz
tar -xzvf frp_0.59.0_linux_riscv64.tar.gz
cd frp_0.59.0_linux_riscv64
```

2. Create the configuration file `frps.yaml`:

```yaml
bindPort: 7000
vhostHTTPPort: 8080
```

3. Start the frps service:

```bash
./frps -c frps.yaml
```

## Start the frpc Service

1. SSH into the NanoKVM;
2. Run `frpc -v` to check the version. If there is no output, install frpc manually;
- Download and extract [frp](https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_riscv64.tar.gzf);
- Move the `frpc` file to the `/usr/bin/` directory.

3. Create the configuration file `/etc/kvm/frpc.yaml`:

```yaml
serverAddr: 20.190.1.1 # Your public IP
serverPort: 7000
proxies:
- name: nanokvm
type: http
localPort: 80
customDomains:
- 20.190.1.1
```

4. Start the frpc service:

```bash
frpc -c /etc/kvm/frpc.yaml
```

After both frps and frpc services are started, you can access the NanoKVM via the public internet by entering `20.190.1.1:8080` in your browser.

## Configure Domain

To configure a domain for NanoKVM, modify the `frpc.yaml` file:

```yaml
serverAddr: 20.190.1.1 # Your public IP
serverPort: 7000
proxies:
- name: nanokvm
type: http
localPort: 80
customDomains:
- www.yourdomain.com # Your domain
```

Then point the domain [`www.yourdomain.com`](http://www.yourdomain.com) to `20.190.1.1`.

You can now access NanoKVM by opening [`http://www.yourdomain.com:8080`](http://www.yourdomain.com:8080/) in your browser.

## Configure HTTPS

Refer to the frp documentation: [Enable HTTPS for local HTTP services](https://gofrp.org/zh-cn/docs/examples/https2http/).

1. Configure the `frps.yaml` file:

```yaml
bindPort: 7000
vhostHTTPSPort: 443
```

2. Configure the `frpc.yaml` file:

```yaml
serverAddr: 20.190.1.1 # Your public IP
serverPort: 7000
proxies:
- name: nanokvm
type: https
customDomains:
- yourdomain.com # Your domain
plugin:
type: https2http
localAddr: 127.0.0.1:80
crtPath: ./server.crt # Certificate path
keyPath: ./server.key # Private key path
hostHeaderRewrite: 127.0.0.1
requestHeaders:
set:
x-from-where: frp
```

3. Start both frps and frpc services, then access [`https://yourdomain.com`](https://yourdomain.com) in your browser.
37 changes: 37 additions & 0 deletions docs/hardware/en/kvm/NanoKVM/network/static_ip.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: Static IP
keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
update:
- date: 2024-8-13
version: v0.1
author: xwj
content:
- Release docs
---

By default, NanoKVM obtains its IP address via DHCP, which means the IP address may change.

If you want to always access NanoKVM using the same IP address, you can set a static IP.

## Setting a Static IP

Create a file `/boot/eth.nodhcp` in NanoKVM and edit it as follows:

- Each line represents a custom IP in the format `addr/netid gw[optional]`;
- You can preset multiple static IPs on multiple lines.

```bash
# Example
192.168.0.101/24 192.168.0.1 # addr/netid gw
192.168.3.116/22 # addr/netid
```

After editing and saving the file, run the command `/etc/init.d/S30eth restart` to apply the configuration.

**Note:** If all preset static IP addresses are detected by ARP as already in use, setting the static IP will fail. In this case, DHCP will be triggered to obtain an IP address. If this also fails, the IP will be forcibly set to `192.168.90.1/24`.

This ensures that NanoKVM always has a usable IP address, allowing network access to operate NanoKVM. If NanoKVM does not receive a valid IP address, you will need to manually modify the file on the TF card or reflash the image to use it normally.

## Canceling the Static IP

Delete the `/boot/eth.nodhcp` file to cancel the static IP setting. NanoKVM will then obtain its IP address via DHCP again.
51 changes: 51 additions & 0 deletions docs/hardware/en/kvm/NanoKVM/network/tailscale.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
title: Tailscale
keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
update:
- date: 2024-8-13
version: v0.1
author: xwj
content:
- Release docs
---

> **It is recommended to use NanoKVM with Tailscale for accessing remote hosts over the internet.**
*Note: Tailscale is not supported in v1.0.0 of the image. If your NanoKVM image version is v1.0.0, please [update the image](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/start/flashing.html) first.*

NanoKVM now comes with Tailscale built-in, and you can start using it with just a few simple steps. There are two methods for configuring Tailscale: via the browser and via the terminal. Browser configuration is recommended. However, if you need more customization, you can also configure it via the terminal.

## Configuring via Browser

1. Enter the IP address of NanoKVM in your browser and access it.
2. Click on Settings - Tailscale:

![ipconfig](../../../../assets/NanoKVM/tailscale/setting.png)

3. If prompted that Tailscale is not installed, click Install and wait for the installation to complete. If it shows as installed, proceed to the next step:

![ipconfig](../../../../assets/NanoKVM/tailscale/install.png)

4. Click Login and wait for Tailscale to start and generate a login link (this step only needs to be done once; Tailscale will start automatically on boot):

![ipconfig](../../../../assets/NanoKVM/tailscale/login.png)

5. Once the login link is generated, the browser will automatically open it. If it does not redirect automatically, manually visit the generated link. Log in to your Tailscale account and click `Connect` to add NanoKVM to your account.

![ipconfig](../../../../assets/NanoKVM/tailscale/connect.png)

6. You should now see NanoKVM under your Tailscale account. In a public network environment, run Tailscale and access NanoKVM using `100.79.236.88 (replace with your Tailscale IP)` in your browser:

![ipconfig](../../../../assets/NanoKVM/tailscale/machines.png)

## Configuring via Terminal

1. SSH into NanoKVM.
2. Execute `tailscale version` to check if Tailscale is already installed. If not, manually install it:
- Download [Tailscale](https://pkgs.tailscale.com/stable/tailscale_latest_riscv64.tgz) and extract it;
- Move the `tailscale` file to the `/usr/bin/` directory;
- Move the `tailscaled` file to the `/usr/sbin/` directory.
3. Execute `/etc/init.d/S98tailscaled restart` to start the Tailscale service.
4. Execute `tailscale login` and wait for the login link to be generated, then visit the generated link in your browser.
5. Click `Connect` in the browser to add NanoKVM to your Tailscale account.
6. You're all set! You can now access NanoKVM via Tailscale.
Loading

0 comments on commit 368b512

Please sign in to comment.