Guide

Install scrcpy on Windows, Linux and macOS

Set up scrcpy, the tool that mirrors and controls an Android screen over adb, and check that it runs before pointing it at a head unit.

BYD LabVerified 5 min read

Difficulty
Easy
Time
10 min
Risk
None

Tested on

Vehicle
BYD Sealion 7 · 2025 · Morocco
Verified

scrcpy shows an Android device’s screen in a window on your computer and lets you drive it with mouse and keyboard. It works over adb, needs nothing installed on the device, and is the fastest way to look at a head unit without standing in the car. This guide installs scrcpy and checks that it starts; what the BYD head unit does when you point scrcpy at it is a separate article.

Before you start#

  • adb must work first. scrcpy is a client for it. Follow Install adb on Windows, Linux and macOS and make sure adb devices runs. The official scrcpy archives ship their own copy of adb — convenient, but it is a second adb on your machine; see If it doesn’t work.
  • The device side needs Android 5.0 (API 21) or newer and USB debugging enabled. Audio forwarding needs Android 11 or newer; on Android 10 or earlier scrcpy disables it automatically and says so.
  • Download size 10–17 MB. Current release at the time of writing: v4.1 (12 Jul 2026). Distribution packages vary from current to unusable — the table below says which.
  • scrcpy is open source (Apache 2.0) by Genymobile. Nothing here needs an account or a paid tool.

Windows#

Step 1 — Download and unpack#

Download scrcpy-win64-v4.1.zip (10.8 MB) from the latest release and extract it somewhere permanent, for example C:\scrcpy. The folder contains scrcpy.exe, scrcpy-server, its own adb.exe, and scrcpy-console.bat — double-click that to get a terminal already in the right place.

Or with a package manager. winget installs adb alongside:

Shell
winget install --exact Genymobile.scrcpy

Chocolatey and Scoop have it too (choco install scrcpy, scoop install scrcpy); with those, install adb the same way if you have not already.

Step 2 — Add it to PATH#

Same procedure as for adb: Settings → System → About → Advanced system settingsEnvironment VariablesUser variablesPathNewC:\scrcpy. Or from PowerShell:

Shell
$p = [Environment]::GetEnvironmentVariable('Path', 'User'); [Environment]::SetEnvironmentVariable('Path', "$p;C:\scrcpy", 'User')

Open a new terminal. winget does this for you.

Step 3 — Check#

Shell
scrcpy --version

Linux#

Step 1 — Install#

The official static build is the reliable option. It bundles adb and scrcpy-server:

Shell
curl -LO https://github.com/Genymobile/scrcpy/releases/download/v4.1/scrcpy-linux-x86_64-v4.1.tar.gz
tar xzf scrcpy-linux-x86_64-v4.1.tar.gz -C ~/.local
echo 'export PATH="$HOME/.local/scrcpy-linux-x86_64-v4.1:$PATH"' >> ~/.bashrc

Use ~/.zshrc for zsh, then open a new terminal. Package managers, checked 26 Aug 2026:

Distribution Command Version Use it?
Arch sudo pacman -S scrcpy 4.1 Yes
Fedora sudo dnf copr enable zeno/scrcpy && sudo dnf install scrcpy current Yes — the project’s own repository
Debian 13 apt install scrcpy from trixie-backports 3.3.4 Works; backports needed
Debian 12 Static build
Ubuntu 24.04 sudo apt install scrcpy 1.25 No — three years old; the project marks it obsolete
Snap snap install scrcpy No — marked obsolete by the project

Step 2 — USB permissions (USB only)#

Nothing extra over Wi-Fi. Over USB, the same udev rule and plugdev group as in the adb guide apply — scrcpy just uses adb.

Step 3 — Check#

Shell
scrcpy --version

macOS#

Step 1 — Install#

Homebrew (4.1, pulls in ffmpeg, libusb and SDL 3), plus adb if the adb guide has not already put it there:

Shell
brew install scrcpy
brew install --cask android-platform-tools

MacPorts sets up adb itself: sudo port install scrcpy.

Or the official static build — scrcpy-macos-aarch64-v4.1.tar.gz (Apple silicon, 12.4 MB) or scrcpy-macos-x86_64-v4.1.tar.gz (Intel, 13.3 MB) from the latest release, which bundles adb:

Shell
curl -LO https://github.com/Genymobile/scrcpy/releases/download/v4.1/scrcpy-macos-aarch64-v4.1.tar.gz
tar xzf scrcpy-macos-aarch64-v4.1.tar.gz -C ~/.local
echo 'export PATH="$HOME/.local/scrcpy-macos-aarch64-v4.1:$PATH"' >> ~/.zshrc

If you downloaded the archive with a browser instead of curl, clear the quarantine flag before the first run: xattr -dr com.apple.quarantine ~/.local/scrcpy-macos-aarch64-v4.1.

Step 2 — Check#

Shell
scrcpy --version

Check that it runs — all systems#

Shell
scrcpy --version

From the Windows machine this guide was written on (it still has 3.3.4 from the previous release; 4.1 prints the same shape):

Log
scrcpy 3.3.4 <https://github.com/Genymobile/scrcpy>

Dependencies (compiled / linked):
 - SDL: 2.32.8 / 2.32.8
 - libavcodec: 61.19.101 / 61.19.101
 - libavformat: 61.7.100 / 61.7.100

Then, with a device showing as device in adb devices:

Shell
scrcpy

A window with the device screen opens. On the first run scrcpy pushes scrcpy-server to the device over adb; nothing is installed permanently there. Options you will reach for with a head unit — untested on BYD until the head-unit article says otherwise:

Shell
scrcpy --tcpip=192.168.0.10     # connect over Wi-Fi to a device already listening on 5555
scrcpy -s 192.168.0.10:5555     # pick one device when several are attached
scrcpy --max-size=1280          # scale a wide display down; less bandwidth, less lag
scrcpy --no-audio               # silence the audio warning on Android 10 and earlier
scrcpy --max-fps=30

If it doesn’t work#

  • scrcpy: command not found or “‘scrcpy’ is not recognized” — PATH not applied. Open a new terminal; where.exe scrcpy (Windows) or which scrcpy (Linux, macOS) shows what the shell found.
  • adb server version (41) doesn't match this client, or devices that appear for adb but not for scrcpy — two different adb builds: the one from the adb guide and the one bundled in the scrcpy archive (on our machine, platform-tools 37.0.0 next to scrcpy’s bundled 36.0.0). scrcpy uses the first adb on PATH. Run adb kill-server, then either keep one on PATH or point scrcpy at a specific binary with the ADB environment variable.
  • ERROR: Could not find any ADB deviceadb devices is empty. Connect the device first; scrcpy does not do that for you (--tcpip is the exception).
  • unauthorized — accept the debugging prompt on the device screen.
  • Window opens black, or the video stream fails — the device’s encoder rejected the request. Try --max-size=1024, then scrcpy --list-encoders and pick one with --video-encoder=.
  • macOS: “cannot be opened because the developer cannot be verified” — the quarantine flag; see the xattr command above.
  • Linux, USB: no permissions — udev rule / plugdev, as in the adb guide.

What we tested#

The Windows steps and the scrcpy --version output are from a Windows 11 machine (build 26200) with scrcpy 3.3.4 from the official win64 zip, 26 Aug 2026; the zip contents listed in Step 1 are what that archive contains. The Linux and macOS archive contents were checked by listing the v4.1 release files; the install commands come from the project’s own per-OS documentation, Homebrew and the distribution package indexes, all checked on 26 Aug 2026 — not yet run by us on a Linux or macOS machine. scrcpy was not run against the head unit for this guide.