DroidExtend turns an Android phone into a true extended display for Windows (not screen mirroring) over a single USB cable, with touch input support and a measured 5–11 ms end-to-end latency.
- v1.8.2
- Published at
- 5d ago
- 14
- Stars
- 115
- Download
- Synced at
- 1d ago
Latest release
v1.8.2Oct 23, 2026, 04:50 PMREADME
Project Overview
DroidExtend turns an Android phone into a second display for Windows over a single USB cable. It is not mirroring: a real monitor appears in Win+P, windows can be dragged onto it, and the mouse works directly on it. Video travels through an adb reverse tunnel (ddagrab desktop duplication → NVENC hardware encoding → MediaCodec hardware decoding on the phone) with a measured 5–11 ms end-to-end latency, and the phone screen doubles as a touch input device for the PC.
| Item | Value |
|---|---|
| Platform | Windows (PC) + Android 5.0+ (phone) |
| Connection | USB cable (adb), no Wi-Fi needed |
| Video pipeline | ddagrab → NVENC/AMF/x264 → MediaCodec |
| Installer size | 34 MB with ffmpeg, adb, driver, and phone APK bundled |
| License | MIT |
A real monitor shows up in Win+P, disappears the moment you unplug, and leaves no ghost display behind.
How It Works
- The PC first creates a real virtual monitor through a virtual display driver, then captures that screen via the desktop duplication API
- ffmpeg grabs frames zero-copy with
ddagraband encodes H.264 through GPU encoders such ash264_nvenc - The stream reaches the phone over the
adb reverse tcp:27183tunnel, where MediaCodec decodes it onto aSurfaceView - Touch events travel back over the
tcp:27184tunnel; the host injects a real mouse viaSendInputwith absolute coordinates across the virtual desktop - Stopping detaches the virtual screen without touching the driver, so the next session shows video in about 3 seconds
Key Features
- True extended desktop: virtual monitor resolution, refresh rate, and position (right/left/top/bottom) are adjustable, with out-of-table sizes falling back to the nearest supported mode
- Touch control: single tap = left click, double tap = double click, 0.5 s long-press = right click, two-finger slide = scroll wheel; drags are frame-throttled to send only the latest position
- Fully tunable quality: frame rate 24–144, default 40 Mbps bitrate cap, VBR/CBR rate control, and quality factor Q 18–20 for near-lossless visuals
- Tested encoder list: the menu only lists encoders verified on your machine, such as
h264_nvenc,hevc_amf, andlibx264; unusable ones are hidden - Cable speed test: one-click USB bandwidth measurement that auto-lowers the bitrate cap; swapping cables can change speed by 40x
- In-app updates: downloads new versions inside the program, verifying SHA256, size, and file format before installing anything
- Centralized data:
settings.jsonandDroidExtend.logalways live in the install folder; uninstalling means deleting the folder, leaving no residue
Quick Start
- Double-click the installer and follow the steps; it installs into your user folder without requesting admin rights
- Open the app and click Install virtual display driver (requires admin), accept the UAC prompt, and look for
status=OKin the log after about 10 seconds - Enable developer options and USB debugging on the phone, plug in the cable, and allow debugging
- Pick a resolution and frame rate, click Start streaming; the APK is installed onto the phone automatically on first run
- Drag any window toward the phone display and start using it; the phone screen accepts direct touch input
Target Audience
- Travelers who need a second screen but do not carry an external monitor
- Multitaskers parking chat windows, documents, or tickers on the phone display
- Developers wanting a low-latency side screen for dashboards, trading charts, or code
System Requirements
| Item | Requirement |
|---|---|
| PC | Windows with desktop duplication API and ffmpeg encoding support |
| GPU | NVIDIA (NVENC) or AMD (AMF) for hardware encoding; libx264 as CPU fallback |
| Phone | Android 5.0 or later, arm64 or arm |
| Connection | USB cable with authorized ADB debugging |
Notes
- GPU usage: the virtual monitor is composited by DWM like any real display, so a few to a dozen percent of constant GPU usage is by design; lower resolution first, then refresh rate
- The cable is the bottleneck: charge-only cables may negotiate down to USB 1.1 (13.7 Mbps measured); when the image looks mushy, run the cable speed test first
- AI sandbox limits: running the exe inside an AI coding session workspace blocks the display-configuration API; place it outside the workspace
- No code signing: the installer ships without a signing certificate; integrity is enforced by SHA256 checks, as stated plainly in the update dialog