Skip to content
Β 
Β 

Latest commit

Β 

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“± Android PC Companion

Control your Android device from your desktop β€” mirror your screen, manage files, sideload apps, monitor battery, and more.

Release Downloads Platform License: MIT


⬇️ Download the latest EXE Β· πŸ› Report an Issue


πŸ“– About

Android PC Companion is a desktop app that bridges your PC and your Android phone. No bloat, no account, no root β€” it talks directly to your device over adb and scrcpy, and downloads those tools automatically on first launch. You never have to install them yourself.

Note: USB debugging must be enabled on your phone (Developer Options), or you can connect wirelessly via the built-in QR pairing.


πŸš€ Features

🏠 Dashboard

Live device summary β€” battery ring with estimated mAh, CPU load, memory usage, storage breakdown, and quick launchers into every section.

πŸ“ File Explorer

Full-featured file manager for your device storage:

  • Multi-select files with checkboxes + batch download and upload with per-file progress
  • Drag-and-drop upload from your PC
  • Preview images, videos, text files, and PDFs inline
  • Breadcrumb navigation with clickable path segments and a back arrow
  • Clickable storage overview β€” jump straight to internal storage or SD card

πŸ“¦ App Management

  • Filter chips (All / User / System / Disabled) + search
  • Sideload APKs from your PC
  • App diagnostics β€” APK size, declared permissions, clear-data, disable/enable, uninstall

πŸ–₯️ Screen Mirror

  • Real scrcpy mirroring with resolution / bitrate / FPS controls
  • Transport bar β€” volume, rotate, screenshot, screen record, long-press power β€” works over adb even when the mirror window is closed

πŸ“· Multimedia Hub

  • Camera preview β€” view your phone's cameras (front/back/tele/wide) live, with sensor info
  • Capture photos and record video from any camera
  • Torch control with multi-tile flash support
  • Audio forwarding + media transport controls (play/pause/next/prev)
  • Now-playing display with track info
  • Use the phone as a PC webcam β€” via OBS Virtual Camera (Windows/macOS) or v4l2 loopback (Linux); see πŸŽ₯ Use Your Phone as a Webcam below

πŸ”‹ Hardware & Power

Fuller battery + device-spec readout β€” health, temperature, cycle count (where the kernel exposes it), voltage, and SoC details.

πŸ› οΈ Power Tools (ADB Console)

Quick-command buttons plus a free-text console that runs anything starting with adb or fastboot.

πŸ”“ Bootloader & Backup

  • Unlock / reboot-to-bootloader
  • Fastboot partition flasher β€” pick a partition, pick a .img, confirm, flash (with confirmation for a reason β€” wrong image = brick)
  • Shared-storage backup flow

πŸ“‘ Wireless Connection

  • QR pairing β€” the app renders a QR code locally, your phone scans it, done
  • Wi-Fi pairing with pairing code / port entry
  • Auto-connect β€” previously paired phones reconnect automatically
  • Multi-device switcher

⬇️ Download

Grab the latest installer from the Releases page:

πŸ‘‰ Download from GitHub Releases

Each release ships a Windows installer (Companion Setup x.x.x.exe). Just run it β€” adb, fastboot, and scrcpy are downloaded automatically on first launch.

The app version automatically matches the release tag (e.g. release v1.2.3 β†’ exe version 1.2.3), so you always know what you're running.


πŸ“Έ Screenshots

🏠 Dashboard β€” Dark, Light & Custom Themes

Dark Overview Theme Picker Light Mode Storage & Memory
Dashboard Dark Overview Dashboard Theme Picker Dashboard Light Mode Dashboard Storage

Battery station (47% charging), CPU cores at 99%, system memory 5.7/7.4 GB, storage breakdown, and the accent-color / dark-light-auto picker.

πŸ“ File Explorer

Browse Text Preview Image Preview Drag & Drop
File Explorer Browse File Explorer Text Preview File Explorer Image Preview File Explorer Drag & Drop

Multi-select β†’ batch download, breadcrumb navigation, SD card / internal storage, and inline previews for code, text, and images β€” drag files from Windows Explorer straight onto the device.

πŸ“¦ App Management

App Management

518 packages with User / System / Bloatware / Frozen filters, search, APK sideload via drag-and-drop, and per-app diagnostics (size, permissions, freeze, uninstall).

πŸ–₯️ Screen Mirror (scrcpy)

Settings Active Mirroring YouTube Playback
Screen Mirror Settings Screen Mirror Active Screen Mirror YouTube

Resolution / bitrate / FPS controls, docked control bar (power, volume, rotate, screenshot, record) and real device mirroring β€” works even when dragging the floating window around.

πŸ› οΈ Power Tools β€” ADB / Fastboot Console

Power Tools Console

One-click shortcuts (adb devices, dumpsys battery, etc.) plus a free-text shell for any adb / fastboot command.

πŸ“· Multimedia Hub β€” Phone as Webcam

Standby Live Camera Feed
Multimedia Hub Standby Live Camera Feed

Optics & stream parameters, sensor picker (Rear 12.5 MP / Front 16.2 MP), torch & mic toggles β€” standby β†’ live camera bridge with the phone as a PC webcam.

πŸ”‹ Hardware & Power

Hardware & Power

Battery power station, real-time electrical & thermal telemetry (voltage, current, temp), SoC specs (Mediatek MT6833GP, 8 cores), RAM and storage details.

πŸ”“ Bootloader & Backup

Fastboot Flasher Backup & Binaries
Bootloader Fastboot Flasher Backup and Binaries

Unlock suite with factory-reset warning, partition flasher (boot + custom .img), shared-storage backup and the adb / fastboot / scrcpy version panel (all READY).

πŸ“‘ Connect Device β€” USB, Wireless & QR

USB Mode Wireless Mode QR Pairing Switch Device
Connect USB Connect Wireless Connect QR Switch Device

USB debugging guide + scan, Wi-Fi IP/port + 6-digit pairing code, QR code for Android 11+ wireless debugging, and the detected-devices switcher.

πŸͺŸ Installed on Windows

Windows Start Menu

Companion appears under "Recently added" right after installing Companion Setup x.x.x.exe.


πŸŽ₯ Use Your Phone as a Webcam

The Multimedia tab streams any phone camera to your PC. To make other apps (Zoom, Meet, Teams, Discord) see it as a webcam, bridge it through a virtual-camera driver. The Camera tab's bridge status tells you which route applies on your machine.

Windows / macOS β€” via OBS Studio

Windows has no built-in virtual camera, so the route is OBS Studio (free, signed driver β€” the app detects it and reports "OBS Virtual Camera available").

  1. Connect your phone, open the Multimedia tab, pick a lens/resolution and press Start β€” a window titled Camera β€” <serial> appears. Keep it open.
  2. Open OBS β†’ Sources β†’ + β†’ Window Capture β†’ select the Camera β€” <serial> window (crop/fit with right-click β†’ Transform if needed).
  3. In OBS β†’ Controls (bottom-right) β†’ Start Virtual Camera. First run may ask for admin to register the driver β€” one time only.
  4. In Zoom/Meet/Teams/Discord, pick OBS Virtual Camera as the camera. If it doesn't appear, restart that app after step 3.

Keep OBS running while you use the camera elsewhere, and stop the stream in Companion when you're done.

Linux β€” direct via v4l2 loopback (no OBS needed)

sudo modprobe v4l2loopback exclusive_caps=1 card_label="Phone Camera"

Reopen the Camera tab β€” it will report v4l2 loopback ready with the device (e.g. /dev/video2). Start the stream and pick Phone Camera as the camera in any app. (Needs a scrcpy build with --v4l2-sink β€” distro packages have it; the tab warns you otherwise.)

Mic: the camera tab's mic toggle forwards the phone mic into the stream audio (heard on PC speakers). The OBS route above carries video β€” for calls, pair it with your usual microphone, or use OBS's audio monitoring to route it.


🧰 Tech Stack

Built with:

Technology Purpose
Electron Electron Desktop app shell, frameless window with acrylic/vibrancy
Node.js Node.js Main-process logic, IPC, tool orchestration
ADB ADB / Fastboot Device communication, file transfer, shell commands
scrcpy scrcpy Screen mirroring + camera feed
JavaScript Vanilla JS Renderer β€” no frontend framework
HTML5 CSS3 HTML + CSS UI layout, custom window chrome
jsqr jsQR QR code decoding (pairing flow)
extract-zip extract-zip Tool extraction after download

Zero adb/scrcpy knowledge required β€” the app auto-downloads platform-tools from Google and scrcpy from its GitHub releases into its own user-data folder, and uses those copies from then on.


🚦 Getting Started (Development)

Requirements: Node.js 18+, a real desktop session (not headless), and for USB workflows, physical USB access to the phone.

# Clone
git clone https://github.com/jackhallloween21/Android-PC-Companion-App.git
cd Android-PC-Companion-App

# Install dependencies
npm install

# Run in dev mode
npm start

# Run the test suite
npm test

# Build the Windows installer
npm run dist

πŸ“‚ Project Structure

Android-PC-Companion-App/
β”‚
β”œβ”€β”€ main.js                  # Electron main process β€” window, IPC handlers,
β”‚                            #   adb/fastboot/scrcpy orchestration
β”œβ”€β”€ preload.js               # Secure bridge between main & renderer (contextIsolation)
β”‚
β”œβ”€β”€ src/                     # Pure logic modules (no DOM, testable)
β”‚   β”œβ”€β”€ apps.js              #   App inventory from pm list packages / dumpsys
β”‚   β”œβ”€β”€ autoconnect.js       #   Remember wirelessly-paired devices
β”‚   β”œβ”€β”€ camera.js            #   Camera capability discovery, torch, launch args
β”‚   β”œβ”€β”€ dock.js              #   Docked-mirror window geometry
β”‚   β”œβ”€β”€ downloader.js        #   Auto-download adb/fastboot/scrcpy
β”‚   β”œβ”€β”€ keys.js              #   Device key & status-bar commands over adb
β”‚   β”œβ”€β”€ media.js             #   Now-playing parsing from dumpsys media_session
β”‚   β”œβ”€β”€ pairing.js           #   QR payload generation for wireless pairing
β”‚   β”œβ”€β”€ perf.js              #   CPU/RAM telemetry from /proc
β”‚   β”œβ”€β”€ power.js             #   Battery/power parsing from kernel power-supply class
β”‚   β”œβ”€β”€ qrencode.js          #   Hand-rolled QR encoder (byte mode, v1-10)
β”‚   β”œβ”€β”€ scrcpy.js            #   scrcpy version-aware flag detection & arg building
β”‚   β”œβ”€β”€ storage.js           #   Storage breakdown (dumpsys diskstats + df)
β”‚   β”œβ”€β”€ theme.js             #   Accent colors & light/dark/auto themes
β”‚   β”œβ”€β”€ winmove.js           #   Move/resize the foreign scrcpy window (Windows)
β”‚   └── wireless.js          #   Wireless debugging helpers (pair vs connect ports)
β”‚
β”œβ”€β”€ renderer/                # UI layer
β”‚   β”œβ”€β”€ index.html           #   App shell β€” titlebar, sidebar, views, modals
β”‚   β”œβ”€β”€ renderer.js          #   Renderer logic β€” state, views, event wiring
β”‚   β”œβ”€β”€ controlbar.html      #   Mirror transport control bar
β”‚   β”œβ”€β”€ controlbar.js        #   Transport bar logic
β”‚   └── styles.css           #   Full styling β€” glass cards, dark theme
β”‚
β”œβ”€β”€ test/                    # Node test-runner suite (one file per src module)
β”œβ”€β”€ tools/                   # Dev utilities (icon builder)
β”œβ”€β”€ assets/                  # Bundled resources
β”‚
└── .github/workflows/
    └── build.yml            # CI: builds the exe on release, auto-bumps version
                             #   from the release tag, attaches it to the release

βš™οΈ How It Works

Everything the app does is a real adb / fastboot / scrcpy invocation β€” nothing is mocked. The main process shells out via child_process.execFile, parses output with the pure modules in src/, and exposes it to the renderer over typed IPC channels.

Auto-downloaded tools β€” on first launch the app checks for adb/fastboot/scrcpy on your PATH. Missing ones are downloaded (platform-tools from dl.google.com, scrcpy from GitHub releases) into app.getPath('userData')/bin and reused forever. The Binaries & Drivers panel in the sidebar shows resolved paths, versions, and a re-verify button.

Wireless QR pairing β€” the PC displays a QR code rendered by the app's own encoder (src/qrencode.js, byte-mode, versions 1–10, round-trip tested); the phone scans it with Android's "Pair device with QR code" screen. The phone then advertises over mDNS (_adb-tls-pairing._tcp), the app runs adb pair against it, then connects on the separate _adb-tls-connect._tcp port. A manual pairing-code form is the fallback when adb's mDNS backend isn't running (common on Windows).

Window chrome β€” frameless with a custom titlebar, using native OS effects: vibrancy on macOS, backgroundMaterial: 'acrylic' on Windows 11 22H2+, opaque on Linux for compositor safety.


⚠️ Known Approximations

Honest engineering notes β€” real functionality, best-effort data sources:

  • Storage breakdown is per-folder du -sh (DCIM/Pictures/etc.), not a true partition split β€” Android doesn't expose that without root
  • Battery cycle count reads /sys/class/power_supply/battery/cycle_count, missing on some kernels β†’ shows "N/A", not a fake number
  • Console command parsing splits on whitespace β€” quoted args with spaces won't parse; it's for one-liners, not a full shell
  • Fastboot flashing will brick a device given the wrong image β€” that's why the confirmation dialog exists
  • Camera feed displays in-app, with a bridge-status row that routes it to other apps: OBS Virtual Camera on Windows/macOS, direct v4l2 loopback on Linux β€” see πŸŽ₯ Use Your Phone as a Webcam

🀝 Contributing

  1. Fork the repo
  2. Create your branch (git checkout -b feature/amazing)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push (git push origin feature/amazing)
  5. Open a Pull Request

Run npm test before submitting β€” the test suite covers every src/ module.


πŸ“„ License

MIT Β© jackhallloween21


Made with ❀️ and lots of adb shell

⭐ Star the repo if you find it useful!

About

Companion app for controlling Android devices from a desktop: mirroring, battery info, file management, sideloading, app management, and bootloader unlock

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages