<!-- Source: https://medius.k4tech.net/comparison/method -->
# Method

How each result was measured.

## Rig

Both boxes are wired like this, behind the same hub on the same PC.

```
+-------------------------+
|    PC: tests, usbmon    |
+------------+------------+
             |
+------------+------------+
|           hub           |
+---+--------+--------+---+
    |        |        |
  USB1     USB2   emulator
  clone   control  control
    |        |        |
+---+--------+---+    |
|      box       |    |
+-------+--------+    |
        | USB3        |
+-------+-------------+---+
|   USB device emulator   |
+-------------------------+
```

| Item | Detail |
| --- | --- |
| Firmware | Stock V4.094, Medius 3.4.6 |
| Real device | A USB device emulator on each box's USB3, presenting the same device and native reports to both |
| Hub | One Genesys Logic hub for both boxes. One box was tested at a time. The other box's emulator presented a silent mouse |
| PC | Linux |

## Rules

| Rule | Detail |
| --- | --- |
| Row | One condition, run on both boxes with the same test, settings, sample size and timing layer |
| Table | One quantity in one unit |
| Time | The median (p50), unless the table names another statistic |
| Range | Lowest to highest over the runs. The fainter part of a bar spans it |
| Bar | Drawn to the largest value in its table, or in its row on the Overview |
| Result | The box ahead, worked out from the values. The box behind is dimmed |
| Faithful | If a test records native behaviour, the box that matches it is ahead |
| Equal | The two ranges overlap, or the outcomes match |
| Differs | The boxes behave differently. Neither is better, or no test shows which is faithful |
| Defect | A fault that reproduces, marked on its row and listed on the Overview |

## Timing layers

| Layer | Detail |
| --- | --- |
| Wire | USB packets on the PC's bus, timed by the kernel's usbmon |
| evdev | Input events, timed by the kernel as the HID driver handles each report |
| hidraw | Each report byte for byte, timed when the reading program wakes |
| Host | The PC's clock, read by the test program when it writes a command, or when the clone connects or disconnects |
| Emulator | When the emulator queued each native report, on its clock, mapped to the bus clock to within ±95 µs by its control link's packets (usbmon) |

## Data

The results as JSON, all in one file or split by area.

| File | Area |
| --- | --- |
| [comparison.json](/comparison.json) | All |
| [devices.json](/comparison/devices.json) | Devices |
| [passthrough.json](/comparison/passthrough.json) | Passthrough |
| [injection.json](/comparison/injection.json) | Injected motion |
| [control-link.json](/comparison/control-link.json) | Control link |
| [input.json](/comparison/input.json) | Buttons, keys and locks |
| [recovery.json](/comparison/recovery.json) | Recovery |
| [features.json](/comparison/features.json) | Features |
| [software.json](/comparison/software.json) | Software |
