<!-- Source: https://medius.k4tech.net/comparison -->
# Stock vs Medius

Stock MAKCU firmware V4.094 and Medius 3.4.6, tested the same way on two MAKCU boxes. The main results from each area are below, and each area's page has the rest.

## DevicesAll results

| Test | Stock | Medius | Result |
| --- | --- | --- | --- |
| [Native data reaching the PC](/comparison/devices/devices-shapes.md)Wooting 60HE+ | An interface sends nothing | Not cloned | Medius |
| [Interval the PC polls at](/comparison/devices/devices-intervals.md)Four mice with a 10 ms intervalIncluding a two-mouse device and a mouse with two configurations | 1 ms | Native interval | Medius[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |
| [HID driver on the PC](/comparison/devices/devices-report-size.md)768-2,047 bytes | Doesn't load | Loads | Medius[Stock defect](/comparison/defect-devices-stock-report-over-512.md) |
| [Reply the PC gets](/comparison/devices/devices-endpoint-0.md)HID class descriptor | STALL | Native reply | Medius[Stock defect](/comparison/defect-devices-stock-hid-descriptor-stall.md) |

## PassthroughAll results

| Test | Stock | Medius | Result |
| --- | --- | --- | --- |
| [Mouse reports reaching the PC](/comparison/passthrough/pass-relay.md)1 kHz mouse | All, once, in order | All, once, in order | Equal |
| [Report latency, p50](/comparison/passthrough/pass-latency.md)1 kHz mouse | 1.43-1.44 ms | 1.02-1.04 ms | Medius |
| [Report latency, p50](/comparison/passthrough/pass-latency.md)125 Hz mouseStock's clone declares 1 ms, the mouse 8 ms (see Poll interval) | 1.32-1.37 ms | 4.50-4.52 ms | Stock[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |
| [Reports read from a 1 kHz mouse in about 15.5 s](/comparison/passthrough/pass-inject.md)Injecting 1,000 moves/s | 7,133-7,201 | 15,540-15,584 | Medius[Stock defect](/comparison/defect-pass-inject-reads.md) |
| [What reaches the real device](/comparison/passthrough/pass-pc-device.md)Switch to configuration 2, then back | Clone reconnects instead | Passed on | Medius[Stock defect](/comparison/defect-pass-stock-config-reconnect.md) |
| [What reaches the PC](/comparison/passthrough/pass-device-pc.md)A STALL on its interrupt endpoint | Reaches the PC | Reaches the PC | Equal |

## Injected motionAll results

| Test | Stock | Medius | Result |
| --- | --- | --- | --- |
| [Default move latency, p50](/comparison/injection/inj-latency.md)Still mouse, 1 count | 64.1 ms | 0.969-1.010 ms | Medius |
| [Immediate move latency, p50](/comparison/injection/inj-latency.md)Moving 125 Hz mouse, 1 count | 4.25-4.34 ms | 4.68-5.02 ms | Stock[Stock defect](/comparison/defect-devices-stock-mouse-interval.md) |
| [Default moves with their first count within 0.5 s](/comparison/injection/inj-latency.md)Moving 125 Hz mouse, 1 count | 400/400 | 400/400 | Equal |
| [Reports carrying only injected motion](/comparison/injection/inj-reports-emitted.md)Moving 1 kHz mouse | 2,617-2,648 | 0 | Medius |
| [Counts arriving within 1 s from three 10-count moves](/comparison/injection/inj-fresh-clone.md)No native report yet | 0/30 | 30/30 | Medius[Stock defect](/comparison/defect-inj-fresh-clone-no-injection.md) |

## Control linkAll results

| Test | Stock | Medius | Result |
| --- | --- | --- | --- |
| [Query round trip, p50](/comparison/control-link/link-queries.md)Versionkm.version against QUERY(VERSION) | 177-184 µs | 219 µs | Stock |
| [Query round trip, p50](/comparison/control-link/link-queries.md)Statuskm.moving against QUERY(HEALTH) | 176-177 µs | 166 µs | Medius |
| [Valid move after the malformed input](/comparison/control-link/link-malformed.md)Half a move, the valid move 100 ms later | Lost | Arrives | Medius |
| [Counts moved by the malformed input](/comparison/control-link/link-malformed.md)5-count move with one bit flipped | 4 | 0 | Medius |

## Buttons, keys and locksAll results

| Test | Stock | Medius | Result |
| --- | --- | --- | --- |
| [Native press after the injection](/comparison/input/input-together.md)Native left held, box injects a left release | Still held | Still held | Equal |
| [Native input reaching the PC](/comparison/input/input-lock-leak.md)X locked, box injecting Y at 1 kHz | None | None | Equal |

## RecoveryAll results

| Test | Stock | Medius | Result |
| --- | --- | --- | --- |
| [Left button 3 s after the program exits](/comparison/recovery/recovery-program-exit.md)Pressed, then the port closed | Still held | Released | Medius[Stock defect](/comparison/defect-recovery-exit-held.md) |
| [Replug times](/comparison/recovery/recovery-replug.md)Unplug to clone gone | 0.19 s | 0.45 s | Stock |
| [First move after the clone is back](/comparison/recovery/recovery-pc-restart.md)Port off 3 s, then on | Sometimes held >1 s | Arrives at once | Medius[Stock defect](/comparison/defect-recovery-restart-move-held.md) |
| [Real device while the PC sleeps](/comparison/recovery/recovery-pc-sleep.md)Mouse | Suspended | Suspended | Equal |

## FeaturesAll results

| Test | Stock | Medius | Result |
| --- | --- | --- | --- |
| [Absolute move on a virtual screen](/comparison/features/feat-motion.md)Moves | `km.moveto` | No | Stock |
| [Drive the pad state the PC gets](/comparison/features/feat-pads.md)Pad commands | `km.controller_state` | No | Stock |
| [Scale motion, 0-255%](/comparison/features/feat-locks.md)Motion scaling | No | `LOCK` | Medius |
| [Control transfer to the real device](/comparison/features/feat-device.md)Device commands | No | `TRANSFER` | Medius |

## SoftwareAll results

| Test | Stock | Medius | Result |
| --- | --- | --- | --- |
| [KMBox Net programs](/comparison/software/software-programs.md)Program supportMove, wheel, three buttons and keys only | Toolkit Forwarding mode | No | Stock |
| [Downloads of each box's packages](/comparison/software/software-adoption.md)PyPI, last 30 daysmakcu, pymakcu and makxd against medius | 3,854 | 1,106 | Stock |
| [Members](/comparison/software/software-community.md)Discord | 28,413 | 600 | Stock |
| [Previous build kept as a fallback](/comparison/software/software-updates.md)Updates | No | Bootloader rollback | Medius |

## Defects

| Box | Defect | Section |
| --- | --- | --- |
| Stock | Report descriptors >512 bytes aren't served, so the PC's HID driver doesn't load for that interface. | [Large report descriptors](/comparison/devices/devices-report-size.md) |
| Stock | The PC's request for the HID class descriptor gets a STALL instead of the native reply. | [Endpoint 0 replies](/comparison/devices/devices-endpoint-0.md) |
| Stock | While injecting, even at 10 moves/s, stock reads a 1 kHz mouse whose speed varies only ~430-500 times/s. | [Reads while injecting](/comparison/passthrough/pass-inject.md) |
| Stock | A move or click sent to a new clone is lost until the real device sends its first report (0/3 tries arrived within 1 s). | [Move into a new clone](/comparison/injection/inj-fresh-clone.md) |
| Stock | After the PC turns the clone's port off and on, the first injected move waits for the next native report: >1 s in 6/10 tries with a mouse reporting every 2 s. | [PC restart](/comparison/recovery/recovery-pc-restart.md) |
| Stock | If a program closes the port while holding a button, the button stays held until another program releases it or the box restarts. | [Program exit](/comparison/recovery/recovery-program-exit.md) |
| Stock | Default moves at 1,000/s into a moving 1 kHz mouse lose counts: 10/15,000 and 13/15,000 in two runs. | [Counts arriving](/comparison/injection/inj-totals.md) |
| Stock | When the PC switches the clone's configuration, stock reconnects the clone instead of relaying the switch to the real device (3/3 tries). | [PC to real device](/comparison/passthrough/pass-pc-device.md) |
| Stock | Moves written in a burst (30 binary moves in one write, 32 per write every 16 ms, or back to back) lose commands, and every later command then runs one command late until a power cycle. | [Moves in one write](/comparison/control-link/link-one-write.md) |
| Stock | Neither an injected move nor the real device's remote wakeup wakes a sleeping PC. | [PC sleep](/comparison/recovery/recovery-pc-sleep.md) |
| Stock | Mouse clones declare a 1 ms poll interval even when the mouse declares 2-10 ms (a 125 Hz mouse's clone is polled at 1 kHz). Stock's lower latency below 1 kHz comes from this. | [Poll interval](/comparison/devices/devices-intervals.md) |
| Medius | None found |  |
