diff --git a/docs/hardware/assets/NanoKVM/unbox/new-ATX-B.png b/docs/hardware/assets/NanoKVM/unbox/new-ATX-B.png
index af0d8b0f..7c9c3976 100644
Binary files a/docs/hardware/assets/NanoKVM/unbox/new-ATX-B.png and b/docs/hardware/assets/NanoKVM/unbox/new-ATX-B.png differ
diff --git a/docs/hardware/en/cluster/NanoCluster/distcc.md b/docs/hardware/en/cluster/NanoCluster/distcc.md
new file mode 100644
index 00000000..70784eec
--- /dev/null
+++ b/docs/hardware/en/cluster/NanoCluster/distcc.md
@@ -0,0 +1,86 @@
+---
+title: distcc Deployment
+---
+
+## Introduction
+[distcc](https://github.com/distcc/distcc) is a distributed C/C++ compilation system that speeds up the compilation process by distributing compilation tasks across multiple machines. It allows you to leverage the computing power of multiple computers to compile code faster, making it especially useful for large codebases or resource-constrained environments.
+
+## Deployment Guide
+
+### Server
+For Debian-based systems, you can install distcc directly using the package manager:
+```bash
+sudo apt install distcc
+```
+
+Start the distcc service:
+```bash
+distccd --daemon --allow 192.168.0.0/24 # Allow specific IP range to access
+```
+
+### Client
+```bash
+sudo apt install distcc distcc-pump
+```
+
+Set up the DISTCC_HOSTS environment variable to specify the available worker nodes. You can add the following to your .bashrc
+```bash
+export DISTCC_POTENTIAL_HOSTS='localhost 192.168.0.240 192.168.0.243 192.168.0.245 192.168.0.246'
+```
+
+Then, you can try compiling a simple program to check if distcc is correctly distributing the compilation tasks:
+
+```bash
+distcc-pump distcc -o test test.c
+```
+
+```bash
+sipeed@lpi3h-a2d1:~/distcc$ distcc-pump distcc -o test test.c
+__________Using distcc-pump from /usr/bin
+__________Found 4 available distcc servers
+__________Shutting down distcc-pump include server
+```
+## Compilation Testing
+
+To test whether distcc effectively accelerates the compilation process, we used OpenSSL for the compilation test. OpenSSL is a widely-used C library with a large codebase, making it a good candidate to test the effectiveness of distributed compilation.
+
+```bash
+git clone https://github.com/openssl/openssl.git
+cd openssl
+./config
+distcc-pump make -j20 CC=distcc
+```
+
+You can use distccmon-text to check the current distribution of compilation tasks:
+
+```bash
+sipeed@lpi3h-2193:~$ distccmon-text
+ 67535 Compile cmp_ctx.c 192.168.0.240[0]
+ 67528 Compile cmp_asn.c 192.168.0.240[1]
+ 67635 Compile cms_dh.c 192.168.0.240[2]
+ 67569 Compile cmp_http.c 192.168.0.243[0]
+ 67696 Compile cms_io.c 192.168.0.245[0]
+ 67583 Compile cmp_server.c 192.168.0.245[1]
+ 67561 Compile cmp_hdr.c 192.168.0.245[2]
+ 67606 Compile cmp_vfy.c 192.168.0.245[3]
+ 67657 Compile cms_enc.c 192.168.0.246[1]
+ 67672 Compile cms_env.c 192.168.0.246[2]
+```
+
+### Compilation Performance Comparison
+In the testing process, we compiled the OpenSSL project using both single-machine compilation and distributed compilation (5 machines). Below are the results for each method:
+
+##### Single-Machine Compilation (without distcc)
+```bash
+real 18m11.760s
+user 64m37.024s
+sys 5m56.326s
+```
+##### Distributed Compilation (using distcc)
+```bash
+real 6m32.262s
+user 18m39.468s
+sys 4m30.008s
+```
+
+As seen, the compilation time using distcc for distributed compilation is significantly reduced, from 18 minutes to about 6 minutes. The acceleration effect of distributed compilation is evident, and it also helps alleviate the load on individual machines.
\ No newline at end of file
diff --git a/docs/hardware/en/cluster/NanoCluster/index.md b/docs/hardware/en/cluster/NanoCluster/index.md
new file mode 100644
index 00000000..7893b369
--- /dev/null
+++ b/docs/hardware/en/cluster/NanoCluster/index.md
@@ -0,0 +1,190 @@
+---
+title: Introduction
+---
+
+## Introduction
+
+NanoCluster is an ultra-miniature cluster board developed by Sipeed, featuring 7 SOM slots interconnected via a RISC-V-based Gigabit switch. It supports USB-C PD power supply and optional PoE expansion. Additionally, NanoCluster provides independent UART and power control, making it an ideal entry-level platform for HomeLab users exploring distributed computing, Kubernetes, Docker, and edge computing.
+
+NanoCluster is compatible with Sipeed's Longan Module 3H (4 × Cortex-A53), M4N (4 × Cortex-A55 + NPU), as well as the Raspberry Pi Compute Module 4 (4 × Cortex-A72) and Compute Module 5 (4× Cortex-A76). Users can freely choose compute modules based on performance needs and budget, or mix and match different architectures to build a highly customized and heterogeneous computing cluster.
+
+The NanoCluster adopts an open SOM interface standard, supporting both official core modules and custom adapter boards for third-party SOM solutions. This design greatly enhances the platform's flexibility.
+
+
+
+
+
+## Technical Specifications
+
+### Baseboard
+
+
+
+
+ | Hardware Specifications |
+
+
+
+
+ | SOM Slots |
+ 7× Dual M.2 M-Key vertical slots |
+
+
+ | Power Supply |
+ USB-C 20V PD (Max 60W), Optional 60W PoE module |
+
+
+ | Ethernet |
+ Integrated RISC-V Gigabit switch chip JL6108 for high-speed interconnection, supporting web-based management and SDK-based custom feature development |
+
+
+ | USB Ports |
+ USB-A Host (Top), USB-A OTG (Bottom), connected to Slot 1 |
+
+
+ | Display Interface |
+ HDMI, connected to Slot 1 |
+
+
+ | Cooling System |
+ Equipped with a 60mm 2-pin fan for efficient cooling |
+
+
+ | Status Indicators |
+ 7× SYS LED indicators for node status monitoring |
+
+
+ | Serial Communication |
+ 7× independent UARTs for easy debugging and control, optional quad-serial USB module available |
+
+
+ | Power Management |
+ Slot1 centrally manages other Slots and switch power through IO expansion chip |
+
+
+ | Power Consumption |
+ 3.6 W |
+
+
+ | Dimensions |
+ PCBA: 88x57mm, approximately 100x60x60mm with SOMs installed and fan mounted |
+
+
+
+
+
+
+### SOM
+
+
+
+ | SOM |
+ LM3H |
+ M4N |
+ CM4 |
+ CM5 |
+
+
+ | SoC |
+ H618 |
+ AX650N |
+ BCM2711 |
+ BCM2712 |
+
+
+ | Memory |
+ 2GB ~ 4GB |
+ 8GB |
+ 1GB ~ 8GB |
+ 1GB ~ 16GB |
+
+
+ | eMMC |
+ 32GB |
+ 32GB |
+ 0GB ~ 64GB |
+ 0GB ~ 64GB |
+
+
+ | CPU |
+ 4 × A53 1.5 GHz |
+ 8 × A55 1.6 GHz |
+ 4 × A72 1.5 GHz |
+ 4 × A76 2.4 GHz |
+
+
+ | GPU |
+ Mali-G31 |
+ - |
+ VideoCore VI |
+ VideoCore VII |
+
+
+ | NPU |
+ - |
+ 18TOPS INT8 |
+ - |
+ - |
+
+
+ | Network |
+ 100M |
+ 1G |
+ 1G |
+ 1G |
+
+
+ | Additional Interfaces |
+ None |
+ Download interface + M.2 SSD + USB 3.0 |
+ Download interface + M.2 SSD |
+ Download interface + M.2 SSD + USB 3.0 |
+
+
+ Power Idle / Full Load / Peak |
+ 1.2W/2.6W/3.7W |
+ 3W/8.3W/9W |
+ 3W/4.5W/4.6W |
+ 4W/7.6W/8W |
+
+
+
+
+
+## Interface Diagram
+
+
+
+## Hardware & Software Resources
+
+### Baseboard Hardware
+
+[Click to view](https://dl.sipeed.com/Cluster/NanoCluster)
+
+### Longan Module 3H Documentation
+
+Hardware documentation can be accessed here: [Click to view](https://dl.sipeed.com/shareURL/LONGAN/LonganPi3H). For system building and software development guides, please refer to: [Click here](https://wiki.sipeed.com/hardware/en/longan/h618/lpi3h/7_develop_mainline.html).
+
+### M4N Documentation
+
+[Hardware Documentation](https://dl.sipeed.com/shareURL/MaixIV/M4N-Dock)
+[Software Development Guide](https://dl.sipeed.com/shareURL/MaixIV/M4N-Dock)
+[Software Development SDK](https://github.com/AXERA-TECH/ax650n_bsp_sdk)
+
+### Raspberry Pi Compute Module 4
+
+[Click to view](https://www.raspberrypi.com/products/compute-module-4)
+
+### Raspberry Pi Compute Module 5
+
+[Click to view](https://www.raspberrypi.com/products/compute-module-5)
+
+## Purchase Information
+
+[Pre-order Portal](https://sipeed.com/nanocluster)
+
+## Feedback & Support
+
+If you have any questions or suggestions during use, please provide feedback through the following channels:
+
++ [Github issues](https://github.com/sipeed/NanoCluster)
\ No newline at end of file
diff --git a/docs/hardware/en/cluster/NanoCluster/k3s.md b/docs/hardware/en/cluster/NanoCluster/k3s.md
new file mode 100644
index 00000000..9e2e4853
--- /dev/null
+++ b/docs/hardware/en/cluster/NanoCluster/k3s.md
@@ -0,0 +1,116 @@
+---
+title: K3s Deployment
+---
+
+## Introduction
+[K3s](https://k3s.io/) is a lightweight version of Kubernetes. It is easy to install and requires only half the memory of Kubernetes, making it suitable for resource-constrained environments, especially for use cases like edge computing, IoT, and others.
+
+## Deployment Guide
+
+### Prepare the Environment
+First, ensure that the network of the cluster is working correctly and that it can access the internet. You can SSH into each machine in the cluster to execute the subsequent installation commands. Make sure that the IP addresses of the master node and worker nodes are fixed, and that they can access each other over the network.
+
+### Install K3s (Master Node)
+The installation of K3s is very simple. Just run the following command on the master node:
+``` bash
+curl -sfL https://get.k3s.io | sh -
+```
+If the download is slow, you can speed up the installation by using the following command:
+``` bash
+curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
+```
+This command will automatically download and install K3s. After the installation is complete, check if the K3s service is running with the following command:
+``` bash
+sudo systemctl status k3s
+```
+If it shows `active (running)`, K3s has started successfully.
+
+```bash
+sudo systemctl status k3s
+● k3s.service - Lightweight Kubernetes
+ Loaded: loaded (/etc/systemd/system/k3s.service; enabled; preset: enabled)
+ Active: active (running) since Mon 2025-02-17 12:07:15 CST; 3h 38min ago
+ Docs: https://k3s.io
+ Process: 8803 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service 2>/dev/null (code=exited, status=0/SUCCESS)
+ Process: 8805 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)
+ Process: 8808 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
+ Main PID: 8810 (k3s-server)
+ Tasks: 32
+ Memory: 583.2M
+ CPU: 29min 49.755s
+ CGroup: /system.slice/k3s.service
+ ├─8810 "/usr/local/bin/k3s server"
+ └─8895 "containerd "
+```
+
+### Install K3s (Worker Nodes)
+When installing K3s on the worker nodes, you need to connect them to the master node. Run the following command on the worker node to install K3s:
+``` bash
+curl -sfL https://get.k3s.io | K3S_URL=https://:6443 K3S_TOKEN= sh -
+```
+In the command above, replace `主节点IP` with the master node's IP address, and `MasterNodeIP` with the token obtained from the master node. You can retrieve the token by running the following command on the master node:
+```bash
+sudo cat /var/lib/rancher/k3s/server/node-token
+```
+After installation is complete, verify that the worker node has successfully joined the cluster by running:
+```bash
+sudo kubectl get nodes
+```
+If the worker node appears in the list with a status of `Ready`, it means the worker node has successfully joined the cluster.
+
+```bash
+sipeed@lpi3h-a2d1:~$ sudo kubectl get nodes
+NAME STATUS ROLES AGE VERSION
+lpi3h-1967 Ready 20h v1.31.5+k3s1
+lpi3h-231e Ready 20h v1.31.5+k3s1
+lpi3h-4782 Ready 56m v1.31.5+k3s1
+lpi3h-a2d1 Ready control-plane,master 23h v1.31.5+k3s1
+lpi3h-ba13 Ready 19h v1.31.5+k3s1
+lpi3h-c06b Ready 21h v1.31.5+k3s1
+```
+
+### Deploy an Application
+We will create a configuration file to run a K3s container.
+
+```bash
+nano hello-kubernetes.yaml
+```
+The file content is as follows:
+```yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: hello-kubernetes
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: hello-kubernetes
+ template:
+ metadata:
+ labels:
+ app: hello-kubernetes
+ spec:
+ containers:
+ - name: hello-kubernetes
+ image: paulbouwer/hello-kubernetes:1.10.1
+ env:
+ - name: MESSAGE
+ value: "Hello Kubernetes"
+```
+Then, use this configuration file to start a container:
+
+```bash
+sudo kubectl apply -f hello-kubernetes.yaml
+```
+Check the status of the pods:
+
+```bash
+sudo kubectl get pods -o wide
+NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
+hello-kubernetes-7fbb7f4899-zqs5x 1/1 Running 0 2m39s 10.42.0.114 arch
+```
+
+Finally, access the application via a browser at 10.42.0.114:8080
+
+
\ No newline at end of file
diff --git a/docs/hardware/en/cluster/NanoCluster/use.md b/docs/hardware/en/cluster/NanoCluster/use.md
new file mode 100644
index 00000000..2ee44da6
--- /dev/null
+++ b/docs/hardware/en/cluster/NanoCluster/use.md
@@ -0,0 +1,404 @@
+---
+title: Quick Start
+---
+
+## Hardware Installation
+
+### LM3H Installation
+
+First, attach the heatsink to the main control chip to improve heat dissipation. When installing the core board, ensure the correct orientation to avoid damaging the device.
+
+
+
+Align the notch on the gold fingers of the core board with the slot on the mainboard. Gently place it in position and press down evenly until you hear a "click" sound, confirming that the core board is securely inserted without tilting or loosening.
+
+
+
+To remove the core board, hold both sides of the board evenly with both hands and gently pull upward. Avoid applying excessive force to one side, as this may cause damage. If the core board is tightly fitted, slightly wiggle it left and right before pulling it out. Do not pull it out forcefully to prevent damage to the gold fingers or the mainboard slot.
+
+### CM4 and CM5 Installation
+
+- First, install the CM4 / CM5 module onto the adapter board
+
+
+
+- Then insert the adapter board into the mainboard slot
+
+
+
+>If you are using **CM5** and require **USB3.0**, make sure to leave one slot empty between modules to ensure proper USB 3.0 functionality.
+
+### M4N Installation
+
+- First, install the M4N core module onto the adapter board
+
+
+
+- Then insert the adapter board into the mainboard slot
+
+
+
+### Fan Installation
+
+Align the fan with the reserved mounting holes on the baseboard:
+
+
+
+Make sure the fan is facing the correct direction — the airflow should point toward the Ethernet port to better dissipate heat from the SOM:
+
+
+
+Secure the fan firmly to the baseboard using screws:
+
+
+
+Connect the fan's power cable to the fan power connector on the baseboard.
+Please ensure the correct plug orientation — the red wire should be connected to the positive terminal:
+
+
+
+## Power Supply
+
+NanoCluster supports both USB-C PD and PoE power input, with dual hot-plug capability — you can connect both PD and PoE at the same time, and the system will remain stable even if one source is disconnected. Either power source can be plugged or unplugged at any time.
+
+By default, the system supports 60W (20V/3A) PD input, and up to 65W (20V/3.25A) when using e-Marker USB-C cables. We recommend using the included PD adapter and high-quality USB-C cables to ensure stable power delivery. An optional 60W peak / 50W sustained PoE module is available for deployments where dedicated power access is limited.
+
+### Max Supported Configurations (Based on Power Budget):
+
+| Power Source | Max Supported SOMs |
+|--------------|-----------------------------------|
+| PD | 7× LM3H / CM4 / CM5 / M4N |
+| PoE | 7× LM3H / CM4; 6× CM5 / M4N |
+| SSD Installed| Up to 4× SOMs with SSDs (space-limited) |
+
+
+
+> **Note:** CM5 and M4N modules have higher power consumption. When using PoE, it is recommended to connect no more than 6 of these.
+
+---
+
+### PD Port Description
+
+The board supports USB-C PD power input, with a maximum of 65W. Please use the official adapter or a third-party adapter rated at 20V/3A or higher to ensure reliable operation under full load.
+
+
+
+---
+
+### PoE Module Installation
+
+NanoCluster supports an optional PoE module for power-over-Ethernet deployment, helping simplify wiring. Please follow the diagrams below for proper installation:
+
+
+
+Align the PoE module with the mainboard socket and insert carefully. Ensure a firm and secure connection.
+
+
+
+> Use a PoE switch or adapter compliant with standard protocols to ensure safety and stability.
+
+## Flashing the Image
+
+##### The core board comes with a pre-installed system. If you need to reflash the system, follow the steps below:
+
+### LM3H Flashing
+
+Download the required firmware image and prepare a computer that supports USB OTG along with a USB cable. The NanoCluster currently uses images compatible with the Longan Pi 3H, which can be downloaded here: [Click to Download](https://wiki.sipeed.com/hardware/en/longan/h618/lpi3h/3_images.html).
+
+Insert the core board into the Slot1 position, then use a USB cable to connect the mainboard's OTG interface (the lower port) to the computer. Press and hold the BOOT button, then power on or reset the device to enter UMS flashing mode.
+
+
+
+Once the firmware image is ready, open balenaEtcher, select the image file to be flashed, and ensure the core board is recognized as a USB drive. In balenaEtcher, choose the target device, click the "Flash" button to start the flashing process, and wait for it to complete. Safely eject the device, disconnect the USB cable, and restart the device to boot into the new system.
+
+
+
+### CM4/CM5 Flashing
+
+1. Install the `rpiboot` tool following the [official documentation](https://www.raspberrypi.com/documentation/computers/compute-module.html#set-up-the-host-device).
+
+2. Press and hold the BOOT button on the adapter board, then connect the USB OTG port to your host computer.
+
+3. Once the host detects a **BCM2711 (BCM2712) Boot** device, run `rpiboot`. After a few seconds, a USB drive will automatically appear.
+
+4. Open the [Raspberry Pi Imager](https://www.raspberrypi.com/software/), select the desired image, and flash it to the detected device.
+
+### M4N Flashing
+
+You can refer to the [System Flashing Guide](https://wiki.sipeed.com/hardware/zh/maixIV/m4ndock/system-update.html) for the flashing process.
+
+## Remote Management
+
+The mainboard is equipped with an Ethernet port for connecting to a switch. Devices within the cluster are interconnected through the switch and can be controlled and managed via their IP addresses.
+
+**How to obtain the device's IP address (using the LM3H module as an example)**:
+
+First, connect the Ethernet cable to the mainboard's port, then power on the device. The pre-installed firmware has mDNS service enabled. On your PC, enable the Avahi service and use mDNS to scan the entire network to retrieve the mDNS domain name information of the lpi3h device.
+
+```bash
+avahi-browse -art | grep lpi3h
+```
+
+Then use the following command:
+
+```bash
+ssh sipeed@lpi3h-xxxx.local
+```
+
+to connect (replace `xxxx` with the hostname obtained using the `avahi-browse` command).
+
+> lpi3h is the default mDNS hostname prefix for LM3H. If you are using CM4 or CM5, please adjust the hostname according to the system image you have flashed.
+
+## Serial Connection
+
+Each SOM exposes the system serial port to a 2.54mm header, which can be connected for debugging using a serial-to-USB module.
+
+If you need to debug or control multiple slots simultaneously, we recommend using the USB to four serial ports expansion board we provide. This expansion board consolidates the serial signals from slot3, slot5, slot6, and slot7 into the USB interface of slot1, making it easier to manage and operate centrally.
+
+
+
+## Power Control
+
+The reset pins for slots 1~7 are controlled by slot 1 through **I2C extended IO**, enabling remote power on/off functionality.
+
+**LM3H Control Method Example:**
+
+```bash
+# Reset the switch chip (GPIO 0)
+sudo gpioset gpiochip2 0=0 && sudo gpioset gpiochip2 0=1
+
+# Reset slot2 (LM3H)
+# Hold for 8 seconds to power off
+sudo gpioset gpiochip2 2=0 && sleep 8 && sudo gpioset gpiochip2 2=1
+
+# Quick trigger to power on
+sudo gpioset gpiochip2 2=0 && sleep 1 && sudo gpioset gpiochip2 2=1
+
+# Reset slot2 (CM4/CM5)
+sudo gpioset gpiochip2 2=0 && sudo gpioset gpiochip2 2=1
+```
+
+> `gpiochip2` refers to the GPIO controller index. `x=0` sets the IO with index `x` to low level, while `x=1` sets it to high level.
+
+| GPIO Index | Function |
+|------------|-------------------|
+| 0 | Switch chip reset |
+| 1~7 | slot1~slot7 reset |
+
+**CM4/CM5 Control Method Example:**
+
+todo。
+
+## Fan Speed Adjustment
+
+LM3H / CM4 / CM5 all support fan speed control. By default, LM3H automatically adjusts fan speed based on CPU temperature, while the official images of CM4 and CM5 run the fan at full speed. Below are the control methods for each platform.
+
+If you want to manually control the fan, you can connect to the slot1 device via SSH and execute the following commands:
+
+### LM3H Fan Control
+
+``` bash
+echo disabled | sudo tee /sys/class/thermal/thermal_zone2/mode
+
+echo 4 | sudo tee /sys/class/thermal/cooling_device0/cur_state
+```
+
+The value of `cur_state` ranges from 0 to 4, representing different fan speeds.
+
+To restore automatic control, use the following command:
+
+``` bash
+echo enabled | sudo tee /sys/class/thermal/thermal_zone2/mode
+```
+
+### CM4 Fan Control
+
+Add the following line to /boot/config.txt:
+
+```bash
+dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
+```
+
+After rebooting, execute:
+
+``` bash
+sudo pigpiod
+```
+
+Control the fan using Python:
+
+```python
+import pigpio
+
+pi = pigpio.pi()
+
+# Set PWM frequency and range
+pi.set_PWM_frequency(13, 50)
+pi.set_PWM_range(13, 200)
+
+# Set fan speed
+pi.set_PWM_dutycycle(13, 0) # Off
+pi.set_PWM_dutycycle(13, 200) # Full speed
+```
+
+### CM5 Fan Control
+
+Control the fan using Python:
+```python
+import RPi.GPIO as GPIO
+
+GPIO.setmode(GPIO.BCM)
+GPIO.setup(13, GPIO.OUT)
+
+pwm = GPIO.PWM(13, 50) # 50Hz frequency
+pwm.start(0) # Off
+pwm.start(100) # Full speed
+```
+
+## Switch Management
+
+### Introduction
+
+NanoCluster is equipped with the JL6108 Gigabit switch chip, which is based on the **RISC-V** architecture. It can be used as a plug-and-play switch or as a locally managed Layer 2 switch, supporting configuration via a web interface. Its main features include:
+
+- **System Management**: Displays system information, supports reboot, factory reset, and firmware upgrades
+- **Network Configuration**: Supports static IP and DHCP dynamic IP configuration
+- **Port Management**: Enables/disables ports, configures link speed, and manages flow control
+- **Port Aggregation**: Supports port binding to increase bandwidth utilization
+- **Security and Isolation**: Port isolation to prevent data leakage
+- **Traffic Monitoring**: Port MIB statistics and traffic analysis
+- **Loop Protection**: Prevents network loops to enhance stability
+- **VLAN Configuration**: Supports MTU VLAN, port-based VLAN, 802.1Q VLAN, and PVID settings
+- **QoS Configuration**: Manages traffic priority based on port, PCP, and DSCP
+- **Bandwidth and Storm Control**: Supports port-based bandwidth limitation and broadcast storm suppression
+
+### User Guide
+
+#### Logging into the Web Management Interface
+
+1. **Ensure Device Connection**
+ Make sure the NanoCluster is powered on and connected to the management host via an Ethernet cable.
+
+2. **Configure IP Address**
+ The switch's default IP address is **10.10.11.10/24**. Ensure the management host has an IP in the same subnet, e.g., **10.10.11.x** (where x is between 1-254 but not 10), with a subnet mask of **255.255.255.0**.
+
+ 
+
+3. **Access the Management Interface**
+ Open a browser and enter `http://10.10.11.10`, then press Enter to reach the login page.
+
+ 
+
+4. **Login to the Management System**
+ Enter the **admin username and password** (both default to `admin`), then click **Login** to access the main interface.
+
+ 
+
+### Basic Configuration
+
+#### Port Management
+The JL6108 switch provides port status management, supporting **port enable/disable**, **speed configuration**, and **flow control**.
+- **Enable/Disable Ports**: Navigate to the **Port Management** page, select the desired port, and enable or disable it.
+- **Modify Port Speed**: Supports 10Mbps / 100Mbps / 1000Mbps modes.
+- **Flow Control**: Can be enabled to prevent packet loss.
+
+
+
+#### VLAN Configuration
+VLAN (Virtual Local Area Network) is used to segment different network areas, prevent broadcast storms, and enhance security.
+
+##### Configuring Port VLAN
+
+1. **Access the Port VLAN Page**
+ Navigate to `VLAN` >> `Port VLAN` in the Web interface.
+
+2. **Enable Port VLAN**
+ Check the **"Enable Port VLAN"** option and click **`Apply`**.
+
+3. **Create VLAN 2 and Assign Ports**
+ - Enter **`2`** in the **VLAN ID** field
+ - Select **Ports 2 to 4**
+ - Click **`Apply`** to save the configuration
+
+4. **View the Port Member Table**
+ After configuration, **Ports 2-4 will be automatically removed from VLAN 1** and assigned to VLAN 2.
+
+ 
+
+#### QoS Configuration (Traffic Prioritization)
+QoS ensures stable performance for high-priority traffic such as video conferencing and VoIP:
+1. **Navigate to "QoS Settings"**
+2. Select **Port-Based / 802.1P / DSCP** QoS strategy
+3. Set **High / Medium / Low Priority Queues**
+4. **Save the settings** to apply the QoS rules
+
+
+
+### Additional Configuration
+
+The JL6108 switch also supports more advanced features. For detailed configuration instructions, please refer to the official manual.
+
+[Click here to view the full manual](https://dl.sipeed.com/shareURL/Cluster/NanoCluster/06_Switch_JL6108)
+
+We provide the **JL6108 SDK** based on the **RISC-V** architecture. Users can download the SDK and develop independently from the following link:
+
+[JL6108 SDK](https://dl.sipeed.com/shareURL/Cluster/NanoCluster/06_Switch_JL6108)
+
+## FAQ (Troubleshooting)
+
+### Device Won't Power On / Can't Boot into System
+Ensure you are using a power adapter that supports at least PD 20V output. Avoid using USB power from a host device, as this may prevent the device from starting properly. Check if the green indicator light near the power input interface is lit. If there is no response, the issue may lie with the power adapter or power cable. Observe the blue power indicator lights corresponding to each slot to determine if the system has started normally.
+
+If **LM3H** fails to boot into the system, press and hold the BOOT button while powering on or resetting the device to check if it enters UMS mode. Confirm whether the device is recognized as a USB drive in disk management. If the system is damaged or cannot boot, you can reflash the [firmware image](https://wiki.sipeed.com/hardware/en/NanoCluster/use.html#Flashing-the-Image). If UMS mode cannot be entered, try the [emergency flashing](https://wiki.sipeed.com/hardware/en/cluster/NanoCluster/use.html#Emergency-Flashing-(LM3H)) method.
+
+If **CM4/CM5** fails to start normally, you can re-flash the system image following the instructions in the [firmware image](https://wiki.sipeed.com/hardware/en/cluster/NanoCluster/use.html#Flashing-the-Image) section and test again.
+
+### Network Connection Issues (Unable to Obtain IP)
+If the system boots successfully but there are network connection issues or the device cannot obtain an IP address, ensure the Ethernet cable is connected before powering on the device. Switches detect network interfaces when the device powers on. Plugging in the Ethernet cable after powering on may cause the interface to fail to recognize the connection.
+
+### Emergency Flashing (LM3H)
+
+If U-Boot is corrupted and the device cannot enter UMS mode, you can manually recover it using FEL mode. Use the `sunxi-fel` or `xfel` tools to load U-Boot into memory and start UMS mode, then proceed with flashing.
+
+#### Entering FEL Mode
+
+Short the specified pin on slot1 to GND, then power on the device to enter FEL mode (future versions may add button control).
+
+
+
+#### Using sunxi-fel
+
+Install and compile:
+```bash
+git clone https://github.com/linux-sunxi/sunxi-tools.git
+cd sunxi-tools
+make tools
+sudo make install
+```
+
+Flash U-Boot:
+```bash
+sudo sunxi-fel uboot /path/u-boot-sunxi-with-spl.bin
+```
+
+After completing the process, the device should enter UMS mode successfully, allowing you to proceed with flashing the system image.
+
+#### Using xfel
+
+Install and compile:
+```bash
+sudo apt install libusb-1.0-0-dev
+git clone https://github.com/xboot/xfel.git
+cd xfel
+make
+sudo make install
+```
+
+Flash U-Boot:
+```bash
+xfel ddr lpddr4
+xfel write 0x4a000000 /path/u-boot-dtb.bin
+xfel exec 0x4a000000
+```
+
+After completing the process, the device should enter UMS mode successfully, allowing you to flash the system image.
diff --git a/docs/hardware/en/kvm/NanoKVM/development.md b/docs/hardware/en/kvm/NanoKVM/development.md
new file mode 100644
index 00000000..5d4bcc09
--- /dev/null
+++ b/docs/hardware/en/kvm/NanoKVM/development.md
@@ -0,0 +1,251 @@
+---
+title: Development
+keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
+update:
+ - date: 2024-9-26
+ version: v0.1
+ author: BuGu
+ content:
+ - Release docs
+ - date: 2025-4-10
+ version: v1.0
+ author: BuGu
+ content:
+ - Update docs
+---
+
+In addition to implementing KVM functionality, NanoKVM has opened up some data for secondary development by users. This document describes the purpose of this data and the considerations for development.
+
+## Obtaining Streaming Related Data
+
+Streaming and image parameters are located in the `/kvmapp/kvm` folder.
+
+### HDMI Obtained Image Native Resolution
+
+- **Image Width**: `/kvmapp/kvm/width`
+- **Image Height**: `/kvmapp/kvm/height`
+
+Example: Check the current resolution in the terminal
+
+```bash
+echo "$(cat /kvmapp/kvm/width) * $(cat /kvmapp/kvm/height)"
+```
+
+> Note: width/height is read-only and cannot be written to. `kvm_stream` dynamically modifies vi parameters based on this data; manual modification will cause the vi subsystem to misinterpret the correct image. When either or both parameters are 0, it indicates the HDMI cable has been unplugged or the HDMI resolution is switching.
+
+### Stream Transmission Resolution
+
+- **Transmission Resolution**: `/kvmapp/kvm/res`
+ - 0: Automatic, follows HDMI native resolution
+ - 480: Transmit at 640x480
+ - 600: Transmit at 800x600
+ - 720: Transmit at 1280x720
+ - 1080: Transmit at 1920x1080
+
+> Note: This parameter is readable and writable.
+
+Example: Set `kvm_stream` to transmit at 1280x720 resolution in the terminal
+
+```bash
+echo 720 > /kvmapp/kvm/res
+```
+
+### Stream Maximum Transmission Frame Rate
+
+- **Maximum Transmission Frame Rate**: `/kvmapp/kvm/fps`
+- **Range**: 0-60
+
+Example: Limit `kvm_stream` to a maximum of 45 fps in the terminal
+
+```bash
+echo 45 > /kvmapp/kvm/fps
+```
+
+### Stream Current Transmission Frame Rate
+
+- **Current Transmission Frame Rate**: `/kvmapp/kvm/now_fps`
+
+Example: View current stream frame rate
+
+```bash
+cat /kvmapp/kvm/now_fps
+```
+
+### Check Hardware Version
+
+NanoKVM has different versions, and there are hardware differences between versions. Please refer to the [schematic diagram]. The boot script will detect hardware differences and save them in `/etc/kvm/hw`.
+
+- alpha: Early access version NanoKVM Full
+- beta: Official version NanoKVM Full and Lite
+- pcie: NanoKVM PCIe
+
+### Network Related Configuration
+
+- `/etc/kvm/server.yaml`
+- For details, refer to WiKi -> KVM -> NanoKVM Cube -> Network
+
+### USB Status Retrieval
+
+```bash
+cat /sys/class/udc/4340000.usb/state
+```
+
+- configured: Connected
+- not attached: Not connected
+
+### HDMI Status Retrieval
+
+```bash
+cat /kvmapp/kvm/state
+```
+
+- 1: HDMI Normal
+- 0: HDMI Abnormal
+
+### ETH Status Retrieval
+
+```bash
+cat /sys/class/net/eth0/carrier
+```
+
+- 1: Ethernet Cable Connected
+- 0: Ethernet Cable Disconnected (inaccurate)
+
+### WiFi Presence
+
+The file `/etc/kvm/wifi_exist` indicates the presence of the WiFi module.
+
+### WiFi Status Retrieval
+
+```bash
+cat /kvmapp/kvm/wifi_state
+```
+
+- 0: WiFi exists but not connected
+- 1: WiFi connected
+
+### Enable Watchdog (Real-time)
+
+```bash
+touch /etc/kvm/watchdog # Enable
+rm /etc/kvm/watchdog # Disable
+```
+
+### Disable Ping Function
+
+```bash
+touch /etc/kvm/stop_ping # Disable
+rm /etc/kvm/stop_ping # Enable
+```
+
+## USB HID Simulation Devices
+
+- **Initialization**: NanoKVM uses USB Gadget to simulate USB HID devices, initializing keyboard, mouse, and touchscreen in the device boot script `/etc/init.d/S03usbdev`.
+
+### Simulated Keyboard
+
+- **Device**: `/dev/hidg0`
+- **Message**: 8 bytes
+
+```plaintext
+| 0x00 | 0x00 | 0xXX | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
+```
+
+- The fourth byte represents the ordinary key value, e.g., F11: 0x44.
+- After sending the key value, it must be released promptly.
+
+Example: Pressing the F11 key
+
+```bash
+echo -ne \\x00\\x00\\x44\\x00\\x00\\x00\\x00\\x00 > /dev/hidg0 # Press F11 key
+echo -ne \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 > /dev/hidg0 # Release
+```
+
+### Simulated Mouse
+
+- **Device**: `/dev/hidg1`
+- **Message**: 4 bytes
+
+```plaintext
+| b8 Button | s8 X-axis Relative Movement | s8 Y-axis Relative Movement | s8 Wheel |
+```
+
+#### Buttons
+
+- Left button down: 0x01
+- Right button down: 0x12 (compatible with multiple systems)
+- Release: 0x00
+
+Example: Clicking the left button
+
+```bash
+echo -ne \\x01\\x00\\x00\\x00 > /dev/hidg1 # Press left button
+echo -ne \\x00\\x00\\x00\\x00 > /dev/hidg1 # Release
+```
+
+#### Movement (Relative Movement)
+
+- X/Y axis relative movement is signed, where positive x moves right and positive y moves down.
+
+Example: Move right by 5 units, up by 1 unit
+
+```bash
+echo -ne \\x00\\x05\\xff\\x00 > /dev/hidg1
+```
+
+#### Wheel
+
+- The wheel is signed, where positive values move down.
+
+Example: Move down by 1 unit
+
+```bash
+echo -ne \\x00\\x00\\x00\\x01 > /dev/hidg1
+```
+
+### Simulated Touchscreen
+
+- **Device**: `/dev/hidg2`
+- **Message**: 6 bytes
+
+```plaintext
+| Button | X-axis Absolute Position Low 8 bits | X-axis Absolute Position High 8 bits | Y-axis Absolute Position Low 8 bits | Y-axis Absolute Position High 8 bits | Wheel |
+```
+
+#### Buttons
+
+- Left button down: 0x01
+- Right button down: 0x10
+- Release: 0x00
+
+Example: Clicking the left button
+
+```bash
+echo -ne \\x01\\x00\\x00\\x00\\x00\\x00 > /dev/hidg2 # Press left button
+echo -ne \\x00\\x00\\x00\\x00\\x00\\x00 > /dev/hidg2 # Release
+```
+
+#### Movement (Absolute Position)
+
+- X/Y are unsigned numbers, with (0x0001, 0x0001) representing the top left corner and (0x7fff, 0x7fff) representing the bottom right corner.
+
+Example: Move the mouse to the center of the screen
+
+```bash
+echo -ne \\x00\\xff\\x3f\\xff\\x3f\\x00 > /dev/hidg2
+```
+
+#### Wheel
+
+- The wheel is signed, where positive values move down.
+
+Example: Move down by 1 unit
+
+```bash
+echo -ne \\x00\\x00\\x00\\x00\\x00\\x01 > /dev/hidg2
+```
+
+## Precautions
+
+- Users should not place their own built programs in the `/kvmapp` directory, as any updates will reset all contents within the folder.
+- Simulated keyboard and mouse operations may conflict with operations on the front-end page.
\ No newline at end of file
diff --git a/docs/hardware/en/kvm/NanoKVM/faq.md b/docs/hardware/en/kvm/NanoKVM/faq.md
index 419d89c4..5994c772 100644
--- a/docs/hardware/en/kvm/NanoKVM/faq.md
+++ b/docs/hardware/en/kvm/NanoKVM/faq.md
@@ -18,6 +18,20 @@ keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
2. If the application version is greater than 2.1.5 and you forget the password, you can press the `BOOT` button on the device for more than 10 seconds (the BOOT button for the NanoKVM-Cube is located next to the USB-HID interface, while the PCIe version can be found on the panel. Older versions of the NanoKVM Full may not have a hole in the corresponding location and require disassembly).
3. If holding down the button does not reset the password, it may be because the application version is less than 2.1.5. Please refer to [here](https://wiki.sipeed.com/hardware/en/kvm/NanoKVM/system/flashing.html) to reflash the image. Note that reflashing the image will erase all configuration information.
+### HID Keyboard and Mouse Not Working
+1. Use the "Reset HID" feature in the web interface.
+2. Some host systems have high requirements for USB keyboards and mice, needing to use "HID Only" mode. In this mode, USB only simulates keyboard and mouse devices. Please switch to this mode using the mouse icon in the web interface.
+3. Some motherboard systems require HID keyboard and mouse devices to have a BIOS identifier. NanoKVM can create a BIOS in `/boot` to enable this feature. Execute `touch /boot/BIOS && restart`.
+4. Check if the USB connection is stable. You can see if the HID icon on the OLED is lit, or use `cat /sys/class/udc/4340000.usb/state` in the web terminal. If it shows "not connected," then the USB cable may be faulty. Please replace the USB cable and try again.
+
+### BIOS Does Not Recognize HID Keyboard and Mouse
+1. Some host systems have high requirements for USB keyboards and mice, needing to use "HID Only" mode. In this mode, USB only simulates keyboard and mouse devices that support BIOS. Please switch to this mode using the mouse icon in the web interface.
+2. Use the "Reset HID" feature in the web interface.
+
+### Incorrect Key Mapping for Non-English Keyboards
++ The keyboard layout needs to be modified in the controlled host system settings. For example, to modify a French keyboard in Ubuntu:
+ Settings -> Keyboard -> Input Sources -> ‘+’ -> Add -> Search "French," then add.
+
### STA LED Not Flashing Normally
The STA LED indicates the operating status of the NanoKVM. When functioning properly, the STA LED should flash irregularly. If the STA LED is continuously on or off, or exhibits regular intermittent extinguishing, the NanoKVM may be malfunctioning.
@@ -40,19 +54,19 @@ The STA LED indicates the operating status of the NanoKVM. When functioning prop
> If the IP exists only when powered by the power bank, but disappears after connecting HDMI/computer USB, this indicates the issue. Please contact customer service to purchase an isolator to resolve it.
### No Display After Logging into the Browser Interface
-
-1. The controlled host may be in sleep mode; try pressing any key on the keyboard to wake it up.
-2. For PCIe versions, try clicking the reset HDMI option under the `Video` icon.
-3. For Cube versions, after opening the webpage, try unplugging and replugging the HDMI cable.
-4. Check the resolution on the OLED or enter `echo "$(cat /kvmapp/kvm/width) * $(cat /kvmapp/kvm/height)"` in the web terminal to compare it with the resolution of the controlled host. If they differ, you can manually set the resolution using `echo xxx > /kvmapp/kvm/width && echo xxx > /kvmapp/kvm/height`.
- > If the host system is Windows, the resolution in the display settings may not match the actual resolution. Check under Advanced -> Active Signal Resolution.
-5. The early beta version of Full NanoKVM uses a standard ribbon cable to connect the HDMI capture board, which may not detect the HDMI signal due to poor contact. Please reconnect the ribbon cable as shown in the image below, or contact customer service to purchase a dedicated ribbon cable.
- 
-6. Try restarting to resolve the issue: execute `reboot` in the web terminal.
-7. If the above methods do not identify the issue, execute `cat /proc/cvitek/vi_dbg` in the web terminal.
-> If `VIDevFPS` is 0, it indicates that the NanoKVM cannot obtain HDMI input. Check the following issues: whether the host is outputting video signals, whether the HDMI cable is damaged, and whether the Cube is an early version with poor contact.
-> If `VIDevFPS` is non-zero and `VIFPS` is 0, it indicates that the NanoKVM is not correctly configured for HDMI parameters. The Cube can reconnect HDMI to automatically obtain settings, while PCIe can click `Reset HDMI` under the `Video` option to automatically retrieve settings.
-> Check if `VIInImgWidth` and `VIInImgHeight` match the actual HDMI resolution. If they differ, it indicates that the NanoKVM did not automatically obtain the correct HDMI parameters; please manually configure the resolution parameters as mentioned in point 4.
+1. The controlled host may be in sleep mode. Try pressing any key on the keyboard to wake it up.
+2. Non-Chrome browsers may experience issues with H264 not displaying, while MJPEG mode works normally. Please try again using Chrome.
+3. For the PCIe version, try clicking the reset HDMI option under the "Video" icon.
+4. For the Cube version, you can try unplugging and replugging the HDMI cable after opening the webpage.
+5. Check the resolution on the OLED or enter `echo "$(cat /kvmapp/kvm/width) * $(cat /kvmapp/kvm/height)"` in the web terminal, and compare it with the resolution of the controlled host. If they differ, you can manually set the resolution using `echo xxx > /kvmapp/kvm/width && echo xxx > /kvmapp/kvm/height`.
+ > If the host system is Windows, the resolution shown in display settings may not match the actual resolution. Check in Advanced -> Active Signal Resolution.
+6. The early test version of Full NanoKVM uses standard cables to connect to the HDMI capture board, which may not detect the HDMI signal due to poor connections. You can reconnect the cable as shown in the image below or contact customer service to purchase dedicated cables.
+ [](./../../../assets/NanoKVM/guide/Old_fix.png)
+7. Try restarting to resolve the issue: execute `reboot` in the web terminal.
+8. If the above methods do not identify the problem, execute `cat /proc/cvitek/vi_dbg` in the web terminal.
+ > If `VIDevFPS` is 0, it means NanoKVM cannot get HDMI input. Check the following issues: Is the host outputting a video signal? Is the HDMI cable damaged? Is the Cube an early version with possible connection issues?
+ > If `VIDevFPS` is not 0 and `VIFPS` is 0, it indicates that NanoKVM is not correctly configured for HDMI parameters. The Cube can replug the HDMI to auto-detect, while PCIe can click `Reset HDMI` under `Video` to auto-detect.
+ > Check if `VIInImgWidth` and `VIInImgHeight` match the actual HDMI resolution. If they are different, it means NanoKVM did not auto-detect the correct HDMI parameters. Manually configure the resolution parameters as described in point 4.
### OLED Displaying Information Normally, But Unable to Open Webpage
@@ -66,16 +80,6 @@ The NanoKVM Full and PCIe versions come with an OLED to display information such
2. If the STA LED is flashing abnormally, first check whether the system is booting normally, and follow the steps outlined in “STA LED Not Flashing Normally” to troubleshoot.
3. Try a forced update or reflash the system.
-### HID Keyboard and Mouse Not Working
-
-1. Use the "Reset HID" function in the web interface.
-2. Check if the USB port is securely connected; you can check if the HID icon on the OLED is lit, or use `cat /sys/class/udc/4340000.usb/state` in the web terminal. If it shows not connected, it indicates a poor connection of the USB cable. Please replace the USB cable and try again.
-
-### BIOS Not Recognizing HID Keyboard and Mouse
-
-1. Some motherboard BIOS require HID keyboard and mouse devices to have a BIOS identifier. The NanoKVM can create a BIOS under /boot to enable this feature by executing `touch /boot/BIOS && restart`.
-2. Use the "Reset HID" function in the web interface.
-
### About Memory
1. The total memory (RAM) space of NanoKVM is 256MB, with a dedicated ion memory area used for video image processing. The memory viewed in user space will be less than 256MB.
@@ -100,7 +104,26 @@ The NanoKVM Full and PCIe versions come with an OLED to display information such
3. Manually force the update using the method outlined above.
4. Reflash the system.
-### If the above methods do not resolve the issue, please explain the model you purchased and the encountered problems on the forum, GitHub, or QQ group, and we will patiently assist you.
+### If the Above Methods Do Not Resolve the Issue, Please Describe Your Model and Problems Encountered in the Forum, GitHub, or QQ Group. We Will Respond Patiently.
++ When providing feedback, please specify the version of your NanoKVM, the environment in which you are using it (motherboard model, system name, etc.), and the system configuration (e.g., image version 1.4.0; application version 2.2.5; H264; 1080P; high quality; frame rate 30). This information will help us reproduce and resolve the issue.
++ If there is a problem with no image display, please execute the following commands during the anomaly and paste the output logs into the issue:
+ ```shell
+ cat /etc/kvm/hw
+ cat /etc/kvm/hdmi_version
+ cat /etc/kvm/hdmi_mode
+ ```
++ Some issues require collecting runtime application logs. Please follow these steps:
+ ```shell
+ # Enable SSH functionality in the web interface (Settings -> Devices -> SSH)
+ # Log in to SSH using the password set in the web interface. If no password is set, the default password is root.
+ ssh root@xxx.xxx.xxx.xxx
+ # Change the log level: /etc/kvm/server.yaml -> logger -> level: info to debug
+ vi /etc/kvm/server.yaml
+ # Use ‘i’ to edit; use ‘Esc’ + :wq to exit
+ # Restart the KVM service
+ /etc/init.d/S95nanokvm restart
+ # Copy the log
+ ```
## Feedback Methods
diff --git a/docs/hardware/en/kvm/NanoKVM/introduction.md b/docs/hardware/en/kvm/NanoKVM/introduction.md
index 9a29d1fc..9198d34d 100644
--- a/docs/hardware/en/kvm/NanoKVM/introduction.md
+++ b/docs/hardware/en/kvm/NanoKVM/introduction.md
@@ -18,7 +18,7 @@ update:

-The Lichee NanoKVM is an IP-KVM product based on the LicheeRV Nano, inheriting its compact size and powerful features.
+The 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 Micro SD 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.
@@ -70,7 +70,9 @@ NanoKVM is built on the Sipeed [LicheeRV Nano](https://wiki.sipeed.com/hardware/
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.
+The NanoKVM Cube/PCIe software is now fully open source: [KVM application open source location](https://github.com/sipeed/NanoKVM), [image open source location](https://github.com/sipeed/LicheeRV-Nano-Build/tree/NanoKVM).
+
+> The NanoKVM image is built on the LicheeRV Nano SDK and MaixCDK, and it is compatible with materials that use the LicheeRV Nano. Conversely, the KVM software cannot be used with the LicheeRV Nano or other SG2002 products. If you would like to build HDMI input-related applications on the NanoKVM, please contact us for technical support.
+ [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)
diff --git a/docs/hardware/en/kvm/NanoKVM/quick_start.md b/docs/hardware/en/kvm/NanoKVM/quick_start.md
index 8c3c3bb5..947ae5b6 100644
--- a/docs/hardware/en/kvm/NanoKVM/quick_start.md
+++ b/docs/hardware/en/kvm/NanoKVM/quick_start.md
@@ -92,6 +92,8 @@ For detailed instructions, please refer to [Flashing Image](https://wiki.sipeed.
New applications often bring more features or fix important bugs. It is recommended to update NanoKVM applications to the latest version. For detailed instructions, please refer to [Updating Application](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html).
+The update records for version 2.1.1 and subsequent versions can be found here: [Application Update Log](https://github.com/sipeed/NanoKVM/blob/main/CHANGELOG.md).
+
## Basic Operations
### How to Obtain an IP Address
@@ -102,13 +104,17 @@ The Full version of NanoKVM has an OLED display that shows the IP address on the
Lite version users, please refer to [Obtaining IP](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html#%E8%8E%B7%E5%8F%96-IP).
+**Note:** In version 1.4.0, SSH is disabled by default. Lite users should log in to the web interface using the RNDIS IP (10.xxx.xxx.1), where you can view the IP in the settings.
+
### Viewing Remote Desktop
Open a browser and enter the obtained IP address to access the login page. The default username and password are admin/admin. After logging in, it is recommended to **check for updates** (Settings -> Check for Updates). Detailed steps can be found in [Updating Application](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html).
For Lite version users, or Full version users who re-flashed the card and see no remote screen on the login page, please upgrade the application and refresh the webpage to start using.
-Note: It is recommended to use Chrome browser, as other browsers may experience compatibility issues such as inability to display images or operate keyboard and mouse.
+**Note:** In some versions, there may be issues accessing the web interface or crashes after login. Please disconnect the HDMI interface, power cycle the device, update to the latest application, and then reconnect the HDMI.
+
+**Note:** It is recommended to use Chrome browser, as other browsers may experience compatibility issues such as inability to display images or operate keyboard and mouse.

@@ -118,6 +124,8 @@ Note: It is recommended to use Chrome browser, as other browsers may experience

+**Note:** After changing the password in the web interface, the SSH login password will be synchronized. For example, if you change the web password to `123456`, you can log in using `ssh root@192.168.xxx.xxx` with `123456` as the password.
+
### ATX Power Control
The Full version package includes NanoKVM-A/B boards for controlling and viewing the host's power status.
diff --git a/docs/hardware/en/kvm/NanoKVM/system/flashing.md b/docs/hardware/en/kvm/NanoKVM/system/flashing.md
index 80796a7c..9bd27ed2 100644
--- a/docs/hardware/en/kvm/NanoKVM/system/flashing.md
+++ b/docs/hardware/en/kvm/NanoKVM/system/flashing.md
@@ -18,7 +18,7 @@ update:
- The Full version comes with a 32G SD card. You will need to remove it by opening the case.
- The Lite version requires you to prepare an SD card of at least 8G.
-1. Go to [Github](https://github.com/sipeed/NanoKVM/releases) to download the latest version image.
+1. Go to [Github](https://github.com/sipeed/NanoKVM/releases/latest) to download the latest version image.
1. Install the flashing software. We recommend using [Etcher](https://etcher.balena.io).
@@ -66,4 +66,4 @@ Please ensure that the TF card already has the system installed and **the system
- Then, disconnect the USB-C cable, power the device back on, and wait for the system to boot. The first boot may take a little longer, so it's recommended to wait for about 1 minute (until something appears on the screen). Do not power off during boot, as doing so may corrupt system files being processed (the solution for such corruption is to re-flash the image).
-> If you cannot enter USB upgrade mode, the system files may be corrupted. In this case, use a card reader to flash the TF card.
\ No newline at end of file
+> If you cannot enter USB upgrade mode, the system files may be corrupted. In this case, use a card reader to flash the TF card.
diff --git a/docs/hardware/en/kvm/NanoKVM/user_guide.md b/docs/hardware/en/kvm/NanoKVM/user_guide.md
index 5472860d..2d56ead6 100644
--- a/docs/hardware/en/kvm/NanoKVM/user_guide.md
+++ b/docs/hardware/en/kvm/NanoKVM/user_guide.md
@@ -128,12 +128,26 @@ Note:
### About SSH
-+ After updating to version 2.1.5, SSH support can be permanently disabled or temporarily enabled as follows:
++ In version 2.1.6 and later, SSH can be enabled or permanently disabled from the web interface under Settings -> Devices -> SSH.
-1. **Permanently Disable**: Execute `touch /etc/kvm/ssh_stop` to disable SSH login on the next boot of the NanoKVM. To remove this restriction, delete the file with `rm /etc/kvm/ssh_stop`.
-2. **Temporarily Enable**: Execute `touch /boot/start_ssh_once` or create an empty file named start_ssh_once in the /boot partition to enable SSH on the next boot of the NanoKVM. This file will be automatically deleted afterward.
++ In version 1.4.0, SSH is disabled by default.
-### More Features Coming Soon
+1. **Permanently Disable:** Execute `touch /etc/kvm/ssh_stop` to disable SSH login on the next boot. To enable it again, remove the file using `rm /etc/kvm/ssh_stop`.
+2. **Temporarily Enable:** Execute `touch /boot/start_ssh_once` or create an empty file named `start_ssh_once` in the /boot partition. This will enable SSH on the next boot, and the file will be automatically deleted.
+
+### About mDNS
+
++ mDNS (Multicast DNS) is a protocol used for name resolution within a local network, allowing devices to discover and communicate with each other using hostnames instead of IP addresses. It enables automatic discovery of services and devices on the network without a central DNS server.
+
++ NanoKVM generates mDNS hostnames based on the device code to minimize conflicts when multiple devices are present.
+
++ mDNS services can lead to higher CPU usage in complex network environments, affecting image smoothness. It is recommended to disable it when not in use: Settings -> Devices -> mDNS.
+
+### About the Watchdog
+
++ The watchdog system was added in version 2.2.2 to continuously monitor the server service. If the service encounters an exception, the system will restart. By default, it is disabled. You can enable it by executing `touch /etc/kvm/watchdog` in the web terminal and disable it with `rm /etc/kvm/watchdog`.
+
+### More Features Coming Soon!
## Network Latency Estimation
diff --git a/docs/hardware/en/kvm/NanoKVM_PCIe/introduction.md b/docs/hardware/en/kvm/NanoKVM_PCIe/introduction.md
index eeedfb13..f9395dea 100644
--- a/docs/hardware/en/kvm/NanoKVM_PCIe/introduction.md
+++ b/docs/hardware/en/kvm/NanoKVM_PCIe/introduction.md
@@ -64,6 +64,8 @@ To meet diverse user needs, the NanoKVM-PCIe offers two optional modules for WiF
NanoKVM uses the same SOC as Sipeed [LicheeRV Nano](https://wiki.sipeed.com/hardware/zh/lichee/RV_Nano/1_intro.html). For those interested in secondary development, you can find more information [here](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/development.html).
+The NanoKVM Cube/PCIe software is now fully open source: [KVM Application Open Source Location](https://github.com/sipeed/NanoKVM), [Image Open Source Location](https://github.com/sipeed/LicheeRV-Nano-Build/tree/NanoKVM).
+
> The NanoKVM image is built on the LicheeRV Nano SDK and MaixCDK, allowing compatibility with LicheeRV Nano resources. Conversely, the LicheeRV Nano or other SG2002 products cannot utilize KVM software. If you wish to develop HDMI input-related applications on NanoKVM, please contact us for technical support.
NanoKVM-Cube and NanoKVM-PCIe share the same image and applications, automatically adapting to different hardware versions.
diff --git a/docs/hardware/en/kvm/NanoKVM_PCIe/quick_start.md b/docs/hardware/en/kvm/NanoKVM_PCIe/quick_start.md
index 2c8cb18d..d7d5dab0 100644
--- a/docs/hardware/en/kvm/NanoKVM_PCIe/quick_start.md
+++ b/docs/hardware/en/kvm/NanoKVM_PCIe/quick_start.md
@@ -100,6 +100,8 @@ Note: Some early users of the NanoKVM-PCIe with a full-height PCIe bracket may e
New applications often bring more features or fix important bugs. It is recommended to update NanoKVM applications to the latest version. For detailed instructions, please refer to [Updating Application](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html).
+The update records for version 2.1.1 and subsequent versions can be found here: [Application Update Log](https://github.com/sipeed/NanoKVM/blob/main/CHANGELOG.md).
+
## Basic Operations
### How to Obtain an IP Address
@@ -118,6 +120,8 @@ Enter the obtained IP directly in your browser to access the login page. The def
**Note:** It is recommended to use the Chrome browser, as other browsers may experience compatibility issues such as inability to display the screen or operate the keyboard and mouse.
+**Note:** In some versions, there may be issues accessing the web interface or crashes after login. Please disconnect the HDMI interface, power cycle the device, update to the latest application, and then reconnect the HDMI.
+
### ATX Power Control
If the power control interface is connected, you can remotely control the computer's power on from the web page.
diff --git a/docs/hardware/en/kvm/NanoKVM_PCIe/user_guide.md b/docs/hardware/en/kvm/NanoKVM_PCIe/user_guide.md
index b900d407..ea1edb4a 100644
--- a/docs/hardware/en/kvm/NanoKVM_PCIe/user_guide.md
+++ b/docs/hardware/en/kvm/NanoKVM_PCIe/user_guide.md
@@ -127,10 +127,26 @@ Note: The NCM connection method was added after version 2.1.5, but the default r
### About SSH
-+ After updating to version 2.1.5, SSH support can be permanently disabled or temporarily enabled as follows:
++ In version 2.1.6 and later, SSH can be enabled or permanently disabled through the web interface. You can do this in **Settings -> Devices -> SSH**.
-1. **Permanently Disable**: Execute `touch /etc/kvm/ssh_stop` to disable SSH login on the next boot of the NanoKVM. To remove this restriction, delete the file with `rm /etc/kvm/ssh_stop`.
-2. **Temporarily Enable**: Execute `touch /boot/start_ssh_once` or create an empty file named start_ssh_once in the /boot partition to enable SSH on the next boot of the NanoKVM. This file will be automatically deleted afterward.
++ In version 1.4.0 and later, SSH is disabled by default.
+
+1. **Permanently Disable:** Execute `touch /etc/kvm/ssh_stop` to disable SSH login on the next boot of NanoKVM. To enable it again, delete the file using `rm /etc/kvm/ssh_stop`.
+2. **Temporarily Enable:** Execute `touch /boot/start_ssh_once` or create an empty file named `start_ssh_once` in the /boot partition. This will enable SSH on the next boot of NanoKVM, and the file will be automatically deleted.
+
+### About mDNS
+
++ mDNS (Multicast DNS) is a protocol used for name resolution within a local network, allowing devices to discover and communicate with each other using hostnames instead of IP addresses, without needing a central DNS server.
+
++ NanoKVM generates mDNS hostnames based on the device code to minimize conflicts when multiple devices are present.
+
++ mDNS services can lead to higher CPU usage in complex network environments, affecting image smoothness. It is recommended to disable it when not in use: **Settings -> Devices -> mDNS**.
+
+### About the Watchdog
+
++ The watchdog system was added in version 2.2.2 to continuously monitor the server service. If the service encounters an exception, the system will restart. By default, it is disabled. You can enable it by executing `touch /etc/kvm/watchdog` in the web terminal and disable it with `rm /etc/kvm/watchdog`.
+
+### More Features Coming Soon!
## Hardware and Structure
diff --git a/docs/hardware/en/kvm/NanoKVM_USB/faq.md b/docs/hardware/en/kvm/NanoKVM_USB/faq.md
index 90b128f6..57bb6bf1 100644
--- a/docs/hardware/en/kvm/NanoKVM_USB/faq.md
+++ b/docs/hardware/en/kvm/NanoKVM_USB/faq.md
@@ -28,7 +28,14 @@ keywords: NanoKVM-USB, Lichee, PiKVM, RISCV, tool
+ The beta version hardware only supports USB power from the HOST side. Please ensure proper power supply from the HOST side during use.
-### If the above methods do not resolve the issue, please describe your purchased model and the encountered problem on the forum, GitHub, or QQ group, and we will respond patiently.
+### Loop Out Display
+
++ The NanoKVM-USB uses its own EDID (Extended Display Identification Data) before connecting to the loop-out display. After connecting to the loop-out display, it switches to the EDID of the loop-out display.
++ Since the EDID contains information about the display manufacturer and color settings, the resolution list in the Target system settings may appear different before and after connecting the loop-out display. Additionally, the color of the video captured via USB may vary before and after the connection.
+
+### Other
+
++ If the above methods do not resolve the issue, please describe your purchased model and the encountered problem on the forum, GitHub, or QQ group, and we will respond patiently.
## Known Issues
diff --git a/docs/hardware/en/lichee/th1520/lpi4a/6_peripheral.md b/docs/hardware/en/lichee/th1520/lpi4a/6_peripheral.md
index bd8321d9..58e0f0da 100644
--- a/docs/hardware/en/lichee/th1520/lpi4a/6_peripheral.md
+++ b/docs/hardware/en/lichee/th1520/lpi4a/6_peripheral.md
@@ -65,13 +65,23 @@ If it boots successfully, then you can check the following values to confirm tha
## PWM
-Take PWM1 which is connected to the cooling fan as an example, you can enable the fan with the following code:
+Take PWM1 which is connected to the cooling fan as an example, you can get the fan speed with the following code:
```bash
-echo 1 > /sys/class/pwm/pwmchip0/export
-echo 1000000 > /sys/class/pwm/pwmchip0/pwm1/period
-echo 1000000 > /sys/class/pwm/pwmchip0/pwm1/duty_cycle
-echo 1 > /sys/class/pwm/pwmchip0/pwm1/enable
+cat /sys/class/hwmon/hwmon0/pwm1
+```
+
+The PWM speed value ranges from 0 to 255, where a higher value represents a higher fan speed. You can write ```0``` to the PWM enable control to disable automatic speed regulation, and manually set the fan speed (e.g., 255):
+
+```
+echo 0 > /sys/class/hwmon/hwmon0/pwm1_enable
+echo 0 > /sys/class/hwmon/hwmon0/pwm1
+```
+
+Or you can enable automatic speed regulation with the following code:
+
+```bash
+echo 1 > /sys/class/hwmon/hwmon0/pwm1_enable
```
## GPIO
@@ -1155,4 +1165,4 @@ At this point, the HHB environment is preliminarily built. You can try the follo
For further infomation please check [hhb-tools doc](https://www.yuque.com/za4k4z).
## Other
-Contributions are welcome~ You can get ¥5~150 ($1~20) coupon if your contribution is accepted!
\ No newline at end of file
+Contributions are welcome~ You can get ¥5~150 ($1~20) coupon if your contribution is accepted!
diff --git a/docs/hardware/en/maixcam/README.md b/docs/hardware/en/maixcam/README.md
index 5abacfff..7f12ec2c 100644
--- a/docs/hardware/en/maixcam/README.md
+++ b/docs/hardware/en/maixcam/README.md
@@ -78,8 +78,8 @@ MaixCAM offers more than just hardware. It comes with a complete software ecosys
* [Schematic](https://dl.sipeed.com/shareURL/LICHEE/LicheeRV_Nano/02_Schematic)
* [Camera and Lens Documentation](https://dl.sipeed.com/shareURL/MaixCAM/MaixCAM/Camera)
* [Core Board Hardware Documentation](https://dl.sipeed.com/shareURL/LICHEE/LicheeRV_Nano)
-* [MaixCAM Case Models](https://makerworld.com/zh/models/440321)
-* [MaixCAM Stand Models](https://makerworld.com/zh/models/463622#profileId-372189)
+* [MaixCAM Case Model](https://makerworld.com.cn/zh/models/467141)
+* [MaixCAM Stand Model](https://makerworld.com.cn/zh/models/467152)
### Chip Documentation
diff --git a/docs/hardware/en/maixcam/assemble.md b/docs/hardware/en/maixcam/assemble.md
index 09975db6..c9d0cfb9 100644
--- a/docs/hardware/en/maixcam/assemble.md
+++ b/docs/hardware/en/maixcam/assemble.md
@@ -12,10 +12,11 @@ When you receive your MaixCAM, there are several accessories to **pay attention
## Open Source Model Files
-* [MaixCAM Case Model](https://makerworld.com/zh/models/440321) (Recommended to use resin with a temperature resistance of 70°C for UV curing printing)
-* [MaixCAM Stand Model](https://makerworld.com/zh/models/463622#profileId-372189)
-* [MaixCAM-Pro Case Model](https://makerworld.com/zh/models/722034)
-* For more, visit [makerworld.com](https://makerworld.com/) (recommended) or [makerworld.com.cn](https://makerworld.com.cn) and search for `MaixCAM`
+* [MaixCAM Case Model](https://makerworld.com.cn/zh/models/467141) (Recommended to use resin with a temperature resistance of 70°C for UV curing printing)
+* [MaixCAM Stand Model](https://makerworld.com.cn/zh/models/467152)
+* [MaixCAM-Pro Case Model](https://makerworld.com.cn/zh/models/575886)
+* 6 x M2*5 self-tapping screws
+* 1 x H1.5 Allen wrench
## MaixCAM
diff --git a/docs/hardware/en/sidebar.yaml b/docs/hardware/en/sidebar.yaml
index 360a22ed..b4b94fd3 100644
--- a/docs/hardware/en/sidebar.yaml
+++ b/docs/hardware/en/sidebar.yaml
@@ -454,6 +454,8 @@ items:
file: kvm/NanoKVM/system/configuration.md
- label: FAQ
file: kvm/NanoKVM/faq.md
+ - label: Development
+ file: kvm/NanoKVM/development.md
- label: NanoKVM PCIe
items:
- label: Introduction
@@ -482,6 +484,8 @@ items:
file: kvm/NanoKVM/system/configuration.md
- label: FAQ
file: kvm/NanoKVM/faq.md
+ - label: Development
+ file: kvm/NanoKVM/development.md
- label: NanoKVM USB
items:
- label: Introduction
@@ -492,6 +496,20 @@ items:
file: kvm/NanoKVM_USB/development.md
- label: FAQ
file: kvm/NanoKVM_USB/faq.md
+- label: Cluster
+ items:
+ - label: NanoCluster
+ items:
+ - label: Introduction
+ file: cluster/NanoCluster/index.md
+ - label: Quick Start
+ file: cluster/NanoCluster/use.md
+ - label: Application Development
+ items:
+ - label: k3s Deployment
+ file: cluster/NanoCluster/k3s.md
+ - label: distcc Deployment
+ file: cluster/NanoCluster/distcc.md
# - label: Maix Audio
# items:
# - label: MA USB 16
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/bare_board.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/bare_board.jpeg
new file mode 100644
index 00000000..f7370bf9
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/bare_board.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/board_io.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/board_io.jpeg
new file mode 100644
index 00000000..8f9ae878
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/board_io.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/cm4_mount1.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/cm4_mount1.jpeg
new file mode 100644
index 00000000..0d786ea9
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/cm4_mount1.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/cm4_mount2.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/cm4_mount2.jpeg
new file mode 100644
index 00000000..ada3cded
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/cm4_mount2.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/fan1.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/fan1.jpeg
new file mode 100644
index 00000000..4a5484d8
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/fan1.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/fan2.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/fan2.jpeg
new file mode 100644
index 00000000..795f3e49
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/fan2.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/fan3.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/fan3.jpeg
new file mode 100644
index 00000000..d15ccf33
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/fan3.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/fan4.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/fan4.jpeg
new file mode 100644
index 00000000..35e4a9e2
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/fan4.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/fel.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/fel.jpeg
new file mode 100644
index 00000000..e0be7fab
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/fel.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/flash_lm3h_1.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/flash_lm3h_1.jpeg
new file mode 100644
index 00000000..3b18b454
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/flash_lm3h_1.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/flash_lm3h_2.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/flash_lm3h_2.jpeg
new file mode 100644
index 00000000..1feaf127
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/flash_lm3h_2.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/hello_k3s.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/hello_k3s.jpeg
new file mode 100644
index 00000000..d849ed2b
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/hello_k3s.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/homepage.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/homepage.jpeg
new file mode 100644
index 00000000..8fc6893d
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/homepage.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/ip.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/ip.jpeg
new file mode 100644
index 00000000..16b5c4b1
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/ip.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/login.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/login.jpeg
new file mode 100644
index 00000000..4f9dc29b
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/login.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/m4n_mount1.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/m4n_mount1.jpeg
new file mode 100644
index 00000000..a3e1c4da
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/m4n_mount1.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/m4n_mount2.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/m4n_mount2.jpeg
new file mode 100644
index 00000000..4a84e8e8
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/m4n_mount2.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/mount1.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/mount1.jpeg
new file mode 100644
index 00000000..c44291a9
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/mount1.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/mount2.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/mount2.jpeg
new file mode 100644
index 00000000..acb3ca23
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/mount2.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/pd_power.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/pd_power.jpeg
new file mode 100644
index 00000000..05481aad
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/pd_power.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/poe1.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/poe1.jpeg
new file mode 100644
index 00000000..d895196d
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/poe1.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/poe2.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/poe2.jpeg
new file mode 100644
index 00000000..67cedc13
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/poe2.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/portsetting.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/portsetting.jpeg
new file mode 100644
index 00000000..5b2953b0
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/portsetting.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/product.png b/docs/hardware/zh/cluster/NanoCluster/assets/product.png
new file mode 100644
index 00000000..ac897a86
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/product.png differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/qos.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/qos.jpeg
new file mode 100644
index 00000000..612f3f4e
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/qos.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/som.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/som.jpeg
new file mode 100644
index 00000000..d388fbe4
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/som.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/uart.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/uart.jpeg
new file mode 100644
index 00000000..4e7fb096
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/uart.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/assets/vlan.jpeg b/docs/hardware/zh/cluster/NanoCluster/assets/vlan.jpeg
new file mode 100644
index 00000000..31686449
Binary files /dev/null and b/docs/hardware/zh/cluster/NanoCluster/assets/vlan.jpeg differ
diff --git a/docs/hardware/zh/cluster/NanoCluster/distcc.md b/docs/hardware/zh/cluster/NanoCluster/distcc.md
new file mode 100644
index 00000000..e76cc0a5
--- /dev/null
+++ b/docs/hardware/zh/cluster/NanoCluster/distcc.md
@@ -0,0 +1,86 @@
+---
+title: distcc 部署
+---
+
+## 简介
+[distcc](https://github.com/distcc/distcc) 是一个分布式 C/C++ 编译系统,它通过将编译任务分发到多台机器上来加速编译过程。它允许你利用多台计算机的计算能力,更快速地编译代码,特别适用于大型代码库或资源受限的设备环境。
+
+## 部署教程
+
+### 服务端
+对于 Debian 系统,可以直接使用包管理器安装 distcc
+```bash
+sudo apt install distcc
+```
+
+开启 distcc 服务
+```bash
+distccd --daemon --allow 192.168.0.0/24 # 允许特定 IP 范围的机器访问
+```
+
+### 客户端
+```bash
+sudo apt install distcc distcc-pump
+```
+
+配置 DISTCC_HOSTS 环境变量,指定可用的工作节点。可以在 .bashrc 中添加以下内容:
+```bash
+export DISTCC_POTENTIAL_HOSTS='localhost 192.168.0.240 192.168.0.243 192.168.0.245 192.168.0.246'
+```
+
+然后,可以尝试编译一个简单的程序,检查 distcc 是否正常分发编译任务:
+
+```bash
+distcc-pump distcc -o test test.c
+```
+
+```bash
+sipeed@lpi3h-a2d1:~/distcc$ distcc-pump distcc -o test test.c
+__________Using distcc-pump from /usr/bin
+__________Found 4 available distcc servers
+__________Shutting down distcc-pump include server
+```
+## 编译测试
+
+为了测试 distcc 是否能够有效地加速编译过程,我们使用 OpenSSL 来进行编译测试。OpenSSL 是一个广泛使用的 C 库,包含大量源代码,适合用来测试分布式编译的效果。
+
+```bash
+git clone https://github.com/openssl/openssl.git
+cd openssl
+./config
+distcc-pump make -j20 CC=distcc
+```
+
+可以使用 distccmon-text 查看当前编译任务的分发情况
+
+```bash
+sipeed@lpi3h-2193:~$ distccmon-text
+ 67535 Compile cmp_ctx.c 192.168.0.240[0]
+ 67528 Compile cmp_asn.c 192.168.0.240[1]
+ 67635 Compile cms_dh.c 192.168.0.240[2]
+ 67569 Compile cmp_http.c 192.168.0.243[0]
+ 67696 Compile cms_io.c 192.168.0.245[0]
+ 67583 Compile cmp_server.c 192.168.0.245[1]
+ 67561 Compile cmp_hdr.c 192.168.0.245[2]
+ 67606 Compile cmp_vfy.c 192.168.0.245[3]
+ 67657 Compile cms_enc.c 192.168.0.246[1]
+ 67672 Compile cms_env.c 192.168.0.246[2]
+```
+
+### 编译性能对比
+在测试过程中,我们对 OpenSSL 项目分别使用了单机编译和分布式编译(5台机器),下面是两种方式的编译结果:
+
+##### 单机编译(不使用 distcc)
+```bash
+real 18m11.760s
+user 64m37.024s
+sys 5m56.326s
+```
+##### 分布式编译(使用 distcc)
+```bash
+real 6m32.262s
+user 18m39.468s
+sys 4m30.008s
+```
+
+可以看到,使用 distcc 进行分布式编译后,编译时间显著缩短,从 18 分钟降至约 6 分钟。可见分布式编译的加速效果明显,同时也可以有效地减轻单个机器的负载。
\ No newline at end of file
diff --git a/docs/hardware/zh/cluster/NanoCluster/index.md b/docs/hardware/zh/cluster/NanoCluster/index.md
new file mode 100644
index 00000000..00773d7a
--- /dev/null
+++ b/docs/hardware/zh/cluster/NanoCluster/index.md
@@ -0,0 +1,190 @@
+---
+title: 简介
+---
+
+## 简介
+
+NanoCluster 是矽速科技开发的超迷你集群板,板载 7 个 SOM 插槽,采用基于 RISC-V 架构的千兆交换机互联,支持 USB-C PD 供电,并可扩展 PoE 供电。同时,NanoCluster 提供独立的 UART 和电源控制,使其成为 HomeLab 用户入门分布式计算、Kubernetes 和 Docker 实践,以及边缘计算的理想选择。
+
+NanoCluster 兼容矽速科技的 Longan Module 3H(4 × Cortex-A53)、M4N(4 × Cortex-A55 + NPU),以及树莓派的 Compute Module 4(4 × Cortex-A72) 和 Compute Module 5(4× Cortex-A76)。用户可以根据性能需求和预算自由选择核心板,也可以混合搭配不同架构的核心板,构建一个高度定制化的计算集群。
+
+NanoCluster 采用开放的 SOM 接口标准,不仅支持官方核心板,也允许用户自行设计转接板,以适配自定义核心板或其他第三方 SOM 方案,极大提升了平台的灵活性。
+
+
+
+
+
+## 技术规格
+
+### 底板
+
+
+
+
+ | 硬件参数 |
+
+
+
+
+ | SOM 插槽 |
+ 7× 双 M.2 M-Key 立式插槽 |
+
+
+ | 供电 |
+ USB-C 20V PD 供电,最大 60W,可选配 60W PoE 模块供电 |
+
+
+ | 以太网 |
+ 板载 RISC-V 千兆交换芯片 JL6108 高速互联,支持 Web 页面管理和 SDK 自定义功能开发 |
+
+
+ | USB 接口 |
+ USB-A Host(上),USB-A OTG(下),与 Slot 1 连接 |
+
+
+ | 显示接口 |
+ HDMI 接口,与 Slot 1 连接 |
+
+
+ | 散热系统 |
+ 配备 60mm 2Pin 风扇,高效散热 |
+
+
+ | 状态指示 |
+ 7× SYS LED 指示灯,用于各个计算节点状态监测 |
+
+
+ | 串口通信 |
+ 7× 独立 UART,便于调试与控制,可选配四串口 USB 模块 |
+
+
+ | 电源管理 |
+ Slot1 通过 IO 扩展芯片集中管理其他 Slot 及交换机电源 |
+
+
+ | 功耗 |
+ 3.6 W |
+
+
+ | 尺寸 |
+ PCBA:88x57mm,插满 SOM 并安装风扇后约 100x60x60mm |
+
+
+
+
+
+
+### SOM
+
+
+
+ | SOM |
+ LM3H |
+ M4N |
+ CM4 |
+ CM5 |
+
+
+ | 主控芯片 |
+ H618 |
+ AX650N |
+ BCM2711 |
+ BCM2712 |
+
+
+ | 内存 |
+ 2GB ~ 4GB |
+ 8GB |
+ 1GB ~ 8GB |
+ 1GB ~ 16GB |
+
+
+ | eMMC |
+ 32GB |
+ 32GB |
+ 0GB ~ 64GB |
+ 0GB ~ 64GB |
+
+
+ | CPU |
+ 4 × A53 1.5 GHz |
+ 8 × A55 1.6 GHz |
+ 4 × A72 1.5 GHz |
+ 4 × A76 2.4 GHz |
+
+
+ | GPU |
+ Mali-G31 |
+ - |
+ VideoCore VI |
+ VideoCore VII |
+
+
+ | NPU |
+ - |
+ 18TOPS INT8 |
+ - |
+ - |
+
+
+ | 网络连接 |
+ 百兆 |
+ 千兆 |
+ 千兆 |
+ 千兆 |
+
+
+ | 其它接口 |
+ None |
+ 下载接口 + M.2 SSD + USB 3.0 |
+ 下载接口 + M.2 SSD |
+ 下载接口 + M.2 SSD + USB 3.0 |
+
+
+ 功耗 空载 / 满载 / 峰值 |
+ 1.2W/2.6W/3.7W |
+ 3W/8.3W/9W |
+ 3W/4.5W/4.6W |
+ 4W/7.6W/8W |
+
+
+
+
+
+## 接口图示
+
+
+
+## 软硬件资料
+
+### 底板硬件资料
+
+[点击查看](https://dl.sipeed.com/Cluster/NanoCluster)
+
+### Longan Module 3H 资料
+
+硬件资料可在此获取:[点击查看](https://dl.sipeed.com/shareURL/LONGAN/LonganPi3H)。系统构建与软件开发指南请参考:[点击这里](https://wiki.sipeed.com/hardware/zh/longan/h618/lpi3h/7_develop_mainline.html)。
+
+### M4N 资料
+
++ [硬件相关资料](https://dl.sipeed.com/shareURL/MaixIV/M4N-Dock)
++ [软件开发文档](https://dl.sipeed.com/shareURL/MaixIV/M4N-Dock)
++ [软件开发SDK](https://github.com/AXERA-TECH/ax650n_bsp_sdk)
+
+### Raspberry Pi Compute Module 4
+
+[点击查看](https://www.raspberrypi.com/products/compute-module-4)
+
+### Raspberry Pi Compute Module 5
+
+[点击查看](https://www.raspberrypi.com/products/compute-module-5)
+
+## 购买入口
+
+[预售入口](https://sipeed.com/nanocluster)
+
+## 产品反馈
+
+如果您在使用过程中有任何问题或建议,请通过以下渠道和我们反馈:
+
++ [Github issues](https://github.com/sipeed/NanoCluster)
\ No newline at end of file
diff --git a/docs/hardware/zh/cluster/NanoCluster/k3s.md b/docs/hardware/zh/cluster/NanoCluster/k3s.md
new file mode 100644
index 00000000..2edeed84
--- /dev/null
+++ b/docs/hardware/zh/cluster/NanoCluster/k3s.md
@@ -0,0 +1,116 @@
+---
+title: K3s 部署
+---
+
+## 简介
+[K3s](https://k3s.io/) 是轻量级的 Kubernetes。它易于安装,仅需要 Kubernetes 内存的一半,适用于资源有限的环境,特别是边缘计算、物联网等应用场景。
+
+## 部署教程
+
+### 准备环境
+首先,确保集群的网络正常,并且能够访问互联网。你可以使用 SSH 远程登录到集群中的每台机器,执行后续安装命令。确保主节点和工作节点的 IP 地址固定,并且网络间能够互相访问。
+
+### 安装 K3s(主节点)
+K3s 的安装非常简单。你只需在主节点上运行以下命令:
+``` bash
+curl -sfL https://get.k3s.io | sh -
+```
+如果下载很慢可以使用以下命令加速安装
+``` bash
+curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
+```
+该命令会自动下载并安装 K3s。安装过程完成后,通过以下命令检查 K3s 服务是否启动:
+``` bash
+sudo systemctl status k3s
+```
+如果显示 `active (running)`,表示 K3s 已成功启动。
+
+```bash
+sudo systemctl status k3s
+● k3s.service - Lightweight Kubernetes
+ Loaded: loaded (/etc/systemd/system/k3s.service; enabled; preset: enabled)
+ Active: active (running) since Mon 2025-02-17 12:07:15 CST; 3h 38min ago
+ Docs: https://k3s.io
+ Process: 8803 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service 2>/dev/null (code=exited, status=0/SUCCESS)
+ Process: 8805 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)
+ Process: 8808 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
+ Main PID: 8810 (k3s-server)
+ Tasks: 32
+ Memory: 583.2M
+ CPU: 29min 49.755s
+ CGroup: /system.slice/k3s.service
+ ├─8810 "/usr/local/bin/k3s server"
+ └─8895 "containerd "
+```
+
+### 安装 K3s(工作节点)
+在工作节点上安装 K3s 时,需要将工作节点与主节点连接。使用以下命令在工作节点上安装 K3s:
+``` bash
+curl -sfL https://get.k3s.io | K3S_URL=https://<主节点IP>:6443 K3S_TOKEN=<主节点Token> sh -
+```
+上述命令中,`主节点IP` 需要替换为主节点的 IP 地址,`主节点Token` 是从主节点获取的令牌。你可以通过以下命令在主节点上查看令牌:
+```bash
+sudo cat /var/lib/rancher/k3s/server/node-token
+```
+安装完成后,使用以下命令验证工作节点是否成功加入集群:
+```bash
+sudo kubectl get nodes
+```
+如果工作节点显示在列表中,且状态为 `Ready`,则表示工作节点成功加入集群。
+
+```bash
+sipeed@lpi3h-a2d1:~$ sudo kubectl get nodes
+NAME STATUS ROLES AGE VERSION
+lpi3h-1967 Ready 20h v1.31.5+k3s1
+lpi3h-231e Ready 20h v1.31.5+k3s1
+lpi3h-4782 Ready 56m v1.31.5+k3s1
+lpi3h-a2d1 Ready control-plane,master 23h v1.31.5+k3s1
+lpi3h-ba13 Ready 19h v1.31.5+k3s1
+lpi3h-c06b Ready 21h v1.31.5+k3s1
+```
+
+### 部署应用
+我们新建一个配置文件,用于运行 k3s 容器
+
+```bash
+nano hello-kubernetes.yaml
+```
+文件内容如下:
+```yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: hello-kubernetes
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: hello-kubernetes
+ template:
+ metadata:
+ labels:
+ app: hello-kubernetes
+ spec:
+ containers:
+ - name: hello-kubernetes
+ image: paulbouwer/hello-kubernetes:1.10.1
+ env:
+ - name: MESSAGE
+ value: "Hello Kubernetes"
+```
+然后使用这个配置文件启动一个容器
+
+```bash
+sudo kubectl apply -f hello-kubernetes.yaml
+```
+查看 pods 状态
+
+```bash
+sudo kubectl get pods -o wide
+NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
+hello-kubernetes-7fbb7f4899-zqs5x 1/1 Running 0 2m39s 10.42.0.114 arch
+```
+
+通过浏览器访问 10.42.0.114:8080
+
+
\ No newline at end of file
diff --git a/docs/hardware/zh/cluster/NanoCluster/use.md b/docs/hardware/zh/cluster/NanoCluster/use.md
new file mode 100644
index 00000000..b787760a
--- /dev/null
+++ b/docs/hardware/zh/cluster/NanoCluster/use.md
@@ -0,0 +1,400 @@
+---
+title: 快速上手
+---
+
+## 硬件安装
+
+### LM3H 安装
+
+先将散热片粘贴到主控芯片上,以提升散热效果。安装核心板时,请确保方向正确,以免损坏设备。
+
+
+
+对准核心板上的金手指缺口与主板卡槽,使其对齐后轻轻放入,并均匀向下按压,直至听到 “喀哒” 声,确认核心板已牢固插入且无歪斜或松动。
+
+
+
+如需拆卸核心板,请双手均匀握住核心板两侧,轻轻向上施力,避免单侧用力过大导致损坏。若核心板较紧,可先左右轻微晃动后再拔出,切勿生拉硬拽,以防损坏金手指或主板卡槽。
+
+### CM4、CM5 安装
+
+- 先将 CM4 / CM5 安装到转接板上;
+
+
+
+- 再将转接板插入主板插槽。
+
+
+
+>若使用 **CM5** 且需支持 **USB3.0**,请间隔一个槽位安装,确保 USB3 通道正常工作。
+
+### M4N 安装
+
+- 先将 M4N 核心板安装到转接板上;
+
+
+
+- 再将转接板插入主板插槽。
+
+
+
+### 风扇安装
+
+将风扇对准底板上预留的安装孔位插入:
+
+
+
+请确保风扇朝向正确,风向应朝向网口方向,以便更有效地带走 SOM 的热量:
+
+
+
+使用螺丝将风扇牢固固定在底板上:
+
+
+
+将风扇的电源排线插入底板上的风扇供电接口。请注意插头方向,确保红线为正极:
+
+
+
+## 电源供应
+
+NanoCluster 支持 USB-C PD 与 PoE 两种供电方式,支持双路热插拔 —— 即可同时连接 PD 与 PoE,在断开其中任意一方后系统依然稳定运行,支持在任意时刻插入或拔出任一电源。
+
+默认支持 60W(20V/3A)PD 供电,使用带 e-Marker 的线材可达 65W(20V/3.25A)。推荐使用标配的 PD 适配器及优质 USB-C 线缆,以确保稳定供电。可选配 60W 峰值功率的 PoE 模块,持续输出功率约为 50W,适用于无独立供电接口的网络部署环境。
+
+### 最大支持配置(参考推荐功率):
+
+| 供电方式 | 最大支持配置 |
+|----------|----------------------------------|
+| PD | 支持 7× LM3H / CM4 / CM5 / M4N |
+| PoE | 支持 7× LM3H / CM4;6× CM5 / M4N |
+| SSD 安装 | 最多支持 4 个带 SSD 的 SOM(因空间限制)|
+
+
+> **注:** CM5 / M4N 模块因功耗更高,在 PoE 模式下建议最多连接 6 个。
+
+---
+
+### PD 接口说明
+
+设备通过 USB-C 接口支持 PD 协议供电,最大功率 65W。请使用原装适配器或符合 20V/3A 以上规格的电源适配器,确保设备正常启动并满载运行。
+
+
+
+---
+
+### PoE 模块安装说明
+
+NanoCluster 可选配 PoE 模块,实现网络线供电,简化布线部署。请参考下图进行正确安装:
+
+
+
+将 PoE 模块与主板插槽对齐后小心插入,确保连接牢靠,不松动。
+
+
+
+>请使用符合标准的 PoE 交换机或 PoE 适配器,以保证稳定性和安全性。
+
+## 烧录镜像
+
+##### 核心板默认已预装系统,如需重新烧录系统,可按照以下步骤进行操作:
+
+### LM3H 烧录
+
+下载所需的固件镜像,并准备一台支持 USB OTG 的计算机及 USB 线。NanoCluster 目前使用的镜像与 Longan Pi 3H 兼容,可在此获取:[点击下载](https://wiki.sipeed.com/hardware/zh/longan/h618/lpi3h/3_images.html)。
+
+将核心板插入 slot1 槽位后,使用 USB 线 连接 主板 OTG 接口(下方的接口)与计算机。按住 BOOT 按键,然后 上电或复位设备,即可进入 UMS 烧录模式。
+
+
+
+准备好固件镜像后,打开 balenaEtcher,选择要烧录的镜像文件,确保核心板被识别为 U 盘,然后在 balenaEtcher 中选择目标设备。点击 “Flash” 按钮开始烧录,等待烧录完成后,安全弹出设备,断开 USB 连接并重启设备,即可进入新系统。
+
+
+
+### CM4/CM5 烧录
+
+1. 按照 [官方文档](https://www.raspberrypi.com/documentation/computers/compute-module.html#set-up-the-host-device) 安装 `rpiboot` 工具。
+
+2. 按住转接板上的 BOOT 按键,将 USB OTG 接口连接到主机。
+
+3. 主机识别到 **BCM2711 (BCM2712) Boot** 设备后,运行 `rpiboot`,稍等片刻会自动弹出一个 U 盘设备。
+
+4. 打开 [Raspberry Pi Imager](https://www.raspberrypi.com/software/),选择所需镜像并烧录到该设备上即可。
+
+### M4N 烧录
+
+可参考[系统烧录指南](https://wiki.sipeed.com/hardware/zh/maixIV/m4ndock/system-update.html)进行烧录
+
+## 远程管理
+
+主板配备一个网口用于连接交换机,集群内部设备通过交换机互联,并可通过 IP 地址进行控制和管理。
+
+**如何获得设备的IP地址(以 LM3H 核心板为例)**:
+
+先将网线连接至主板的网口,然后上电。预装的固件已启用 mDNS 服务,可在 PC 上启用 Avahi 服务,并使用 mDNS 扫描整个网络,即可获取 lpi3h 设备的 mDNS 域名信息。
+
+``` bash
+avahi-browse -art | grep lpi3h
+```
+
+然后使用:
+
+``` bash
+ssh sipeed@lpi3h-xxxx.local
+```
+
+即可连接(将 xxxx 替换为使用 avahi-browse 命令查看到的主机名)
+
+> lpi3h 为 LM3H 默认的 mDNS 主机名前缀,若使用的是 CM4 或 CM5,请根据所烧录的系统镜像自行调整主机名。
+
+## 串口连接
+
+每个 SOM 都将系统串口引出至 2.54mm 插针,可通过串口转 USB 模块进行连接调试。
+
+如需同时调试或控制多个 slot,推荐使用我们提供的 USB 转四串口扩展板。该扩展板将 slot3、slot5、slot6 和 slot7 的串口信号统一接入 slot1 的 USB 接口,便于集中管理与操作。
+
+
+
+## 电源控制
+
+slot1~7 的复位脚由 slot1 通过 **I2C 扩展的 IO** 进行控制,可实现远程开关机。
+
+**LM3H 控制方法示例:**
+
+```bash
+# 复位交换机芯片(GPIO 0)
+sudo gpioset gpiochip2 0=0 && sudo gpioset gpiochip2 0=1
+
+# 复位 slot2(LM3H)
+# 长按 8 秒实现关机
+sudo gpioset gpiochip2 2=0 && sleep 8 && sudo gpioset gpiochip2 2=1
+
+# 快速触发实现开机
+sudo gpioset gpiochip2 2=0 && sleep 1 && sudo gpioset gpiochip2 2=1
+
+# 复位 slot2(CM4/CM5)
+sudo gpioset gpiochip2 2=0 && sudo gpioset gpiochip2 2=1
+```
+
+> `gpiochip2` 表示 GPIO 控制器编号,后面的 `x=0` 表示将编号为 x 的 IO 设置为低电平,`x=1` 设置为高电平。
+
+| GPIO 编号 | 对应功能 |
+|-----------|------------------|
+| 0 | 交换机芯片复位 |
+| 1~7 | slot1~slot7 复位 |
+
+**CM4/CM5 控制方法示例:**
+
+todo。
+
+## 风扇调速
+
+LM3H / CM4 / CM5 均支持风扇调速,默认情况下 LM3H 会根据 CPU 温度自动调节转速, CM4 和 CM5 官方镜像默认风扇全速运行。以下为各平台的控制方法。
+
+如果需要手动调节风扇,可通过 SSH 连接到 slot1 设备,并执行以下命令:
+
+### LM3H 调速
+
+``` bash
+echo disabled | sudo tee /sys/class/thermal/thermal_zone2/mode
+
+echo 4 | sudo tee /sys/class/thermal/cooling_device0/cur_state
+```
+
+`cur_state` 取值范围为 0 ~ 4,对应不同转速。
+
+如果要恢复自动调节,可使用以下命令:
+
+``` bash
+echo enabled | sudo tee /sys/class/thermal/thermal_zone2/mode
+```
+
+### CM4 调速
+
+将以下内容添加到 /boot/config.txt:
+
+```bash
+dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
+```
+
+重启后执行:
+
+``` bash
+sudo pigpiod
+```
+
+Python 控制风扇:
+
+```python
+import pigpio
+
+pi = pigpio.pi()
+
+# 设置 PWM 频率和范围
+pi.set_PWM_frequency(13, 50)
+pi.set_PWM_range(13, 200)
+
+# 设置风扇转速
+pi.set_PWM_dutycycle(13, 0) # 不转
+pi.set_PWM_dutycycle(13, 200) # 满速
+```
+
+### CM5 调速
+
+Python 控制风扇:
+```python
+import RPi.GPIO as GPIO
+
+GPIO.setmode(GPIO.BCM)
+GPIO.setup(13, GPIO.OUT)
+
+pwm = GPIO.PWM(13, 50) # 50Hz 频率
+pwm.start(0) # 不转
+pwm.start(100) # 满速
+```
+
+## 交换机管理
+
+### 简介
+
+NanoCluster 搭载 JL6108 千兆交换机芯片,该芯片基于 **RISC-V** 架构,既可作为即插即用的傻瓜交换机使用,也可作为可本地管理的二层交换机,支持通过 Web 进行配置。主要功能包括:
+
+- **系统管理**:显示系统信息、支持重启、恢复出厂设置、固件升级
+- **网络配置**:支持静态 IP 和 DHCP 动态 IP 配置
+- **端口管理**:端口启用/禁用、链路速率设置、流控管理
+- **端口汇聚**:支持端口绑定,提高带宽利用率
+- **安全与隔离**:端口隔离、防止数据泄露
+- **流量监控**:端口 MIB 统计、流量分析
+- **环路保护**:防止网络环路,提升网络稳定性
+- **VLAN 配置**:支持 MTU VLAN、基于端口的 VLAN、802.1Q VLAN、PVID 设置
+- **QoS 配置**:基于端口、PCP、DSCP 进行流量优先级管理
+- **带宽与风暴控制**:支持基于端口的带宽限制与广播风暴抑制
+
+### 使用教程
+
+1. **确保设备连接**
+ 确保 NanoCluster 已上电,并通过网线将板载网口与管理主机相连。
+
+2. **配置 IP 地址**
+ 交换机的默认 IP 地址为 **10.10.11.10/24**,请确保管理主机的 IP 地址与其处于同一网段,例如 **10.10.11.x**(x 取值范围:1-254,且不能为 10),子网掩码设为 **255.255.255.0**。
+
+ 
+
+3. **访问管理界面**
+ 在浏览器地址栏输入 `http://10.10.11.10` 并回车,即可进入交换机的登录界面。
+
+ 
+
+4. **登录管理系统**
+ 在登录界面输入 **管理员账号和密码**(默认均为 `admin`),然后点击 **登录**,进入交换机管理界面首页。
+
+ 
+
+### 基本配置
+
+#### 端口管理
+JL6108 交换机提供端口状态管理功能,支持 **端口启用/禁用**、**速率设置**、**流控管理**。
+- **启用/禁用端口**:可在 **端口管理** 页面找到目标端口,选择“启用”或“禁用”
+- **修改端口速率**:支持 10Mbps / 100Mbps / 1000Mbps 三种模式
+- **流控**:可开启端口流控,防止数据丢失
+
+
+
+#### VLAN 配置
+VLAN(虚拟局域网)用于划分不同的网络区域,防止广播风暴,提高网络安全性。
+
+##### 配置端口 VLAN
+
+1. **进入端口 VLAN 界面**
+ 在 Web 管理界面,依次进入:`VLAN` >> `端口 VLAN`,进入 VLAN 配置页面。
+
+2. **启用端口 VLAN 功能**
+ 勾选 **“端口 VLAN 使能”** 选项,并点击 **`应用`** 按钮。
+
+3. **创建 VLAN 2 并配置端口成员**
+ - 在 **VLAN ID** 输入框中输入 **`2`**
+ - 勾选 **端口 2 ~ 4**
+ - 点击 **`应用`** 按钮以保存配置
+
+4. **查看端口成员表**
+ 配置完成后,**端口 2 ~ 4 将自动从 VLAN 1 中移除**,并加入 VLAN 2。
+
+ 
+
+#### QoS 配置(流量优先级)
+QoS 用于保障高优先级流量(如视频会议、VoIP)的稳定性:
+1. **进入“QoS 设置”**
+2. 选择 **基于端口/802.1P/DSCP** 的 QoS 策略
+3. 设置 **高/中/低优先级队列**
+4. **保存设置**,QoS 规则生效
+
+
+
+### 更多配置
+
+JL6108 交换机还支持更多高级功能,详细配置说明,请参考官方手册。
+
+[点击此处查看完整手册](https://dl.sipeed.com/shareURL/Cluster/NanoCluster/06_Switch_JL6108)
+
+我们提供基于 **RISC-V** 架构的 **JL6108 SDK**,用户可以从以下链接下载 SDK 并进行自主开发。
+
+[JL6108 SDK](https://dl.sipeed.com/shareURL/Cluster/NanoCluster/06_Switch_JL6108)
+
+## 常见问题排查(FAQ)
+
+### 设备无法开机 / 无法进入系统
+确保使用至少支持 PD 20V 输出的电源适配器,避免使用主机 USB 供电,否则可能导致设备无法正常启动。检查电源输入接口旁的绿色指示灯是否亮起,若无反应,可能是电源适配器或供电线路问题。观察每个 slot 对应的蓝色电源指示灯,判断系统是否正常启动。
+
+如果 **LM3H** 无法进入系统,可按住 BOOT 按键后上电或复位设备,检查是否进入 UMS 模式,并通过磁盘管理确认是否识别为 U 盘。若系统损坏或无法进入,可以重新[烧录镜像](https://wiki.sipeed.com/hardware/zh/cluster/NanoCluster/use.html#烧录镜像);若无法进入 UMS 模式,请尝试[异常刷机](https://wiki.sipeed.com/hardware/zh/cluster/NanoCluster/use.html#异常刷机(LM3H))。
+
+若 **CM4/CM5** 无法正常启动系统,可参考[烧录镜像](https://wiki.sipeed.com/hardware/zh/cluster/NanoCluster/use.html#烧录镜像)部分重新烧录后再进行测试。
+
+### 网络连接异常(无法获取 IP)
+如果成功进入系统但网络连接异常,无法获取 IP,请确保先插入网线再上电。交换机会在设备上电时检测网络接口,若上电后再插网线,可能导致接口无法正常识别。
+
+### 异常刷机(LM3H)
+
+如果因某些原因导致 U-Boot 损坏,设备无法正常进入 UMS 模式,可以通过 Fel 模式 手动恢复。使用 sunxi-fel 或 xfel 工具,将 U-Boot 加载至内存并启动 UMS 模式,然后进行刷机。
+
+#### 进入 fel 模式
+
+短接 slot1 的该处引脚与 GND,然后上电即可进入 FEL 模式(后续版本可能增加按键控制)。
+
+
+
+#### 使用 sunxi-fel
+
+编译安装
+``` bash
+git clone https://github.com/linux-sunxi/sunxi-tools.git
+cd sunxi-tools
+make tools
+sudo make install
+```
+
+烧录 U-Boot
+``` bash
+sudo sunxi-fel uboot /path/u-boot-sunxi-with-spl.bin
+```
+
+执行完成后,设备应能正常进入 UMS 模式,此时可继续烧录系统镜像。
+
+#### 使用 xfel
+
+编译安装
+``` bash
+sudo apt install libusb-1.0-0-dev
+git clone https://github.com/xboot/xfel.git
+cd xfel
+make
+sudo make install
+```
+
+烧录 U-Boot
+``` bash
+xfel ddr lpddr4
+xfel write 0x4a000000 /path/u-boot-dtb.bin
+xfel exec 0x4a000000
+```
+
+执行完成后,设备应能正常进入 UMS 模式,然后进行系统镜像烧录。
diff --git a/docs/hardware/zh/kvm/NanoKVM/development.md b/docs/hardware/zh/kvm/NanoKVM/development.md
index 17c9fdb6..4080def2 100644
--- a/docs/hardware/zh/kvm/NanoKVM/development.md
+++ b/docs/hardware/zh/kvm/NanoKVM/development.md
@@ -7,6 +7,11 @@ update:
author: BuGu
content:
- Release docs
+ - date: 2025-4-10
+ version: v1.0
+ author: BuGu
+ content:
+ - Update docs
---
NanoKVM除实现KVM功能外还开放了一些数据,用于用户的二次开发,此文档用于描述这些数据的作用,以及开发的注意事项
@@ -46,29 +51,6 @@ NanoKVM除实现KVM功能外还开放了一些数据,用于用户的二次开发
+ 注: 参数只读
> 示例: 查看当前stream分辨率: `cat /kvmapp/kvm/now_fps`
-+ **Stream 传输流格式**
- + 传输流格式: /kvmapp/kvm/type
- + mjpeg
- + h264
- + 注: 参数可读可写
- + stream h264 格式开发中,预计10月上线
- > 示例: 终端修改传输格式为MJPEG: `echo mjpeg > /kvmapp/kvm/type`
-
-+ **Stream 传输流质量**
- + 传输流格式: /kvmapp/kvm/qlty
- + 范围: 50-100
- + 注: 参数可读可写,仅针对MJPEG格式调整质量,设置95以上质量时,受限于SG2002 CPU和编码器,传输帧率会变慢,延迟变大.
- > 示例: 终端修改MJPEG质量为60%: `echo 60 > /kvmapp/kvm/qlty`
-
-+ **Stream 帧差检测设置**
- + KVM 捕获的电脑画面并非时刻改变,当画面静止时,可以暂停流的传输来降低流量消耗
- + 帧差检测设置: /etc/kvm/frame_detact
- + 创建文件: 启动帧差检测
- + 删除文件: 关闭帧差检测
- + 帧差计算需要消耗大量CPU资源,所以stream使用 320\*240 的图像计算帧差,并且每100帧检测一次,此时帧差检测带来的CPU消耗约为2%, 当检测到画面静止时, kvm_stream 停止流传输, now_fps降低为0, CPU 开始连续检测图像变化, 当图像改变时可以以最快速度恢复流的传输.
- + 注: 帧差计算尺寸和跳帧数暂不可调
- > 示例: 打开 kvm_stream 帧差检测功能: `touch /etc/kvm/frame_detact`
-
+ **查看硬件版本**
+ NanoKVM有不同的版本,版本之间硬件有所差异,详情请自行翻阅[原理图](https://cn.dl.sipeed.com/shareURL/KVM/nanoKVM/HDK/02_Schematic),开机脚本将检测硬件差异,并保存在`/etc/kvm/hw`里
+ alpha : 早期内测版 NanoKVM Full
@@ -79,6 +61,38 @@ NanoKVM除实现KVM功能外还开放了一些数据,用于用户的二次开发
+ /etc/kvm/server.yaml
+ 详情参考WiKi->KVM->NanoKVM Cube->网络
++ **USB状态获取**
+ + cat /sys/class/udc/4340000.usb/state
+ + configured 已连接
+ + not attached 未连接
+
++ **HDMI状态获取**
+ + cat /kvmapp/kvm/state
+ + 1:HDMI正常
+ + 0:HDMI异常
+
++ **ETH状态获取**
+ + cat /sys/class/net/eth0/carrier
+ + 1:网线接入
+ + 0:网线断开(不准确)
+
++ **WiFi存在**
+ + /etc/kvm/wifi_exist 文件存在即为wifi模块存在
+
++ **WiFi状态获取**
+ + cat /kvmapp/kvm/wifi_state
+ + 0:wifi存在但未连接
+ + 1:wifi已连接
+
++ **打开watchdog(实时)**
+ + touch /etc/kvm/watchdog 打开
+ + rm /etc/kvm/watchdog 关闭
+
++ **关闭ping功能**
+ + touch /etc/kvm/stop_ping 关闭
+ + rm /etc/kvm/stop_ping 打开
+
+
## USB HID模拟设备
+ 初始化: NanoKVM借助USB Gedget 模拟 USB HID 设备, 在设备开机脚本 `/etc/init.d/S03usbdev` 中完成了键盘,鼠标,触屏的初始化
diff --git a/docs/hardware/zh/kvm/NanoKVM/faq.md b/docs/hardware/zh/kvm/NanoKVM/faq.md
index 9894b8fd..32a638f3 100644
--- a/docs/hardware/zh/kvm/NanoKVM/faq.md
+++ b/docs/hardware/zh/kvm/NanoKVM/faq.md
@@ -17,6 +17,20 @@ keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
2. 应用版本大于 2.1.5 时,若忘记密码,可以按下机身`BOOT`按键10s以上(NanoKVM-Cube的BOOT按键位于USB-HID接口右边,PCIe版本BOOT按键可在面板上找到,较老版本的NanoKVM Full可能没有在对应位置开孔,需要拆机操作)
3. 若长按无法重置密码,可能是应用版本小于 2.1.5 ,参考[这里](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/flashing.html)重新烧录镜像,注意,重烧镜像后会丢失所有配置信息。
+### HID键鼠不工作
+ 1. 使用网页中 "重置HID" 功能
+ 2. 部分主机系统对USB键鼠要求较高,需要使用“仅HID”模式,该模式下USB仅模拟键鼠设备,请通过网页鼠标图标中切换该模式
+ 3. 部分主板系统要求HID键鼠设备带有BIOS标识,NanoKVM可在/boot下创建BIOS来启用该功能,执行`touch /boot/BIOS && restart`
+ 4. 检查USB接口是否稳定连接, 可查看 OLED 上 HID 图标是否亮起, 或在网页终端使用 `cat /sys/class/udc/4340000.usb/state`, 如果显示未连接, 则认为 USB 线缆接触不良, 请更换 USB 线缆后再试
+
+### BIOS 不识别HID键鼠
+ 1. 部分主机系统对USB键鼠要求较高,需要使用“仅HID”模式,该模式下USB仅模拟支持BIOS的键鼠设备,请通过网页鼠标图标中切换该模式
+ 2. 使用网页中 "重置HID" 功能
+
+### 非英文键盘键位错误
+ + 键盘的键盘布局需要在被控主机系统设置中修改,以Ubuntu+修改法语键盘为例:
+ 设置->键盘->输入源->‘+’->添加->搜索"French",添加
+
### STA LED 无法正常闪烁
STA灯用于指示NanoKVM的运行状态,正常工作时,STA灯在不规律闪烁,当STA灯出现长亮/长灭或者 规律性间断熄灭时认为NanoKVM出现故障
@@ -39,14 +53,15 @@ keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
### 登录浏览器界面后,无画面
1. 被控主机可能处于睡眠状态,按下键盘任意按键尝试唤醒
- 2. PCIe版本可尝试点击`视频`图标下的重置HDMI
- 3. Cube版本可打开网页后重新拔插HDMI线缆
- 4. 查看OLED上分辨率/或在网页终端输入`echo "$(cat /kvmapp/kvm/width) * $(cat /kvmapp/kvm/height)"`,与被控主机分辨率对比是否相同,如果不同可使用`echo xxx > /kvmapp/kvm/width && echo xxx > /kvmapp/kvm/height` 手动设置分辨率
+ 2. 非Chrome浏览器可能存在H264无图像而MJPEG模式正常显示,请使用Chrome浏览器再试
+ 3. PCIe版本可尝试点击`视频`图标下的重置HDMI
+ 4. Cube版本可打开网页后重新拔插HDMI线缆
+ 5. 查看OLED上分辨率/或在网页终端输入`echo "$(cat /kvmapp/kvm/width) * $(cat /kvmapp/kvm/height)"`,与被控主机分辨率对比是否相同,如果不同可使用`echo xxx > /kvmapp/kvm/width && echo xxx > /kvmapp/kvm/height` 手动设置分辨率
> 若主机系统为Windows,显示设置中的分辨率很可能与实际分辨率不符,需在高级->活动信号分辨率中查看
- 5. 早期内测版 Full NanoKVM 使用普通排线连接 HDMI 采集板,可能因接触不良导致检测不到 HDMI 信号,可按下图所示重新连接排线,或联系客服购买专用排线
+ 6. 早期内测版 Full NanoKVM 使用普通排线连接 HDMI 采集板,可能因接触不良导致检测不到 HDMI 信号,可按下图所示重新连接排线,或联系客服购买专用排线

- 6. 尝试重启解决:在网页终端中执行`reboot`
- 7. 若上述方式无法锁定问题,请在网页终端中执行`cat /proc/cvitek/vi_dbg`
+ 7. 尝试重启解决:在网页终端中执行`reboot`
+ 8. 若上述方式无法锁定问题,请在网页终端中执行`cat /proc/cvitek/vi_dbg`
> 若 `VIDevFPS` 为0,则认为NanoKVM无法获取到HDMI输入,排查以下问题:主机是否输出视频信号、HDMI线缆损坏、Cube是否为早期版本,存在接触不良的情况
> 若 `VIDevFPS` 非0 、`VIFPS` 为0 ,则认为NanoKVM没有正确配置HDMI参数,Cube可以重新插拔HDMI重新自动获取,PCIe可点击`视频`下`重置HDMI`自动获取
> 查看 `VIInImgWidth` 和 `VIInImgHeight`与实际HDMI分辨率是否一致,若不同,则认为NanoKVM没有自动获取到正确的HDMI参数,按照第4点手动配置分辨率参数
@@ -60,14 +75,6 @@ keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
2. 若 STA LED 闪烁异常,请先考虑系统是否正常启动,按上述`STA LED 无法正常闪烁`步骤排查故障
3. 尝试强制更新或重新烧录系统
-### HID键鼠不工作
- 1. 使用网页中 "重置HID" 功能
- 2. 检查USB接口是否稳定连接, 可查看 OLED 上 HID 图标是否亮起, 或在网页终端使用 `cat /sys/class/udc/4340000.usb/state`, 如果显示未连接, 则认为 USB 线缆接触不良, 请更换 USB 线缆后再试
-
-### BIOS 不识别HID键鼠
- 1. 部分主板BIOS要求HID键鼠设备带有BIOS标识,NanoKVM可在/boot下创建BIOS来启用该功能,执行`touch /boot/BIOS && restart`
- 2. 使用网页中 "重置HID" 功能
-
### 关于内存
1. NanoKVM 总内存(RAM)空间为256MB, 其中视频图像处理使用一块专用的ion内存区域, 在用户空间查看内存会小于256MB
2. 固件版本号小于 1.3.0 的镜像仅为用户空间保留 128MB 的内存, 1.3.0以及之后的所有镜像, 内存大小扩展到158MB, 有利于Tailscale长时间运行, 请有需要的用户根据[这里](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/flashing.html)的步骤更新镜像
@@ -91,6 +98,25 @@ keywords: NanoKVM, Remote desktop, Lichee, PiKVM, RISCV, tool
4. 重新烧录系统
### 若上述方法不能解决异常,请在论坛,GitHub或QQ群说明您购买的型号和遇到的问题,我们会耐心解答
+ + 反馈时,请注明您使用的NanoKVM版本,在什么样的使用环境下(主板型号,系统名称等信息),在什么样的系统配置中(如镜像版本号1.4.0;应用版本号2.2.5;H264;1080P;画质高;帧率30),遇到了什么问题,这样有助于我们复现并解决
+ + 若出现无图像显示的问题,请在异常时分别执行以下命令,将输出的log粘贴至issue
+ ```shell
+ cat /etc/kvm/hw
+ cat /etc/kvm/hdmi_version
+ cat /etc/kvm/hdmi_mode
+ ```
+ + 部分问题需要收集运行时的应用log,请按照以下步骤操作:
+ ```shell
+ # 在网页中打开SSH功能(设置->设备->SSH)
+ # 使用网页中设置的密码登录ssh,如果没有设置,默认密码为root
+ ssh root@xxx.xxx.xxx.xxx
+ # 修改log等级:/etc/kvm/server.yaml->logger->level:info 修改为 debug
+ vi /etc/kvm/server.yaml
+ # 使用‘i’编辑;使用 ‘Esc’ + :wq 退出
+ # 重启KVM服务
+ /etc/init.d/S95nanokvm restart
+ # 复制log
+ ```
## 反馈方式
diff --git a/docs/hardware/zh/kvm/NanoKVM/introduction.md b/docs/hardware/zh/kvm/NanoKVM/introduction.md
index 59c8b3b3..54062b80 100644
--- a/docs/hardware/zh/kvm/NanoKVM/introduction.md
+++ b/docs/hardware/zh/kvm/NanoKVM/introduction.md
@@ -18,7 +18,7 @@ update:

-Lichee NanoKVM 是基于 LicheeRV Nano 的 IP-KVM 产品,继承了 LicheeRV Nano 的极致体积 和 强大功能。
+NanoKVM 是基于 LicheeRV Nano 的 IP-KVM 产品,继承了 LicheeRV Nano 的极致体积 和 强大功能。
NanoKVM 包含一个 HDMI 输入接口,可以被电脑识别为显示器,捕捉电脑画面;一个 USB2.0 接口连接电脑主机,可被识别为键盘鼠标触摸板等HID设备,同时使用TF卡多余存储空间,挂载为一个U盘设备;全系标配一个百兆网口,用于视频和控制信号等的网络传输。另外Full版还带有ATX电源控制接口(USB-C形态)方便远程控制和查看主机开关机状态;Full 版外壳下还带一个 OLED 显示屏,用于显示本机 IP 和 KVM 相关状态。
@@ -72,7 +72,9 @@ NanoKVM 基于 Sipeed [LicheeRV Nano](https://wiki.sipeed.com/hardware/zh/lichee
NanoKVM Lite 由 LicheeRV Nano E 和 HDMItoCSI 小板构成,NanoKVM FULL 在 NanoKVM Lite 基础上增加 NanoKVM-A/B 板和外壳。HDMItoCSI板用于转换HDMI信号;NanoKVM-A 包含 OLED、ATX控制输出(TypeC接口形式)、辅助供电(TypeC接口)以及ATX开关机、复位按键;NanoKVM-B 一端连接A板,一端连接电脑ATX针脚,用于电脑的远程开关机。
-> NanoKVM 镜像在LicheeRV Nano SDK 和 MaixCDK 基础上构建,可以兼容使用 LicheeRV Nano 的资料,反之LicheeRV Nano 或其他 SG2002 产品无法使用KVM软件。如果您想在 NanoKVM 上构建 HDMI 输入相关应用,请与我们联系,以获得技术支持。
+NanoKVM Cube/PCIe 软件现已完全开源:[KVM应用开源位置](https://github.com/sipeed/NanoKVM)、 [镜像开源位置](https://github.com/sipeed/LicheeRV-Nano-Build/tree/NanoKVM)
+
+> NanoKVM 镜像在LicheeRV Nano SDK 和 MaixCDK 基础上构建,可以兼容使用 LicheeRV Nano 的资料,反之 LicheeRV Nano 或其他 SG2002 产品无法使用KVM软件。如果您想在 NanoKVM 上构建 HDMI 输入相关应用,请与我们联系,以获得技术支持。
+ [原理图](https://cn.dl.sipeed.com/shareURL/KVM/nanoKVM/HDK/02_Schematic)
+ [3D结构](https://cn.dl.sipeed.com/shareURL/KVM/nanoKVM/HDK/04_3D_file)
diff --git a/docs/hardware/zh/kvm/NanoKVM/quick_start.md b/docs/hardware/zh/kvm/NanoKVM/quick_start.md
index a1ad696c..fc08e49a 100644
--- a/docs/hardware/zh/kvm/NanoKVM/quick_start.md
+++ b/docs/hardware/zh/kvm/NanoKVM/quick_start.md
@@ -91,6 +91,8 @@ Full 版本出厂时已经烧录了镜像,可以跳过此步骤。
新的应用往往带来更多功能或修复某些重要漏洞,建议您将 NanoKVM 应用更新到最新版本,具体操作方式请参考 [更新应用](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html)。
+2.1.1 及后续版本更新记录:[应用更新记录](https://github.com/sipeed/NanoKVM/blob/main/CHANGELOG.md)
+
## 基础操作
### 如何获取IP地址
@@ -101,12 +103,16 @@ Full版NanoKVM自带OLED显示屏,联网之后会在显示屏第一行显示IP
Lite版用户请参考[获取IP](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html#%E8%8E%B7%E5%8F%96-IP)
+注意:1.4.0 版本镜像默认关闭SSH,Lite用户请直接使用 RNDIS IP (10.xxx.xxx.1)登录网页,在设置中即可查看IP
+
### 查看远程桌面
-浏览器直接输入获取的IP,进入登录页面,默认账号密码为admin、admin,登录后建议**先检查更新**(设置 -> 检查更新),详细步骤可参考 [更新应用](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html)。
+浏览器直接输入获取的IP,进入登录页面,默认账号密码为admin、admin,登录后强烈建议**先检查更新**(设置 -> 检查更新),详细步骤可参考 [更新应用](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html)。
Lite版用户,或Full用户重新烧卡登录后页面上无远程画面,请先升级应用后刷新网页,即可开始使用
+注:少数版本可能存在无法访问网页/登录后崩溃的情况,请拔出HDMI接口后重新上电,更新为最新的应用后再插入HDMI
+
注: 建议使用Chrome浏览器,其他浏览器可能出现无法显示画面或无法操作键鼠等兼容性问题

@@ -117,6 +123,8 @@ Lite版用户,或Full用户重新烧卡登录后页面上无远程画面,请

+注:网页中修改密码后,SSH登录密码将会同步修改(如:网页密码修改为123456, 使用 `ssh root@192.168.xxx.xxx` `123456` 登录)
+
### ATX电源控制
Full 版套餐内包含了 NanoKVM-A/B 板,用于控制和查看主机开关机状态。
diff --git a/docs/hardware/zh/kvm/NanoKVM/user_guide.md b/docs/hardware/zh/kvm/NanoKVM/user_guide.md
index 85a1409b..5aa3629f 100644
--- a/docs/hardware/zh/kvm/NanoKVM/user_guide.md
+++ b/docs/hardware/zh/kvm/NanoKVM/user_guide.md
@@ -124,17 +124,27 @@ NanoKVM 的 USB 会默认虚拟出 RNDIS USB网卡(从设备),当 NanoKVM
### 关于SSH
-+ 2.1.5 版本应用后,SSH支持永久关闭和临时开启,方法如下:
++ 2.1.6 版本应用后,SSH支持网页开启和永久关闭,请在 设置 -> 设备 -> SSH 打开或关闭
+
++ 1.4.0 镜像后,SSH默认关闭
1. 永久关闭:执行`touch /etc/kvm/ssh_stop`即可在NanoKVM下一次开机时开始禁用ssh登录,删除该文件`rm /etc/kvm/ssh_stop`即可解除
2. 临时开启:执行`touch /boot/start_ssh_once`或在 /boot 分区下创建 start_ssh_once 空文件,即可在NanoKVM下一次开机时打开ssh,该文件会自动删除
+### 关于mDNS
+
++ mDNS(Multicast DNS)是一种用于在局域网内进行名称解析的协议,使设备能够通过主机名而非 IP 地址相互发现和通信。它允许无需中央 DNS 服务器的情况下,自动发现网络中的服务和设备。
+
++ NanoKVM 使用设备码生成 mDNS主机名,可以尽量保证多设备时主机名不冲突
+
++ mDNS 服务在网络环境复杂时会有较高的CPU占用,影响图像的流畅性,建议不使用时将其关闭:设置 -> 设备 -> mDNS
+
+### 关于看门狗
+
++ 2.2.2 应用版本后新增看门狗系统,将持续监控server服务的运行,服务异常时将重启系统,默认未开启,可以通过在网页终端执行 `touch /etc/kvm/watchdog` 开启,通过`rm /etc/kvm/watchdog` 关闭
+
### 更多功能敬请期待
-## 网络延迟测算
-
-主机连接KVM和一个普通屏幕,播放秒表计时视频,拍照捕捉远程桌面和显示屏,计算差值即可估算网络延迟。
-
## 硬件与结构
### 拆解
@@ -155,7 +165,7 @@ Full 版 NanoKVM 在重新烧卡时需要对外壳拆解,请按下图提示拆
为兼容前后两种硬件,软件上做了自适应设计,内测用户和正式版用户可以放心更新。
-### 重启问题
+### 重启主机问题
早期内测版 Full NanoKVM 在 reboot 系统时会短暂拉高 RST_SW 引脚,导致连接的主机复位,正式版硬件已修复这个问题。
diff --git a/docs/hardware/zh/kvm/NanoKVM_PCIe/introduction.md b/docs/hardware/zh/kvm/NanoKVM_PCIe/introduction.md
index 35674879..d6f4d55d 100644
--- a/docs/hardware/zh/kvm/NanoKVM_PCIe/introduction.md
+++ b/docs/hardware/zh/kvm/NanoKVM_PCIe/introduction.md
@@ -64,6 +64,8 @@ NanoKVM 系列产品包含一个 HDMI 输入接口,可以被电脑识别为显
NanoKVM 与 Sipeed [LicheeRV Nano](https://wiki.sipeed.com/hardware/zh/lichee/RV_Nano/1_intro.html) 使用相同SOC,希望二次开发的小伙伴可在[这里](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/development.html)查看更多资料
+NanoKVM Cube/PCIe 软件现已完全开源:[KVM应用开源位置](https://github.com/sipeed/NanoKVM)、 [镜像开源位置](https://github.com/sipeed/LicheeRV-Nano-Build/tree/NanoKVM)
+
> NanoKVM 镜像在LicheeRV Nano SDK 和 MaixCDK 基础上构建,可以兼容使用 LicheeRV Nano 的资料,反之LicheeRV Nano 或其他 SG2002 产品无法使用KVM软件。如果您想在 NanoKVM 上构建 HDMI 输入相关应用,请与我们联系,以获得技术支持。
NanoKVM-Cube 和 NanoKVM-PCIe 共用同一套镜像和应用, 自动适配不同的硬件版本
diff --git a/docs/hardware/zh/kvm/NanoKVM_PCIe/quick_start.md b/docs/hardware/zh/kvm/NanoKVM_PCIe/quick_start.md
index 2e09593d..952e05b9 100644
--- a/docs/hardware/zh/kvm/NanoKVM_PCIe/quick_start.md
+++ b/docs/hardware/zh/kvm/NanoKVM_PCIe/quick_start.md
@@ -102,6 +102,8 @@ NanoKVM-PCIe 包装内包含主机, 半高 PCIe 挡板, 两条 USBA-C线缆, 一
新的应用往往带来更多功能或修复某些重要漏洞,建议您将 NanoKVM 应用更新到最新版本,具体操作方式请参考 [更新应用](https://wiki.sipeed.com/hardware/zh/kvm/NanoKVM/system/updating.html)。
+2.1.1 及后续版本更新记录:[应用更新记录](https://github.com/sipeed/NanoKVM/blob/main/CHANGELOG.md)
+
## 基础操作
### 如何获取IP地址
@@ -119,6 +121,8 @@ WiFi 版本 NanoKVM-PCIe ETH 和 WiFi 获取的 IP 将会交替出现, 如图: I
注: 建议使用Chrome浏览器,其他浏览器可能出现无法显示画面或无法操作键鼠等兼容性问题
+注:少数版本可能存在无法访问网页/登录后崩溃的情况,请拔出HDMI接口后重新上电,更新为最新的应用后再插入HDMI
+
### ATX电源控制
如果连接了电源控制接口,可以在网页远程控制电脑启动
diff --git a/docs/hardware/zh/kvm/NanoKVM_PCIe/user_guide.md b/docs/hardware/zh/kvm/NanoKVM_PCIe/user_guide.md
index 5089518a..e8c1e4ed 100644
--- a/docs/hardware/zh/kvm/NanoKVM_PCIe/user_guide.md
+++ b/docs/hardware/zh/kvm/NanoKVM_PCIe/user_guide.md
@@ -128,11 +128,25 @@ NanoKVM 的 USB 会默认虚拟出 RNDIS USB网卡(从设备),当 NanoKVM
### 关于SSH
-+ 2.1.5 版本应用后,SSH支持永久关闭和临时开启,方法如下:
++ 2.1.6 版本应用后,SSH支持网页开启和永久关闭,请在 设置 -> 设备 -> SSH 打开或关闭
+
++ 1.4.0 镜像后,SSH默认关闭
1. 永久关闭:执行`touch /etc/kvm/ssh_stop`即可在NanoKVM下一次开机时开始禁用ssh登录,删除该文件`rm /etc/kvm/ssh_stop`即可解除
2. 临时开启:执行`touch /boot/start_ssh_once`或在 /boot 分区下创建 start_ssh_once 空文件,即可在NanoKVM下一次开机时打开ssh,该文件会自动删除
+### 关于mDNS
+
++ mDNS(Multicast DNS)是一种用于在局域网内进行名称解析的协议,使设备能够通过主机名而非 IP 地址相互发现和通信。它允许无需中央 DNS 服务器的情况下,自动发现网络中的服务和设备。
+
++ NanoKVM 使用设备码生成 mDNS主机名,可以尽量保证多设备时主机名不冲突
+
++ mDNS 服务在网络环境复杂时会有较高的CPU占用,影响图像的流畅性,建议不使用时将其关闭:设置 -> 设备 -> mDNS
+
+### 关于看门狗
+
++ 2.2.2 应用版本后新增看门狗系统,将持续监控server服务的运行,服务异常时将重启系统,默认未开启,可以通过在网页终端执行 `touch /etc/kvm/watchdog` 开启,通过`rm /etc/kvm/watchdog` 关闭
+
### 更多功能敬请期待
## 硬件与结构
diff --git a/docs/hardware/zh/kvm/NanoKVM_USB/faq.md b/docs/hardware/zh/kvm/NanoKVM_USB/faq.md
index 8986a71b..09dbc407 100644
--- a/docs/hardware/zh/kvm/NanoKVM_USB/faq.md
+++ b/docs/hardware/zh/kvm/NanoKVM_USB/faq.md
@@ -28,7 +28,14 @@ keywords: NanoKVM-USB, Lichee, PiKVM, RISCV, tool
+ 内测版硬件仅支持HOST侧USB供电,请在使用时保持HOST测供电正常
-### 若上述方法不能解决异常,请在论坛,GitHub或QQ群说明您购买的型号和遇到的问题,我们会耐心解答
+### 环出显示屏
+
++ NanoKVM-USB在未连接环出显示屏前使用自身的EDID(显示器识别数据),连接环出显示器后切换为环出显示器的EDID。
++ 由于EDID中包含显示器厂家以及颜色信息,插入环出显示器前后Target系统设置中可能显示为不同的分辨率列表,USB采集的画面颜色可能在插入前后有所差异
+
+### 其他
+
++ 若上述方法不能解决异常,请在论坛,GitHub或QQ群说明您购买的型号和遇到的问题,我们会耐心解答
## 已知问题
diff --git a/docs/hardware/zh/maixcam/README.md b/docs/hardware/zh/maixcam/README.md
index 898bfefc..6ebaf71a 100644
--- a/docs/hardware/zh/maixcam/README.md
+++ b/docs/hardware/zh/maixcam/README.md
@@ -88,8 +88,8 @@ MaixCAM 是为更好地落地 AI 视觉、听觉和 AIOT 应用而设计的一
* [原理图](https://dl.sipeed.com/shareURL/LICHEE/LicheeRV_Nano/02_Schematic)
* [摄像头和镜头](https://dl.sipeed.com/shareURL/MaixCAM/MaixCAM/Camera)
* [核心板(LicheeRV-Nano)硬件资料](https://dl.sipeed.com/shareURL/LICHEE/LicheeRV_Nano)
-* [MaixCAM 外壳模型](https://makerworld.com/zh/models/440321)
-* [MaixCAM 支架模型](https://makerworld.com/zh/models/463622#profileId-372189)
+* [MaixCAM 外壳模型](https://makerworld.com.cn/zh/models/467141)
+* [MaixCAM 支架模型](https://makerworld.com.cn/zh/models/467152)
* 核心板引脚图:

diff --git a/docs/hardware/zh/maixcam/assemble.md b/docs/hardware/zh/maixcam/assemble.md
index 1ba81a7d..acb535ec 100644
--- a/docs/hardware/zh/maixcam/assemble.md
+++ b/docs/hardware/zh/maixcam/assemble.md
@@ -12,11 +12,12 @@ title: MaixCAM / MaixCAM-Pro 外壳
## 开源模型文件
-* [MaixCAM 外壳模型](https://makerworld.com/zh/models/440321)(推荐使用耐温70度的树脂进行光固化打印)
-* [MaixCAM 支架模型](https://makerworld.com/zh/models/463622#profileId-372189)
-* [MaixCAM-Pro 外壳模型](https://makerworld.com/zh/models/722034)
-* 更多到 [makerworld.com](https://makerworld.com/)(推荐) 或 [makerworld.com.cn](https://makerworld.com.cn) 搜索 `MaixCAM`
-
+* [MaixCAM 外壳模型](https://makerworld.com.cn/zh/models/467141)(推荐使用耐温70度的树脂进行光固化打印)
+* [MaixCAM 支架模型](https://makerworld.com.cn/zh/models/467152)
+* [MaixCAM-Pro 外壳模型](https://makerworld.com.cn/zh/models/575886)
+* M2*5 自攻螺丝 6 颗
+* H1.5 内六角螺丝刀
+
## 文档
作为一个合格的开发者,应该学会自己看文档,很多问题文档里都有
diff --git a/docs/hardware/zh/sidebar.yaml b/docs/hardware/zh/sidebar.yaml
index d928faed..502b6319 100644
--- a/docs/hardware/zh/sidebar.yaml
+++ b/docs/hardware/zh/sidebar.yaml
@@ -507,6 +507,20 @@ items:
file: kvm/NanoKVM_USB/deployment.md
- label: FAQ
file: kvm/NanoKVM_USB/faq.md
+- label: Cluster
+ items:
+ - label: NanoCluster
+ items:
+ - label: 简介
+ file: cluster/NanoCluster/index.md
+ - label: 快速上手
+ file: cluster/NanoCluster/use.md
+ - label: 应用开发
+ items:
+ - label: k3s 部署
+ file: cluster/NanoCluster/k3s.md
+ - label: distcc 部署
+ file: cluster/NanoCluster/distcc.md
# - label: Maix Audio
# items:
# - label: MA USB 16
diff --git a/pages/index/en/nanocluster.html b/pages/index/en/nanocluster.html
new file mode 100644
index 00000000..38a68239
--- /dev/null
+++ b/pages/index/en/nanocluster.html
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/pages/index/zh/nanocluster.html b/pages/index/zh/nanocluster.html
new file mode 100644
index 00000000..38a68239
--- /dev/null
+++ b/pages/index/zh/nanocluster.html
@@ -0,0 +1,14 @@
+
\ No newline at end of file