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).

TurboADB wraps 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 python or node prompt 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 devices without 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.

– Download TurboADB for Windows

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-gui

A 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.png

All 99 commands β†’

Python

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 packages

The 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.