Skip to Main Content
Lightning Talk Intermediate GPL-3.0

From 3 seconds to 30ms: takeaways from building Tandem, first ever native screen extender for Linux

Proposal status is Review Pending
Session Description

On Windows, turning a spare phone or tablet into a second monitor has been a solved problem for years. On Linux, it hasn't. The tools I found show your screen inside the phone's browser: mirroring in a tab, not a display your desktop knows about. Tandem changes that. It is the first native screen extenders for Linux. A Linux daemon creates a real virtual monitor, the GPU encodes it, and a native Android app decodes it in hardware, over USB or Wi-Fi. Drag a window off your laptop's edge and it lands on your phone, the way it would on an HDMI screen.

This talk follows the project from an idea in my notes to a release people now install, through the three walls I hit:

  1. Making Linux believe a monitor exists. The kernel's virtual display driver crashed my session and rendered everything on the CPU. The way out was a GPU backed virtual output inside the compositor.

  2. The 3 second delay. Cutting the media stack brought it to 1 second, and then nothing helped, until I found that the phone's video player was holding frames back on purpose. Writing my own decoder app took it to about 30 ms.

  3. Real hardware. Phones whose decoders showed only a black screen, and laptops where copying frames slowed the main screen too, until zero-copy capture removed the copy.

There will be a live demo. The audience guesses the delay before we measure it on stage, and a volunteer drags a window from the laptop onto the phone. The rest of the build (security and pairing, GNOME support, the bugs users found) I'm happy to go through after the talk.

Key Takeaways
  • How a virtual monitor is created on Linux, and why it has to be drawn on the GPU.

  • Where the delay in live video streaming comes from, and what took it from 3 seconds to about 30 ms.

  • What zero-copy capture (DMA-BUF) is, and when it matters.

  • What it takes to bring a solo FOSS project from first idea to a public release.

  • A free way to get a second screen for your laptop from the phone or tablet you already have.

References

Session Categories

Introducing a FOSS project or a new version of a popular project
Tutorial about using a FOSS project
Story of a FOSS project - from inception to growth
Talk License: GPL-3.0
Speakers are hidden and anonymized for this event.