One window on Windows that drives every Android device plugged into it, over plain adb.
Mirroring, internet sharing in both directions, files, apps, messages, radios and users —
without leaving the keyboard.
No agent is installed on the phone. Everything goes through the standard Android Debug Bridge, so the phone only ever does what USB debugging already allows.
AndroidDC comes with two windows over the same features, and you pick whichever you like:
| Window | Start it with | What it looks like |
|---|---|---|
| Classic | androiddc.vbs |
The original: tabs, dense, every control in view |
| Nova | androiddc-nova.vbs |
A newer design: a side navigation, a device card with battery, signal and screen, cards per task, and an activity log - see nova/ |
Each window has a button that closes it and opens the other: Open Nova window on the classic Device tab, Classic window at the bottom of Nova's side navigation. They share the same adb, scrcpy and gnirehtet, and keep their settings apart.
Both can start with Windows, minimized, and both run the same rules per phone: plug a chosen phone in and AndroidDC does what you picked for it - share the phone's internet with the PC, mirror the screen, turn Wi-Fi off, open an app, and more. Classic: Advanced > Automation; Nova: the Automation page. While it runs, AndroidDC has an icon by the clock: click it to hide the window or show it again. Minimizing hides it there too. Its menu, and the log at startup, list the rules you have set.
| Tab | What it does |
|---|---|
| Device | Details of the selected phone, live screenshot with click-to-tap, quick toggles (Wi-Fi, Bluetooth, location, rotation, torch, battery saver, haptics, show taps, stay awake, developer options), call / SMS / USSD, and one-click mirroring |
| Tethering | PC → phone with gnirehtet (reverse tethering), and phone → PC over USB or a proxy |
| Advanced | Five pages: every scrcpy option (codec, bit rate, fps, virtual display, OTG, input modes), more of them (recording format and time limit, orientation, window placement, shortcut keys), the adb tools (wireless pairing, mDNS discovery, bug report, private DNS, IME, hotspot), a Root / recovery page that shows what your device cannot do and says why, and Automation (start with Windows, and what each phone does when it is plugged in) |
| Apps | What is installed, by name as well as package, launch, force stop, uninstall, open in its own scrcpy window, and install .apk or a split .xapk / .apks / .apkm |
| Contacts / SMS | Read, add, edit, delete, call, send |
| Cam / Mic | Front and rear camera as a video source with zoom, and the phone microphone or output streamed or recorded on the PC, with the codec, encoder and bit rate read from the phone |
| Files | Browse, search, sort, rename, upload, download, move, compress, extract, preview pictures and text without saving them, free space of the current volume |
| Running | Live process list with memory and state, stop anything |
| Wi-Fi / Bluetooth / NFC | Radios on and off, scan, join or forget a network, paired devices |
| Users | Multi-user: list, switch, add, remove, turn the user switcher on or off |
| Shell | A live adb shell, and a logcat viewer with a level, a filter and save |
Several devices can be connected at once; most actions apply to everything selected in the device list. Every list also carries its own actions on the right mouse button.
- Turn on USB debugging on the phone and plug it in (or pair it over Wi-Fi).
- Clone this repository.
- Run
get-upstream.ps1once. It downloads scrcpy and gnirehtet from their official GitHub releases, checks each archive against SHA256 and unpacks it here. The binaries are deliberately not committed — they belong to their own projects. - Double-click
androiddc.vbsfor the classic window, orandroiddc-nova.vbsfor Nova. - Optional: double-click
start-menu.vbsto put both in the Start menu, with the AndroidDC icon. They appear under All apps; right-click one there and choose Pin to Start to keep it on the first page.start-menu-remove.vbstakes them out again.
If a tool turns out to be missing at startup, AndroidDC offers to fetch it for you and waits until the download is finished before opening.
# everything
.\get-upstream.ps1
# only what is not already here
.\get-upstream.ps1 -OnlyMissing
# one package, a specific version, somewhere else
.\get-upstream.ps1 -GetScrcpy -ScrcpyVersion 4.1 -Destination D:\tools\androiddc- Windows 10 or 11, Windows PowerShell 5.1 (ships with Windows) or PowerShell 7
- An Android device with USB debugging enabled
- Nothing else — no Python, no Node, no install
| File | What it is |
|---|---|
androiddc.ps1 |
The classic window. One PowerShell script, WinForms user interface |
androiddc.vbs |
Starts the classic window without a console — double-click it |
androiddc-nova.vbs |
Starts the Nova window without a console — or double-click this one |
start-menu.vbs |
Adds both windows to the Start menu, with the AndroidDC icon |
start-menu-remove.vbs |
Takes them out of the Start menu again |
nova/ |
The Nova window: WPF in PowerShell, one file per page, its theme, fonts and tests |
shared/ |
What both windows load: starting with Windows and the rules per phone |
get-upstream.ps1 |
Downloads and verifies scrcpy and gnirehtet |
get-upstream.bat |
Double-click wrapper for the above |
gnirehtet-share.ps1 |
Reverse tethering from the command line, without the window |
docs/ |
The full documentation |
assets/ |
Logo, icon and the window icon |
INDEX.md |
What every file in the folder is |
CHANGELOG.md |
What each release changed |
tests/ |
Tests that run the real window, with or without a phone |
Settings live in %APPDATA%\AndroidDC\settings.json for the classic window and
nova-settings.json next to it for Nova, outside the repository. The rules per phone are
automation.json in the same folder, read and written by both.
These are Android's rules, not bugs:
- gnirehtet carries TCP and UDP only. Ping never works through the tunnel — that is ICMP, which it does not forward. Use a real request to test a connection.
scrcpy --otgrestarts the adb server, which drops an active reverse tunnel. AndroidDC warns first and rebuilds the tunnel afterwards.- Renaming a user needs
MANAGE_USERS, a system permission adb does not hold. Adding, removing and switching users all work. - Android exposes no adb command that pairs or connects a Bluetooth device. The radio and the paired list are all that can be reached.
- There is no adb command that sends an SMS; the message is composed in the phone's own SMS app and sent from there.
- The phone has
tar,gzipandunzipbut nozip, so archives are made as.tar.gz. adb root,remount,sideloadand their neighbours need a userdebug build or recovery. They are listed on their own page, marked against your device, rather than hidden.- A screen capture costs roughly 1.4 s. For anything live, use the scrcpy mirror.
Pull requests are welcome. The classic window is one PowerShell file; Nova has its own rules
in nova/CONTRACT.md. For the classic window:
- keep the layout functions the single place that positions controls — no absolute coordinates scattered through event handlers;
- keep adb work off the UI thread (
Invoke-OffThread, the shared runspace) so the window never freezes; - never hardcode a folder — everything is resolved from
$PSScriptRoot; - say what a device actually reports. If Android refuses something, the log should say so rather than pretend it worked.
Full documentation lives in docs/:
| Page | What is in it |
|---|---|
| Getting started | Install, first run, connecting a phone over USB or Wi-Fi |
| User guide | Every tab and every button, one by one |
| Shortcuts | Keyboard and mouse, including the screen pane |
| Command line | get-upstream.ps1 and gnirehtet-share.ps1 reference |
| What it runs on your phone | Every adb command the program can issue, and why |
| Limits | What Android does not allow, and what that means here |
| Troubleshooting | Symptoms, causes, fixes |
| Architecture | How the script is put together, for contributors |
Apache License 2.0 — see LICENSE.
scrcpy and gnirehtet are separate projects by Genymobile, also Apache-2.0. AndroidDC downloads their official releases; it does not redistribute them.
Nova's typefaces, DM Sans and Space Grotesk in nova/fonts/, are from Google Fonts under the
SIL Open Font License 1.1; their license files are next to them.
