TurboADB
Drive Android over ADB + scrcpy from one pip package β a Python API, a full CLI, and a desktop GUI. Built for Android Automotive / IVI head units and regular phones alike.
Windows app β no Python needed. Or pip install turboadb for the
CLI, the Python API and the app (the Windows executable is included).
adb and scrcpy so you don't have to
remember their flags. The same engine powers all three front-ends, so
anything you can click in the GUI you can script in Python or run as a
one-line command. It bundles its own tools (downloaded on first run), works
against devices on another machine's adb server over RDP, and knows
the quirks of Android Automotive head units.
What's new
v4.0.0 Terminals, faster and steadier
- About four times as fast on plain output, and a flood or a line that never ends no longer stalls the window.
- Stop leaves what answered running: a
pythonornodeprompt shows KeyboardInterrupt and stays. - Emoji, input methods and right-to-left text are drawn and typed properly, and tabs line up at tab stops.
- Colour that means something (3.1): errors and denials in red, warnings in amber, successes in green, the rest plain.
v4.0.0 Files and screens you can trust
- Delete and Rename on the device can no longer land in another folder, and the editor asks before saving over a file that changed.
- Closing TurboADB waits for a recording that is still being saved.
- Keys go to the right display on a multi-display head unit, and Clear data acts on the driver's app.
- A scrcpy window that hangs no longer freezes TurboADB when its tab is closed or its window brought back.
v4.0.0 Safer and more honest
- Nothing is run from the current folder: adb, scrcpy, ffmpeg and Windows' own tools are taken only from known places.
- Failures are reported as failures:
turboadb deviceswithout adb exits 3, and a refused install is never "done". - Shortcuts that open the app on installs without PyQt5, and after an upgrade.
- Stop sharing says when sharing will come back, and a share the firewall may block ends on a warning.
Full history in the changelog.
Everything it does
Interactive shell
A real adb shell on a device terminal: history,
tab-completion, copy/paste, programs that ask for input, and a
Stop button that sends a real Ctrl+C to a runaway command
like logcat and keeps the shell β even over a remote adb
server.
Live logcat
Filter by level, tag, app, or live regex; highlight keywords
like error|anr|crash in-line; pause and clear. Under a flood the
view stays responsive and nothing is lost β every line is
archived to disk, so a save is the complete log.
Files & apps
Browse the device filesystem and push/pull files. List, install (incl. split APKs), uninstall, clear data, and start/stop packages.
Device controls
One click for system keys, media, Wi-Fi / Bluetooth / airplane / hotspot, screen on/off, brightness, app launchers, and an on-screen keyboard. Every one is also a CLI command.
Mirroring & capture
scrcpy in a window or embedded, with a compatibility mode for stubborn IVI units, and an ADB screencap renderer for builds where scrcpy can't run. The IVI Displays tab shows every display of a head unit side by side β centre stack, cluster, passenger β each with its own controls and started only when you want it, or use the device camera. Screenshots and recording that work over RDP.
Host webcam
View a USB / laptop camera beside the mirror β point it at the physical head unit. Works locally and over RDP, or drive a remote machine's camera over WinRM (no SSH); snapshot, record, rotate / flip.
Phone
A dialler with a keypad, Call / End / Answer, a live call-state pill, colour-coded recent calls with call back, and messages with a compose box that opens a draft on the device β nothing rings by accident.
PowerShell & CMD too
Switch the terminal between the Android shell, PowerShell and Command
Prompt. The Windows shells have TurboADB's adb first on PATH
and the device serial set, and run Python, Git and your own tools like a
normal console.
Knows the device type
Detects Android Automotive, an infotainment head unit, TV, watch, tablet or phone from the device itself, shows it in the terminal banner, and gives cars the IVI-compatible screen profile.
Themes for every room
Graphite and Porcelain by default, plus Ocean / Sky, Dusk / Lavender, Evergreen / Meadow, Black / White, Slate / Mist, Night / Paper, Mocha / Latte and High contrast in dark and light. One click between your dark and light theme, a status bar coloured by state, and colour-coded icons for every section.
Remote devices
No need to plug the device into your own machine. Point TurboADB at another PC's adb server and drive whatever is connected there β exactly what you want for a lab unit reached over RDP.
Serve & deploy
Share this PC's devices with one command, or push serve
onto remote Windows hosts from your machine over WinRM β one host
or a whole fleet, with a pre-flight test. One click to stop sharing
& remove auto-start again.
Root & mount
root / unroot, remount, mount -o remount,rw /, and
disable/enable verity (with the required reboot handled) for engineering
builds.
Bundled & self-updating
adb and scrcpy download themselves on first
run. Tools βΎ β Check for updatesβ¦ updates TurboADB from PyPI,
refreshes the tools, and restarts.
Install
Windows app (no Python)
Download TurboADB-4.0.0-win64.exe from the latest release
and double-click it. It downloads adb and scrcpy
on first run and adds a desktop shortcut.
With pip (CLI + API + GUI)
pip install turboadb
Then run turboadb-gui, or use
turboadb on the command line, or
import turboadb in Python. On Windows the package includes
the app's executable, so no PyQt5 is needed; on Linux or macOS use
pip install "turboadb[gui]" for the GUI. Upgrade with
pip install --upgrade turboadb.
Three ways to use it
GUI
turboadb-guiA desktop + Start-menu shortcut is created on first launch.
CLI
turboadb devices
turboadb -s SERIAL \
shell -- getprop ro.product.model
turboadb -s SERIAL screenshot shot.pngPython
from turboadb import ADBHandler, ADBConfig
dev = ADBHandler(ADBConfig(serial="SERIAL"))
dev.connect()
dev.install("app.apk", grant_perms=True)Remote & lab setups
Drive a device on another PC
turboadb devices --adb-host lab-pc-01
turboadb --adb-host lab-pc-01 -s DEVICE \
shell -- pm list packagesThe lab machine just needs to share its adb server.
Share / deploy that sharing
# on the host with the device:
turboadb serve --startup-task
# or push it to remote hosts from here:
turboadb deploy-serve lab-pc-01 lab-pc-02 \
-u "DOMAIN\user"Deploy uses WinRM (NTLM); each target needs WinRM on and admin rights.