FreeControl is a cross-platform GUI shell for scrcpy that manages USB and wireless screen mirroring of multiple Android devices from Windows, Linux, and macOS desktops with visual parameter panels.
- v2.3.1
- Published at
- 1d ago
- 2,367
- Stars
- 29,807
- Download
- Synced at
- 9h ago
Latest release
v2.3.1Oct 27, 2026, 02:27 PMREADME
Overview
When you need to mirror and control multiple Android devices from your computer but don't want to memorize scrcpy flags, FreeControl offers a visual panel: device inventory, wireless pairing, parameter controls, and connection management are all graphical, while scrcpy itself does the mirroring. Built with Rust + Tauri 2 + Svelte under the MIT license, it ships as a portable single file on Windows, installers on Linux and macOS, and downloads scrcpy and adb on demand — no manual setup.
scrcpy does the work; FreeControl handles devices, parameters, and status.
| Item | Detail |
|---|---|
| Positioning | scrcpy GUI shell (device management + parameter panels) |
| Stack | Rust + Tauri 2, frontend Svelte + Vite + TypeScript |
| Platforms | Windows 10/11 (x64 and ARM64), Linux (AppImage/deb), macOS 11+ (dmg) |
| Mirroring core | scrcpy and adb downloaded on demand, with multi-mirror fallback and checksum verification |
| License | MIT |
Key Features
- Device list: one alias per device mapped to a USB serial or IP:port, live online status, add/edit/remove supported
- Wireless pairing and discovery: pair once with a code, then list LAN devices with wireless debugging in one tap;
adb tcpip 5555setups also work - Parameter panels: six groups of common options as controls mapping to scrcpy long option names, each with a "?" detail popup, plus a custom flags box
- Per-device parameters: one parameter set per device, overriding global settings, enableable or disableable as a whole
- Multi-device mirroring: connect or disconnect one or all, with several devices mirrored simultaneously and processes managed by the app
- Command preview: the full scrcpy command about to run is shown at the bottom, copyable in one click
- In-app updates: check and download new versions from About, verified and replaced in place; the portable build restarts itself
- Logs and looks: session logs kept for 7 days, 30 days, or forever; light/dark themes, UI and code fonts, and Chinese/English UI are switchable
Quick Start
- Grab the package for your platform from Releases: on Windows pick
_windows_x64.exeor_windows_arm64.exeby architecture and double-click from any writable directory - On first launch, get scrcpy and adb from the Runtime page (downloaded into the app data directory by default, or point to an existing folder)
- Add a device on the Devices page: USB uses the serial from
adb devices; wireless offers LAN scan, pairing code, or manual IP:port - Tap Connect on the device card to start mirroring; the command preview at the bottom shows the exact command
Android phones need developer options and USB debugging enabled; for wireless pairing (Android 11+), tap Pair device with pairing code in the phone's wireless debugging settings and enter the 6-digit code in the app.
UI and Data
- Four pages: Devices for inventory and connections, Parameters for common options, Runtime for scrcpy and adb, and Settings for looks, fonts, language, auto-update, and logs
- Data directory:
%APPDATA%/FreeControl2on Windows,~/Library/Application Support/FreeControl2on macOS;config.jsonstores devices and parameters,logs/stores daily logs - Factory reset: delete
config.jsonand relaunch to restore defaults - Survives exit: quitting the app leaves the adb server running, so established wireless connections are reused on next launch
System Requirements
| Item | Requirement |
|---|---|
| Windows | 10 / 11, x64 or ARM64, with system-provided WebView2 |
| Linux | AppImage or deb, needing webkit2gtk and related libraries |
| macOS | 11 or later; installation needs Safari 16.2+ |
| Android | USB debugging enabled; wireless pairing needs Android 11+ |
Notes
- Wireless ports drift: connection ports change after device reboots or toggling wireless debugging; tap Re-resolve port on the device card when it goes offline
- macOS first launch: the dmg is not notarized — allow it under System Settings → Privacy & Security, or run
xattr -dr com.apple.quarantine /Applications/FreeControl.app - Linux rendering fallback: if the UI freezes in VMs or software-rendered sessions, launch with
WEBKIT_DISABLE_DMABUF_RENDERER=1 - Blank window on Windows: confirm the WebView2 runtime is installed (usually preinstalled on Win10/11)