sipeed/NanoKVM

Affordable, Multifunctional, Nano RISC-V IP-KVM

TypeScript

6,545

687 commits

updated Sep 29, 2026

See the code

README

NanoKVM

🌟 What is NanoKVM?

NanoKVM is a series of compact, open-source IP-KVM devices based on the LicheeRV Nano (RISC-V). It lets you remotely access and control computers as if you were sitting in front of them, making it useful for servers, embedded systems, and other headless machines.

📦 Product Family

Choose the NanoKVM model that best fits your deployment:

  • NanoKVM-Cube Lite: A barebones kit for DIY users and bulk deployments.
  • NanoKVM-Cube Full: A ready-to-use kit with a case, accessories, and a pre-flashed system SD card.
  • NanoKVM-PCIe: A PCIe-bracket form factor for internal chassis mounting. It draws power from the PCIe slot and supports optional Wi-Fi and PoE.
  • NanoKVM-Pro: A higher-performance version with major upgrades:
    • Resolution: Up to 4K@30fps / 2K@60fps.
    • Network: 1Gbps Ethernet + PoE + Wi-Fi 6, upgraded from 100Mbps Ethernet.
    • Latency: Hardware-accelerated encoding reduces latency from 100-150ms to 50-100ms.
NanoKVM Product Family

If you are looking for a USB-based KVM solution, check out NanoKVM-USB.

🛠️ Technical Specifications

FeatureNanoKVM-ProNanoKVM (Cube/PCIe)GxxKVMJxxKVM
CoreAX630C 2xA53 1.2GSG2002 1xC906 1.0GRV1126 4xA7 1.5GRV1106 1xA7 1.2G
Memory & Storage1G LPDDR4X + 32G eMMC256M DDR3 + 32G microSD1G DDR3 + 8G eMMC256M DDR3 + 16G eMMC
SystemNanoKVM / PiKVMNanoKVMGxxKVMJxxKVM
Resolution4K@30fps / 2K@60fps1080P@60fps4K@30fps / 2K@60fps1080P@60fps
HDMI Loopout4K loopout———
Video EncodingMJPEG / H.264 / H.265MJPEG / H.264MJPEG / H.264MJPEG / H.264
Audio Transmit✓—✓—
UEFI / BIOS✓✓✓✓
Emulated USB Keyboard & Mouse✓✓✓✓
Emulated USB ISO✓✓✓✓
IPMI✓✓✓—
Wake-on-LAN✓✓✓✓
Web Terminal✓✓✓✓
Serial Terminal2 channels2 channels—1 channel
Custom Scripts✓✓——
Storage32G eMMC 300MB/s32G MicroSD 12MB/s8G eMMC 120MB/s8G eMMC 60MB/s
Ethernet1000M100M1000M100M
PoEOptionalOptional——
Wi-FiOptional Wi-Fi 6Optional Wi-Fi 6——
ATX Power Control✓✓Extra $15Extra $10
Display1.47" 320x172 LCD / 0.96" 128x64 OLED0.96" 128x64 OLED—1.68" 280x240
More FeaturesSync LED Strip / Smart Assistant———
Power Consumption0.6A@5V0.2A@5V0.4A@5V0.2A@5V
Power InputUSB-C or PoEUSB-CUSB-CUSB-C
Dimensions65x65x26mm40x36x36mm80x60x17.5mm60x43x(24~31)mm

📂 Project Structure

├── kvmapp          # APP update package
│   ├── jpg_stream  # Legacy support for direct updates from older versions
│   ├── kvm_new_app # Triggers components for kvm_system updates
│   ├── kvm_system  # Core KVM application
│   ├── server      # Front-end and back-end integration
│   └── system      # Essential system components
├── web             # NanoKVM Front-end (UI)
├── server          # NanoKVM Back-end (Service)
├── support         # Auxiliary modules (Image subsystem, status, updates, OLED, HID, etc.)
├── ...

💻 Development

Start with the guide that matches the part of NanoKVM you want to work on:

  • System support modules: Build and update the low-level hardware support components in support/sg2002/README.md.
  • Backend service: Set up, build, and understand the Go service in server/README.md.
  • Frontend UI: Develop, lint, and build the React interface in web/README.md.
  • Release packaging: Assemble the nanokvm_<version>.tar.gz update package in scripts/README.md.

Backend compilation and runtime validation require the target toolchain or a NanoKVM device. See the module-specific guides above for the latest development workflow.

Dev container (optional)

The repository ships a Dev Container setup (.devcontainer/) that layers the frontend toolchain (Node 22, pnpm 11) on top of the release builder image (RISC-V cross toolchain, Go, MaixCDK), so one container covers Go, C support-layer and web development. It is a convenience for IDE users; the make targets in the repository root remain the canonical CLI workflow.

  • Requirements: Docker plus an editor or CLI with dev container support (e.g. the VS Code "Dev Containers" extension, or devcontainer up).
  • On creation the container prepares itself automatically: support/sg2002/build update_lib (resyncs MaixCDK components with the checkout) and pnpm install for the frontend.
  • Backend: run server/build.sh for a release-equivalent binary (BoringCrypto + dl_lib RPATH). make app builds a plain development binary without those, so prefer server/build.sh whenever the result should match a release.
  • Support layer: cd support/sg2002 && ./build kvm_system (the MaixCDK virtualenv is part of the container environment).
  • Frontend: cd web && pnpm dev (VS Code forwards port 3001 automatically; other clients may need to map it themselves); see web/README.md for pointing it at a device.
  • The base image ghcr.io/sipeed/nanokvm-builder:latest is x86-64 only; on Apple Silicon it runs under emulation (works, but C builds are slow). You can also build the image locally first (make builder-image) and point the BASE_IMAGE build arg at it (e.g. via build.args in devcontainer.json). On Linux hosts the first container creation also takes a while: the container user is remapped to your uid, which re-chowns its home directory once.
  • Hardware-dependent verification still requires a real NanoKVM device; the container covers compiling, linting and mock-mode web development only.

🔩 Hardware Platform (NanoKVM Cube/PCIe)

NanoKVM is based on Sipeed LicheeRV Nano. You can find specifications, schematics, and dimensional drawings in the download station.

The NanoKVM Cube/PCIe hardware is built from these components:

  • NanoKVM Lite: LicheeRV Nano plus the HDMI-to-CSI board.
  • NanoKVM Full: NanoKVM Lite plus the NanoKVM-A/B boards and enclosure.
  • HDMI-to-CSI board: Converts the HDMI input signal.
  • NanoKVM-A board: Provides OLED, ATX control output through USB-C, auxiliary power, and physical ATX power/reset buttons.
  • NanoKVM-B board: Connects NanoKVM-A to the host computer's ATX pins for remote power control.

The NanoKVM image is built with the LicheeRV Nano SDK and MaixCDK. It is intended for NanoKVM hardware and is not a general-purpose KVM software package for other LicheeRV Nano or SG2002 products. If you want to build an HDMI input application on LicheeRV Nano or MaixCam, please contact us for technical support.

Note: Of the 256MB memory on SG2002, 158MB is currently allocated to the multimedia subsystem for video capture and processing.

NanoKVM PCB Pinout

🤝 Contributing

We welcome contributions. To get started:

  1. Fork the repository.
  2. Create a feature branch.
  3. Commit your changes.
  4. Push to the branch.
  5. Open a Pull Request.

Please keep your pull requests small and focused to facilitate easier review and merging.

🎁 Contributors who submit high-quality Pull Requests may receive a NanoKVM Cube, PCIe, or Pro as a token of our appreciation!

🛒 Where to Buy

💬 Community & Support

📜 License

This project is licensed under the GPL-3.0 License. See LICENSE for details.

sipeed/NanoKVM

Affordable, Multifunctional, Nano RISC-V IP-KVM

TypeScript

6,545

687 commits

updated Sep 29, 2026

See the code

README

NanoKVM

🌟 What is NanoKVM?

NanoKVM is a series of compact, open-source IP-KVM devices based on the LicheeRV Nano (RISC-V). It lets you remotely access and control computers as if you were sitting in front of them, making it useful for servers, embedded systems, and other headless machines.

📦 Product Family

Choose the NanoKVM model that best fits your deployment:

  • NanoKVM-Cube Lite: A barebones kit for DIY users and bulk deployments.
  • NanoKVM-Cube Full: A ready-to-use kit with a case, accessories, and a pre-flashed system SD card.
  • NanoKVM-PCIe: A PCIe-bracket form factor for internal chassis mounting. It draws power from the PCIe slot and supports optional Wi-Fi and PoE.
  • NanoKVM-Pro: A higher-performance version with major upgrades:
    • Resolution: Up to 4K@30fps / 2K@60fps.
    • Network: 1Gbps Ethernet + PoE + Wi-Fi 6, upgraded from 100Mbps Ethernet.
    • Latency: Hardware-accelerated encoding reduces latency from 100-150ms to 50-100ms.
NanoKVM Product Family

If you are looking for a USB-based KVM solution, check out NanoKVM-USB.

🛠️ Technical Specifications

FeatureNanoKVM-ProNanoKVM (Cube/PCIe)GxxKVMJxxKVM
CoreAX630C 2xA53 1.2GSG2002 1xC906 1.0GRV1126 4xA7 1.5GRV1106 1xA7 1.2G
Memory & Storage1G LPDDR4X + 32G eMMC256M DDR3 + 32G microSD1G DDR3 + 8G eMMC256M DDR3 + 16G eMMC
SystemNanoKVM / PiKVMNanoKVMGxxKVMJxxKVM
Resolution4K@30fps / 2K@60fps1080P@60fps4K@30fps / 2K@60fps1080P@60fps
HDMI Loopout4K loopout———
Video EncodingMJPEG / H.264 / H.265MJPEG / H.264MJPEG / H.264MJPEG / H.264
Audio Transmit✓—✓—
UEFI / BIOS✓✓✓✓
Emulated USB Keyboard & Mouse✓✓✓✓
Emulated USB ISO✓✓✓✓
IPMI✓✓✓—
Wake-on-LAN✓✓✓✓
Web Terminal✓✓✓✓
Serial Terminal2 channels2 channels—1 channel
Custom Scripts✓✓——
Storage32G eMMC 300MB/s32G MicroSD 12MB/s8G eMMC 120MB/s8G eMMC 60MB/s
Ethernet1000M100M1000M100M
PoEOptionalOptional——
Wi-FiOptional Wi-Fi 6Optional Wi-Fi 6——
ATX Power Control✓✓Extra $15Extra $10
Display1.47" 320x172 LCD / 0.96" 128x64 OLED0.96" 128x64 OLED—1.68" 280x240
More FeaturesSync LED Strip / Smart Assistant———
Power Consumption0.6A@5V0.2A@5V0.4A@5V0.2A@5V
Power InputUSB-C or PoEUSB-CUSB-CUSB-C
Dimensions65x65x26mm40x36x36mm80x60x17.5mm60x43x(24~31)mm

📂 Project Structure

├── kvmapp          # APP update package
│   ├── jpg_stream  # Legacy support for direct updates from older versions
│   ├── kvm_new_app # Triggers components for kvm_system updates
│   ├── kvm_system  # Core KVM application
│   ├── server      # Front-end and back-end integration
│   └── system      # Essential system components
├── web             # NanoKVM Front-end (UI)
├── server          # NanoKVM Back-end (Service)
├── support         # Auxiliary modules (Image subsystem, status, updates, OLED, HID, etc.)
├── ...

💻 Development

Start with the guide that matches the part of NanoKVM you want to work on:

  • System support modules: Build and update the low-level hardware support components in support/sg2002/README.md.
  • Backend service: Set up, build, and understand the Go service in server/README.md.
  • Frontend UI: Develop, lint, and build the React interface in web/README.md.
  • Release packaging: Assemble the nanokvm_<version>.tar.gz update package in scripts/README.md.

Backend compilation and runtime validation require the target toolchain or a NanoKVM device. See the module-specific guides above for the latest development workflow.

Dev container (optional)

The repository ships a Dev Container setup (.devcontainer/) that layers the frontend toolchain (Node 22, pnpm 11) on top of the release builder image (RISC-V cross toolchain, Go, MaixCDK), so one container covers Go, C support-layer and web development. It is a convenience for IDE users; the make targets in the repository root remain the canonical CLI workflow.

  • Requirements: Docker plus an editor or CLI with dev container support (e.g. the VS Code "Dev Containers" extension, or devcontainer up).
  • On creation the container prepares itself automatically: support/sg2002/build update_lib (resyncs MaixCDK components with the checkout) and pnpm install for the frontend.
  • Backend: run server/build.sh for a release-equivalent binary (BoringCrypto + dl_lib RPATH). make app builds a plain development binary without those, so prefer server/build.sh whenever the result should match a release.
  • Support layer: cd support/sg2002 && ./build kvm_system (the MaixCDK virtualenv is part of the container environment).
  • Frontend: cd web && pnpm dev (VS Code forwards port 3001 automatically; other clients may need to map it themselves); see web/README.md for pointing it at a device.
  • The base image ghcr.io/sipeed/nanokvm-builder:latest is x86-64 only; on Apple Silicon it runs under emulation (works, but C builds are slow). You can also build the image locally first (make builder-image) and point the BASE_IMAGE build arg at it (e.g. via build.args in devcontainer.json). On Linux hosts the first container creation also takes a while: the container user is remapped to your uid, which re-chowns its home directory once.
  • Hardware-dependent verification still requires a real NanoKVM device; the container covers compiling, linting and mock-mode web development only.

🔩 Hardware Platform (NanoKVM Cube/PCIe)

NanoKVM is based on Sipeed LicheeRV Nano. You can find specifications, schematics, and dimensional drawings in the download station.

The NanoKVM Cube/PCIe hardware is built from these components:

  • NanoKVM Lite: LicheeRV Nano plus the HDMI-to-CSI board.
  • NanoKVM Full: NanoKVM Lite plus the NanoKVM-A/B boards and enclosure.
  • HDMI-to-CSI board: Converts the HDMI input signal.
  • NanoKVM-A board: Provides OLED, ATX control output through USB-C, auxiliary power, and physical ATX power/reset buttons.
  • NanoKVM-B board: Connects NanoKVM-A to the host computer's ATX pins for remote power control.

The NanoKVM image is built with the LicheeRV Nano SDK and MaixCDK. It is intended for NanoKVM hardware and is not a general-purpose KVM software package for other LicheeRV Nano or SG2002 products. If you want to build an HDMI input application on LicheeRV Nano or MaixCam, please contact us for technical support.

Note: Of the 256MB memory on SG2002, 158MB is currently allocated to the multimedia subsystem for video capture and processing.

NanoKVM PCB Pinout

🤝 Contributing

We welcome contributions. To get started:

  1. Fork the repository.
  2. Create a feature branch.
  3. Commit your changes.
  4. Push to the branch.
  5. Open a Pull Request.

Please keep your pull requests small and focused to facilitate easier review and merging.

🎁 Contributors who submit high-quality Pull Requests may receive a NanoKVM Cube, PCIe, or Pro as a token of our appreciation!

🛒 Where to Buy

💬 Community & Support

📜 License

This project is licensed under the GPL-3.0 License. See LICENSE for details.

Significant stargazers

(top 24 of 109)

Andrey Sitnik

10,162 followers · starred Jan 2025

Luca Barbato

375 followers · starred Aug 2024

Brian McKenna

1,290 followers · starred Sep 2024

Abdelkader Boudih

645 followers · starred Aug 2024