Medius
GuideDocsDashboardComparisonChangelog
Install

Comparison

OverviewDevicesPassthroughInjected motionControl linkButtons and keysRecoveryFeaturesSoftwareMethod
Medius / Comparison

Control link

How fast each box replies to a query, how many moves it accepts (paced or clumped), and what it does with malformed input.

Query round trip

A program sent each box 3,000 queries one at a time, in two runs, timed on the PC's USB bus.

Query round trip, p50
QueryStockMediusResult
Versionkm.version against QUERY(VERSION)177-184 µs219 µsStock
Statuskm.moving against QUERY(HEALTH)176-177 µs166 µsMedius
Query round trip, p95
QueryStockMediusResult
Versionkm.version against QUERY(VERSION)240 µs291-293 µsStock
Statuskm.moving against QUERY(HEALTH)234-235 µs230-239 µsEqual

Paced moves, mouse still

One-count moves at a steady rate into a still mouse: stock's binary and text forms against Medius's MOVE frames, sent in 1 ms batches unless the table says otherwise. Each count adds 1 to the clone's X.

Counts arriving from 1 s of moves, binary

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
500/s500/500500/500Equal
1,000/s1,000/1,0001,000/1,000Equal
1,500/s1,500/1,5001,500/1,500Equal
2,000/s2,000/2,0002,000/2,000Equal
5,000/s5,000/5,0005,000/5,000Equal
Counts arriving from 1 s of moves, text

Stock km.moveMedius MOVE

Moves/sStockkm.moveMediusMOVEResult
500/s500/500500/500Equal
1,000/s1,000/1,0001,000/1,000Equal
1,500/s1,500/1,5001,500/1,500Equal
2,000/s2,000/2,0002,000/2,000Equal
5,000/s5,000/5,0005,000/5,000Equal
Counts arriving from 1 s of moves, one move per write

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
1,000/s1,000/1,0001,000/1,000Equal
2,000/s2,000/2,0002,000/2,000Equal
5,000/s5,000/5,0005,000/5,000Equal
Counts arriving from 5 s of moves, binary

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
250/s1,250/1,2501,250/1,250Equal
500/s5,000/5,0005,000/5,000Equal
1,000/s5,000/5,0005,000/5,000Equal
2,000/s10,000/10,00010,000/10,000Equal
Counts arriving from 5 s of moves, text

Stock km.moveMedius MOVE

Moves/sStockkm.moveMediusMOVEResult
250/s1,250/1,2501,250/1,250Equal
500/s5,000/5,0005,000/5,000Equal
1,000/s5,000/5,0005,000/5,000Equal
2,000/s10,000/10,00010,000/10,000Equal

Paced moves, mouse moving

The same moves into a 1 kHz mouse whose Y moves 1-10 and back every 200 ms. Here stock refuses some moves, replying DE AD 01 00 18 FF to a binary move and ERR to a text one.

Counts arriving from 1 s of moves, binary

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
125/s125/125125/125Equal
500/s500/500500/500Equal
1,000/s999/1,0001,000/1,000Medius
1,500/s1,498/1,5001,500/1,500Medius
2,000/s1,966/2,0002,000/2,000Medius
3,000/s2,093/3,0003,000/3,000Medius
5,000/s2,095/5,0005,000/5,000Medius
Counts arriving from 1 s of moves, text

Stock km.moveMedius MOVE

Moves/sStockkm.moveMediusMOVEResult
125/s124/125125/125Medius
500/s500/500500/500Equal
1,000/s1,000/1,0001,000/1,000Equal
1,500/s1,500/1,5001,500/1,500Equal
2,000/s1,999/2,0002,000/2,000Medius
3,000/s1,962/3,0003,000/3,000Medius
5,000/s2,089/5,0005,000/5,000Medius
Counts arriving from 1 s of moves, one move per write

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
1,000/s999/1,0001,000/1,000Medius
2,000/s1,963/2,0002,000/2,000Medius
5,000/s2,023/5,0005,000/5,000Medius
Counts arriving from 5 s of moves, binary

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
125/s625/625625/625Equal
250/s1,249/1,2501,250/1,250Medius
500/s4,998/5,0005,000/5,000Medius
1,000/s4,997/5,0005,000/5,000Medius
Counts arriving from 5 s of moves, text

Stock km.moveMedius MOVE

Moves/sStockkm.moveMediusMOVEResult
125/s625/625625/625Equal
250/s1,250/1,2501,250/1,250Equal
500/s5,000/5,0005,000/5,000Equal
1,000/s4,997/5,0005,000/5,000Medius

Move size

Moves of 10, 100 and 1,000 counts each, paced in 1 ms batches for 1 s into a still mouse.

Counts arriving from 1 s of 10-count moves, binary

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
500/s5,000/5,0005,000/5,000Equal
1,000/s10,000/10,00010,000/10,000Equal
1,500/s15,000/15,00015,000/15,000Equal
2,000/s20,000/20,00020,000/20,000Equal
5,000/s50,000/50,00050,000/50,000Equal
Counts arriving from 1 s of 100-count moves, binary

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
500/s50,000/50,00050,000/50,000Equal
1,000/s100,000/100,000100,000/100,000Equal
1,500/s150,000/150,000150,000/150,000Equal
2,000/s200,000/200,000200,000/200,000Equal
5,000/s500,000/500,000500,000/500,000Equal
Counts arriving from 1 s of 1,000-count moves, binary

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
500/s500,000/500,000500,000/500,000Equal
1,000/s1,000,000/1,000,0001,000,000/1,000,000Equal
1,500/s1,500,000/1,500,0001,500,000/1,500,000Equal
2,000/s2,000,000/2,000,0002,000,000/2,000,000Equal
5,000/s5,000,000/5,000,0005,000,000/5,000,000Equal
Counts arriving from 1 s of 10-count moves, text

Stock km.moveMedius MOVE

Moves/sStockkm.moveMediusMOVEResult
500/s5,000/5,0005,000/5,000Equal
1,000/s10,000/10,00010,000/10,000Equal
1,500/s15,000/15,00015,000/15,000Equal
2,000/s20,000/20,00020,000/20,000Equal
5,000/s50,000/50,00050,000/50,000Equal
Counts arriving from 1 s of 100-count moves, text

Stock km.moveMedius MOVE

Moves/sStockkm.moveMediusMOVEResult
500/s50,000/50,00050,000/50,000Equal
1,000/s100,000/100,000100,000/100,000Equal
1,500/s150,000/150,000150,000/150,000Equal
2,000/s200,000/200,000200,000/200,000Equal
5,000/s500,000/500,000500,000/500,000Equal
Counts arriving from 1 s of 1,000-count moves, text

Stock km.moveMedius MOVE

Moves/sStockkm.moveMediusMOVEResult
500/s500,000/500,000500,000/500,000Equal
1,000/s1,000,000/1,000,0001,000,000/1,000,000Equal
1,500/s1,500,000/1,500,0001,500,000/1,500,000Equal
2,000/s2,000,000/2,000,0002,000,000/2,000,000Equal
5,000/s5,000,000/5,000,0005,000,000/5,000,000Equal

Moves in one write

One write holding a clump of one-count moves, then 100 more paced 1 ms apart. Stock's binary moves are 9 bytes, its text moves 14, Medius's frames 12.

Counts arriving from one write of moves, binary

Stock MOVE (0x18)Medius MOVE

Moves in the writeStockMOVE (0x18)MediusMOVEResult
88/88/8Equal
1616/1616/16Equal
2020/2020/20Equal
2424/2424/24Equal
2856/5656/56Equal
2958/5858/58Equal
3029/6060/60Medius
Counts arriving from one write of moves, text

Stock km.moveMedius MOVE

Moves in the writeStockkm.moveMediusMOVEResult
88/88/8Equal
1616/1616/16Equal
Parser after one write of 30 binary moves

Stock MOVE (0x18)Medius MOVE

WriteStockMOVE (0x18)MediusMOVEResult
30 moves, 270 bytes for stockOne command behind until a power cycleIn stepMediusStock defect

Fast paced moves

One-count moves paced in 1 ms batches for 2 s into a still mouse: stock's binary form at each rate and its text form at 8,000/s, against Medius at the same rates. Stock was power-cycled after each run that left its parser one command behind.

Counts arriving from 2 s of fast moves

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
5,00020,000/20,00020,000/20,000Equal
7,00028,000/28,00028,000/28,000Equal
10,00039,982/40,00040,000/40,000Medius
15,00026,805/30,00030,000/30,000Medius
20,00026,577/40,00040,000/40,000Medius
Counts arriving from 2 s of text moves at 8,000/s

Stock km.moveMedius MOVE

RunsStockkm.moveMediusMOVEResult
8,000/s96,000/96,00096,000/96,000Equal

Clumped and back-to-back writes

One-count binary moves into a still mouse, written in clumps every 16 ms (as a sender whose timer wakes every 16 ms writes them), or 12,871 back to back in 4,096-byte writes. Stock was power-cycled after each run that left its parser one command behind.

Counts arriving from moves written in clumps every 16 ms

Stock MOVE (0x18)Medius MOVE

Moves/sStockMOVE (0x18)MediusMOVEResult
1,000/s, 16 per write1,000/1,0001,000/1,000Equal
2,000/s, 32 per write92/2,0002,000/2,000Medius
Counts arriving from 12,871 moves written back to back

Stock MOVE (0x18)Medius MOVE

WriteStockMOVE (0x18)MediusMOVEResult
4,096-byte writes138/12,87112,871/12,871Medius
Parser afterwards

Stock MOVE (0x18)Medius MOVE

WriteStockMOVE (0x18)MediusMOVEResult
2,000/s, 32 per writeOne command behind until a power cycleIn stepMedius
12,871 moves back to backOne command behind until a power cycleIn stepMedius

Malformed input

Malformed input sent to each box, then a valid move. One try each.

Valid move after the malformed input

Stock km.moveMedius MOVE(NOW)

Malformed inputStockkm.moveMediusMOVE(NOW)Result
64 KB of random bytesArrivesArrivesEqual
Half a move, the valid move 100 ms laterLostArrivesMedius
Half a move, the valid move straight afterLostLostEqual
Move with a length field too longLostArrivesMedius
Unknown commandArrivesArrivesEqual
Move too shortArrivesArrivesEqual
5-count move with one bit flippedArrivesArrivesEqual
Move written one byte a millisecondArrivesArrivesEqual
100 moves, a zero byte after eachArrivesArrivesEqual
Counts moved by the malformed input
Malformed inputStockMediusResult
64 KB of random bytes00Equal
Unknown command00Equal
Move too short00Equal
5-count move with one bit flipped40Medius
Replies to queries afterwards
CheckStockMediusResult
After each malformed inputCorrectCorrectEqual

On this page

Query round tripPaced moves, mouse stillPaced moves, mouse movingMove sizeMoves in one writeFast paced movesClumped and back-to-back writesMalformed input
Medius

Firmware for the MAKCU box.

Guide

  • Start here
  • Devices
  • Options
  • Help
  • Changelog

Docs

  • Native API
  • Rust
  • C and C++
  • Python
  • AI & LLMs

Dashboard

  • Set up
  • Device
  • Update
  • Flash
  • Changelog
  • Stats

Comparison

  • Overview
  • Devices
  • Injected motion
  • Features
  • Software
  • Method

Community

  • Discord
  • GitHub
  • crates.io
  • PyPI
© 2026 K4TECHPrivacymedius.k4tech.net