Live Agent working · engine-01 Placer/router engine positioning
DC-01 — Getting Started

Setup Guide

Everything you need to assemble, flash, and boot a KVM Board for the first time.

* * *
Hardware Requirements
CompositorMV-01 Milk-V Duo SSG2000 SoC, 512MB RAM, RISC-V + ARM
HID ControllerES-01 ESP32-S3-DevKitC-1N16R8 variant (16MB flash, 8MB PSRAM)
Carrier PCBPB-01 KVM Carrier Board6-layer, 120 x 92mm, order from JLCPCB/PCBWay
SD CardSD-01 microSD 8GB+Class 10 or better for Duo S boot image
USB CableCB-01 USB-A to targetConnects USB2514B hub to target machine
HDMI CableCB-02 HDMI 1.4Target video output to TC358743 capture
PowerPW-01 5V 2A USB-CPowers the carrier board and both modules
* * *
Flashing the ESP32-S3 Firmware

The ESP32-S3 runs a Rust firmware that presents as a USB HID composite device (keyboard + mouse + absolute pointer). It receives commands over UART from the Duo S and injects them into the target machine.

Step 1 — Install Rust ESP Toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install espup
espup install
. ~/export-esp.sh
Step 2 — Connect and Flash

Connect the ESP32-S3-DevKitC to your computer via its USB port. Hold the BOOT button while pressing RST to enter download mode if needed.

cd firmware/esp32-hid-rs
cargo +esp run --release
Step 3 — Verify

After flashing, the ESP32-S3 will enumerate as a USB HID device. On Linux, check with lsusb — you should see a composite HID device (keyboard + mouse).

* * *
Building the Duo S Image

The Milk-V Duo S runs a custom Linux image with KVMD, go2rtc, and all dependencies pre-installed. The build uses Milk-V's Buildroot SDK with a KVM overlay.

Step 1 — Build the Image

Requires Docker. The first build takes approximately 20 minutes.

mise run duos:build
Step 2 — Flash to SD Card
# Replace /dev/sdX with your SD card device
dd if=.tools/duos-kvmd.img of=/dev/sdX bs=1M status=progress
sync
Step 3 — Insert and Boot

Insert the microSD card into the Duo S module on the carrier board. Apply power via USB-C. The KVMD daemon starts automatically on boot via the S99kvmd init script.

* * *
First Boot

After powering on, the Duo S boots Linux and starts the KVM pipeline automatically.

1. Wait for Boot
The green LED on the Duo S blinks during boot. Once it turns solid, KVMD is running. This takes approximately 15 seconds.
2. Connect to the Web UI
Open a browser and navigate to http://<duo-s-ip>:8080. You should see the KVM control interface with a live video feed from the target machine.
3. Test HID Input
Click the video area to capture your mouse. Type on your keyboard — keystrokes are sent to the target. Press Escape to release capture.
4. ATX Control
Use the power controls in the toolbar to power on, power off (short/long press), or reset the target machine via the optocoupler front-panel connections.
* * *
Network Setup
Ethernet (Recommended)

Connect an Ethernet cable to the Duo S RJ45 port. The device requests a DHCP address by default. Check your router or use nmap -sn 192.168.1.0/24 to find the assigned IP.

USB-NCM (Fallback)

If Ethernet is not available, the Duo S exposes a USB-NCM (Network Control Model) interface over its USB-C port. Connect it to your workstation and the device appears as a network adapter.

# The Duo S USB-NCM interface uses a fixed IP
# Access the web UI at:
http://192.168.42.1:8080
Static IP Configuration

To set a static IP, edit /etc/network/interfaces on the Duo S SD card before first boot. The file is in the root filesystem partition.

* * *