Status: ongoing

Runtime: 2017 -

Participants: Florian Bockes, Andreas Schmid

Keywords: WIP, Latency, Prototype



- Get a better understanding of latency and latency jitter
- Devolpment of a tool for exact measurement in order to make different devices comparable for further research


Currently we improve our testing prototype (third iteration) and gather more data from different devices



The LagBox is based on a Raspberry Pi 2. A optocoupler, which can be switched by the RPi's GPIO interface, is connected to a button of the input device (Fig. 1) and can trigger a button press.
For this method of testing input latency, it is necessary to modify the input devices by connecting the transistor-side of an optocoupler to the button which should be tested (Fig. 2). Furthermore, this method is not suited to test the latency of input devices that offer a non-physical type of interaction, like touch displays.
An advantage of this method over non-invasive approaches is the fact, that external influences are reduced to a minimum due to the direct electric connection between the testing device and the input device. This method also allows it to trigger a large number of button presses in a very short period of time. Thus, it becomes easy to conduct stress tests on the hardware or to collect big amounts of data.

Figure 1: LagBox circuit
Figure 2: Hacked Gamepad

List of tested devices (invasive method)
Logitech Rx250
Logitech Wingman
Speedlink Strike (2x)
Gembird Mini
Arduino Micro
Logitech G300
Logitech G5
Logitech G15 Keyboard


On startup, the software of the LagBox requires the user to press the “hacked” button on the input device to determine which input event to listen to. Afterwards, the actual testing process begins. The RPi closes the optocoupler by writing to the corresponding GPIO pin, logs the current timestamp and waits for an input event by the input device connected via USB. Once the input event arrives, the optocoupler is opened again, another timestamp is logged and the difference is written to a logfile. Then we wait for a certain time (200ms seems to be fine), so the circuit can discharge. This testing process is repeated several (right now 1000) times to get a big enough sample size of input latencies.
The last latency as well as the overall progress of the test are shown on a minimalist GUI (Fig. 3).

Figure 3: GUI of the LagBox


Figure 4: Violinpots of latency distribution (Zero-Polling, 1000 measurements)


Documents tagged "Latency" in our Zotero library