<!-- Source: https://medius.k4tech.net/native -->
# Medius Native API

_The binary control protocol_

Medius is replacement firmware for MAKCU-class USB input-passthrough boxes plus an open binary control protocol. The box sits inline between a USB device and a PC: the real device (mouse, keyboard, or combo) passes through unchanged while your program injects input of its own (cursor and buttons for a mouse, keys and media for a keyboard) over a separate USB-serial link. Drive it from any language; the Rust [library](/library.md) is the official client.

| Property | Value |
| --- | --- |
| Firmware version | `3.0.0` |
| Protocol version | `3` |
| Transport | 4 Mbaud, framed-only ([CH343](https://www.wch-ic.com/products/CH343.html)) |
| USB ID | VID `0x1A86` / PID `0x55D3` |
| Delivery | Fire-and-forget; [`QUERY`](/native/commands/requests.md#requests) → [`RESP`](/native/commands/requests.md#resp) is the only round-trip |

Before you talk to the box:

| Topic | What to know |
| --- | --- |
| Protocol version | These pages describe version `3`. Confirm it during the [handshake](/native/connection.md#handshake) from the `proto_ver` field of the [`VERSION`](/native/commands/requests.md#version) reply; a different value means firmware these pages don't cover. |
| Wire format | The box speaks [framed binary](/native/frame.md) from the first byte. No startup baud, no text mode. |
| Finding the port | Scan for the CH343's VID/PID pair to locate the box's serial port. |
| Correlation | [Fire-and-forget](/native/injection.md#fire-and-forget) has no ack or echo. A [`QUERY`](/native/commands/requests.md#requests) is correlated to its [`RESP`](/native/commands/requests.md#resp) by [`SEQ`](/native/frame.md#seq). |

## Overview

- [Quickstart](/native/quickstart.md): Open the port and inject
- [Architecture](/native/architecture.md): Clone, passthrough, inject
- [Hardware](/native/hardware.md): Three USB ports and the chips

## Protocol

- [Transport](/native/transport.md): 4 Mbaud, framed-only
- [Connection](/native/connection.md): Handshake and hello
- [Frame Format](/native/frame.md): SOF, type, CRC16
- [Injection Model](/native/injection.md): Accumulator and emission

## Commands

- [Inject](/native/commands/inject.md): Press buttons, keys, media
- [Move](/native/commands/move.md): Cursor and wheel
- [Lock](/native/commands/lock.md): Block a physical input
- [Catch](/native/commands/catch.md): Stream physical input
- [Clip](/native/commands/clip.md): Buffered clip playback
- [Requests](/native/commands/requests.md): QUERY and its RESP, all ten selectors
- [LED](/native/commands/led.md): Override the status LEDs
- [Admin](/native/commands/admin.md): RESET, REBOOT, LOG
- [Option](/native/commands/option.md): Imperfect clones, movement riding, emit pacing
- [Usage IDs](/native/commands/usage.md): Button, key, media numbers

## Reference

- [Flashing](/native/flashing.md): Reboot to ROM and flash
- [Troubleshooting](/native/troubleshooting.md): Common problems and fixes
