Documentation
Using OpenVysor
Everything you need to install the app, connect a phone and get the most from it.
Overview
OpenVysor shows an Android phone on your computer and lets you control it. You can mirror the whole screen, or open a single app in its own phone-shaped window while the phone itself stays free.
It's a native desktop app that uses Android's ADB tool to reach the phone and scrcpy-server to capture the screen. There's no account, and nothing goes through the cloud.
Early development. Some features are written but haven't been confirmed on a real phone yet. See what is tested.
Install
Every computer needs ADB. Pick yours:
- Download OpenVysor-windows-x64.exe for Windows 10 or 11 x64, and keep it anywhere.
- Open it. SmartScreen may warn you because the app isn't code-signed yet. If you trust this download, choose More info, then Run anyway.
- If the app asks, choose Install ADB. To install it yourself, download SDK Platform-Tools and unzip it into
%LOCALAPPDATA%\OpenVysor.
This is a preview build that hasn't been tried on a real Mac with a phone yet.
- Install ADB with Homebrew.
brew install android-platform-tools - Download the .dmg for your Mac, open it and drag
OpenVysor.appto Applications. - The app isn't notarized, so allow its first launch:
xattr -dr com.apple.quarantine /Applications/OpenVysor.app
This is a preview build that hasn't mirrored a real phone yet.
- Download the .deb on Debian or Ubuntu, and install it. This also brings in ADB and its USB access rules.
sudo apt install ./OpenVysor-linux-x64.deb - On another distribution, install ADB and your distribution's Android udev rules, then unpack the .tar.gz and run
./openvysor.
It needs glibc 2.35 or later, X11 or Wayland, and OpenGL.
If ADB is somewhere unusual
OpenVysor looks in your PATH, your Android SDK folder and the usual install locations. To point it at a specific copy, set OPENVYSOR_ADB to the full path of the program.
Connect with USB
USB is the simplest way to start and usually the smoothest.
- On the phone, open Settings, then About phone, and tap Build number seven times to unlock Developer options.
- Open Developer options and turn on USB debugging.
- Connect a USB data cable, unlock the phone and tap Allow.
- The phone appears on the Devices page. Choose Mirror screen or Open an app.
Connect over Wi-Fi
Needs Android 11 or later, with the phone and computer on the same network. Choose Connect over Wi-Fi on the Devices page, then use one of these:
| Method | What to do on the phone |
|---|---|
| QR code | Open Developer options, then Wireless debugging. Tap Pair device with QR code and scan the code in OpenVysor. |
| Pairing code | Tap Pair device with pairing code. Enter its IP address, port and 6-digit code in OpenVysor, then connect on the IP address tab. |
| IP address | For a phone that's already paired. Enter the address and port shown at the top of Wireless debugging. |
Phone windows
Every mirror opens as its own borderless window, shaped like the phone and showing only the screen.
- Mirror screen shows the whole phone in one window.
- Open an app lists the phone's apps. Pick one and it opens on its own virtual display, so you can open several at once.
- Arrange windows on the Devices page lines them up side by side.
- Drag the dark strip at the top of a window to move it.
If a phone is unplugged, the window offers Reconnect, and tries to resume by itself when the phone comes back.
Mouse and keyboard
| Input | What it does |
|---|---|
| Left click and drag | Touch and swipe |
| Right click | Back, or wakes the screen |
| Middle click | Home |
| Scroll wheel | Scrolls under the pointer |
| Typing | Goes to the phone's focused field |
| F11 | Full screen on or off |
| Alt + ← / → | Moves to the previous or next phone window |
Window toolbar
Hover over a button in the strip at the top of a phone window to see its name. App windows show the shorter set.
| Button | Available in |
|---|---|
| Back | All windows |
| Home, Recent apps | Whole-phone windows |
| Screenshot | Whole-phone windows |
| Phone sound | Whole-phone windows |
| Record, Full screen, Close | All windows |
Files and apps
Drag files onto a phone window. An .apk installs on the phone, and any other file goes to its Download folder. A message at the bottom of the window confirms the result.
Screenshots and recording
- Screenshots save as PNG to
Pictures/OpenVysor. - Recordings save as MP4 to
Videos/OpenVysor. They contain video only, for now. - Rotating the phone ends a recording, because an MP4 video track has one fixed size.
Settings
Quality changes apply to windows you open afterwards.
| Setting | Choices | Good to know |
|---|---|---|
| Theme | Light, Dark | |
| Resolution | Native, 2400p to 1024p | 1600p keeps motion smooth on most computers |
| Quality | 2 to 32 Mbps | Higher is sharper and uses more bandwidth |
| Frame rate | 30 to 120 FPS | 60 FPS suits most uses |
| Phone sound | On, Off | The phone goes silent while mirroring |
| Clipboard sync | On, Off | See Privacy |
Troubleshooting
ADB was not found
Install ADB as shown in Install, then restart OpenVysor. Or set OPENVYSOR_ADB to the full path of the program.
The phone isn't listed
Use a data cable rather than a charge-only cable, try another port, and check that USB debugging is on.
It says "Needs authorization"
Unlock the phone and tap Allow on the USB debugging prompt. If no prompt appears, choose Revoke USB debugging authorizations in Developer options and reconnect.
It says "No permission" on Linux
Linux is blocking USB access. Install your distribution's Android udev rules, then replug the cable.
The picture appears but touches do nothing
Some manufacturers need an extra setting. On Xiaomi phones, turn on USB debugging (Security settings).
The picture lags during fast motion
Stay on USB if you can, and set Resolution to 1600p and Frame rate to 60 FPS in Settings. Video is decoded on the CPU for now.
"Arrange windows" does nothing on Linux
Wayland doesn't let apps position their own windows, so you'll need to move them yourself.
Privacy
- Video and input travel only between your phone and your computer. There's no account, and OpenVysor runs no servers.
- Clipboard sync shares text copied on either side, including passwords. Leave it off if you'd rather not.
- Phone screens can show private information. Take care when you share or record yours.
What is tested
Testing so far has used one phone (Nothing A059, Android 16).
| Platform | Builds and unit tests | App opens | Mirrors a real phone |
|---|---|---|---|
| Windows x64 | Yes | Yes | Yes, for app windows |
| Linux x64 | Yes | Yes, on a virtual display | Not yet |
| macOS | Yes, on GitHub Actions | Not yet | Not yet |
Confirmed on the phone: live video of an app in its own window, tapping with the mouse, the window toolbar and full screen, and a clean exit.
Written, still being tested: whole-phone mirroring, dragging, scrolling, typing, rotation, automatic reconnection, clipboard sync, drag and drop, Wi-Fi pairing, phone sound and recording.
Not done yet: hardware video decoding, an installer, code signing, sound in recordings and end-to-end latency measurements.
Architecture
OpenVysor is one Rust program, drawn with egui and OpenGL. ADB and scrcpy-server are separate programs that it runs.
| Stage | What happens |
|---|---|
| Start | The embedded scrcpy-server is pushed to the phone once per app run, and started through adb shell. |
| Transport | An ADB tunnel carries separate sockets for video, audio and control. |
| Decode | H.264 is decoded by the Windows decoder, or by OpenH264 on macOS and Linux. |
| Display | When frames queue up, only the newest is converted and drawn, so the picture stays live. |
| Input | Mouse and keyboard events become scrcpy control messages. |
| Clean-up | Child processes are tied to the app's lifetime, so nothing is left running even after a crash. |
Build from source
Install Rust. On Linux, you also need libasound2-dev, nasm and pkg-config.
git clone https://github.com/SahinurDEV/OpenVysor.git
cd OpenVysor/native
cargo build --release
Run the tests with cargo test. Tests that need a real phone are skipped unless you ask for them:
cargo test --release --test real_device -- --ignored --nocapture
License
OpenVysor is released under the Apache License 2.0 (notice). It includes scrcpy-server (license). It's an independent project, not affiliated with or endorsed by the makers of Vysor.