UScreen is an open-source SuperDisplay alternative for Linux. It turns an Android 8.1+ tablet into a real extended USB display and a pressure-sensitive graphics tablet, with touch, S Pen pressure, tilt, eraser and stylus-button support.
UScreen uses a direct ADB-over-USB connection — no Wi-Fi, USB tethering, dummy HDMI plug or cloud account required. Screen and input data never leave the cable.
Tested on Bazzite (KDE Plasma, Wayland, NVIDIA) with a Samsung Galaxy Tab S9 Ultra. Packages and installation instructions cover Bazzite, Fedora, Ubuntu/Debian, Arch Linux and openSUSE.
Download the latest release · Install · Compatibility · Benchmarks · FAQ · Website
- A real second monitor, not a mirror. A virtual display is created through the EVDI kernel module; the tablet appears in your display settings and you move windows onto it.
- Pen that works like a tablet. Pressure, tilt, eraser and button arrive in Linux as a graphics-tablet device — Krita, GIMP and Blender see a tablet. A one-tap graphics tablet mode uses the pen on your own screen with zero display latency.
- Low latency, measured. About 22 ms median end-to-end over USB with H.264, 15–18 ms with HEVC, on the reference hardware — the numbers and the method are published.
- Plug in and it works. The daemon starts with your desktop, finds the tablet over adb, launches the app on it and sizes the display to its panel.
- Private by construction. Loopback-only ports guarded by a per-session token, no telemetry, no account. See SECURITY.md.
- Honest about its edges. Wi-Fi is a fallback and the stutter is quantified; KDE gets the full automation, other desktops get the display and manual mapping.
1. Linux side — pick the file for your distribution from the latest release:
| file | distribution |
|---|---|
uscreen_<ver>_amd64.deb |
Debian 12+, Ubuntu 22.04+, Mint, Pop — sudo apt install ./uscreen_*.deb |
uscreen-<ver>-1.x86_64.rpm |
openSUSE (zypper install), Fedora (RPM Fusion first, then dnf install --allowerasing) |
uscreen-<ver>-PKGBUILD.tar.gz |
Arch and derivatives — extract, makepkg -si |
uscreen-<ver>-linux-x86_64.tar.gz |
Bazzite, Nobara, anything else — extract, ./scripts/install.sh |
Then systemctl --user enable --now uscreen (the tarball installer does this
for you). Full details, including what the installer changes on the system,
in docs/installation.md.
2. Tablet — install uscreen.apk and enable USB debugging (Settings →
Developer options).
3. Plug in. The daemon forwards the ports, launches the app and the
tablet shows up as a monitor. uscreen doctor diagnoses anything that is off.
Update both halves together: since 1.1.0 they share a session token.
If UScreen replaced a second monitor for you, a star on the repo and a compatibility report help the next Linux user find it.
| host | tablet | result |
|---|---|---|
| Bazzite, KDE Plasma 6 Wayland, NVIDIA RTX 5060 | Galaxy Tab S9 Ultra, Android 14 | works — reference setup, all benchmarks |
| Arch Linux, KDE Plasma Wayland | — | works — externally verified on a real system after the v1.0.2 installer/EVDI fixes; the app connected and ran (report). The 1.1.0 PKGBUILD itself is not yet verified there (#3) |
| Debian 12 · Fedora 42 · openSUSE Tumbleweed | — | packages install and run (container-tested, no tablet) |
Any Android 8.1+ tablet with a hardware H.264 decoder should work — the display is generated to match the tablet. More in docs/compatibility.md; reports are welcome.
Measured on the reference hardware over USB (2960×1848, 90 fps target, constant-quality encoding):
| median | p95 | |
|---|---|---|
| H.264, NVENC | 18–22 ms | 23–31 ms |
| HEVC, NVENC | 15–18 ms | 20–23 ms |
| Wi-Fi fallback (H.264) | 22.8 ms | 78.6 ms, worst frames in seconds |
The tablet's hardware decoder is most of the budget (~15 ms), the USB hop 5–7 ms, the encoder under 1 ms. Method, CPU figures and limitations in docs/benchmarks.md.
Checked against official project documentation in August 2026; corrections welcome.
| UScreen | SuperDisplay | Weylus | Sunshine + Moonlight | spacedesk | |
|---|---|---|---|---|---|
| Linux host | yes | no (Windows, macOS) | yes | yes | no (Windows) |
| Real extended display | yes (EVDI) | yes | needs a separate virtual-display setup | needs an existing or dummy display | yes |
| Direct USB, no tethering | yes (adb) | yes | via adb port forward | no (network) | no (network) |
| S Pen pressure | yes | yes | yes | partial | partial |
| Tilt, eraser, button | yes | yes | pressure/tilt via browser API, no eraser | no | no |
| Hardware video encoding | NVENC / VAAPI / x264 | yes | yes (VAAPI/NVENC) | yes | yes |
| Open source | MIT | no | AGPL | GPL | no |
| Dummy HDMI plug | no | no | sometimes | often | no |
Also current: MoreSpace — a Linux host daemon with an Android app, extended display by default, USB or Wi-Fi, pressure- sensitive stylus; its documentation does not state tilt or eraser support, the USB protocol, or a license. TethrLink (GPL-3.0) — a real second monitor via GNOME's ScreenCast API, GNOME Wayland only, over USB tethering, stylus not documented. subdisplay (MIT) — a wrapper around Sunshine + Moonlight over USB tethering; a dummy plug for a true extended display, pressure but no tilt.
Everything lives in ~/.config/uscreen/config.toml and is reachable from
uscreen-gui, the ⚙ sheet in the tablet app, the tray icon, or CLI flags.
- Graphics tablet mode — flip Graphics tablet on the tablet: nothing is streamed, the pen drives your own screen, zero display latency. Switch back the same way; no restart.
- Position —
right(default),left,above,belowyour real screens. - Codec —
h264_nvencby default because every device decodes it;hevc_nvencis sharper at the same bitrate and was faster on the reference tablet.ten_bit(HEVC Main10) smooths gradient banding — the desktop is 8-bit, so it adds precision, not colour; it is not HDR. - Stream scale —
stream_scale = 2sends a quarter of the pixels for a ~6 ms lower decode time at the cost of softer text. - Several tablets —
max_tabletsup to 4, each its own screen. - Wi-Fi —
adb tcpip 5555andadb connect <ip>:5555; the daemon prefers the cable when both are there. - Updates — the app, the GUI and the tray tell you when a newer release
exists; nothing installs itself.
check_updates = falseturns it off.
Does it need Wi-Fi or USB tethering? No — a normal data-capable USB cable with USB debugging enabled on the tablet; USB tethering is not needed. Wi-Fi is an optional fallback.
Is it a mirror or an extension? An extension; a real monitor in your display settings. Graphics-tablet mode is a separate, non-display mode.
Does S Pen pressure and tilt work? Yes, plus eraser and button, as a proper tablet device.
Does it work on Bazzite / KDE Wayland? That is the reference setup. GNOME and X11 get the display and the stream; input mapping is manual there.
Does it need a dummy HDMI plug? No.
Which Android versions? 8.1 and newer.
Is anything sent to the cloud? No. Screen and input data never leave the
cable; the only outbound request is an optional version check against GitHub
(check_updates = false turns it off).
How do I uninstall it completely? SECURITY.md lists every file.
More in docs/faq.md.
- Installation · Troubleshooting
- Architecture and protocol · Development, building, releasing
- Benchmarks · Compatibility · FAQ
- Security · Changelog
Shipped: extended display over USB, S Pen with pressure/tilt/eraser, graphics-
tablet mode switchable from the tablet, plug-and-play with autostart, tray
icon, any-side placement, several tablets, HEVC and 10-bit, Wi-Fi fallback,
packages for five distribution families, uscreen doctor, measured latency.
Next: AOA transport — removing the USB-debugging requirement, the last step between this and simply plugging a cable in. Explored: HDR, currently blocked by EVDI providing only 8-bit framebuffers.
Compatibility reports are the most useful thing right now; see
CONTRIBUTING.md. Issues tagged good first issue are
self-contained. Questions go to
Discussions.
MIT — see LICENSE. The bundled libevdi client library is LGPL-2.1 from DisplayLink, unmodified — see THIRD_PARTY_LICENSES.md.