How to Control (Mirror) Your Android Screen in Ubuntu/Fedora/Debian

Got an Android Phone or Tablet? Here’s a step by step guide shows how to get remote control of the device in Linux Desktop either wirelessly or via USB!

This tutorial is inspired by this reddit post, but with more detailed information that could help for beginners.

NOTE: This tutorial is tested and works on Ubuntu 22.04, Linux Mint 20/21, Fedora 36. Though, it should work on most other Linux.

Step 1: Enable USB Debugging mode in Android

In this tutorial, I’m going to use “Android Debug Bridge (adb)” tool to communicate with mobile device. You need to first enable “USB Debugging mode” in Android device.

Technically, there’s NO security issue or performance loss with Dev mode enabled in Android. It just enables all options that you could use for app development!

1. Enable Developer option

Go to “Settings” in Android device, then navigate to “About Phone/About Device”. Then tap on “Build Number” seven times (under ‘Version’ tab in any).

Depends on your device, you may need to type password and PIN code to get pass. And, it will prompt something like “You are now in Developer Mode“, if done successfully.

2. Enable USB Debugging Mode

After step 1, go back Android “Settings”. There should be new “Developer Options” in menu or sub-menu of “Additional Settings”.

Go into that menu, and finally turn on the option for “USB Debugging“.

The menu options may vary on different Android devices. So, I don't provide the screenshots here.
For problem, you may see Android official document for enabling Developer Mode and USB Debugging.

Step 2: Install ADB and Scrcpy in your Linux

Scrcpy is a popular free open-source software for controlling Android device in your Windows, macOS, and Linux Desktop. Most Linux include the package in either official or optional repositories.

Install Scrcpy in Ubuntu/Debian:

Scrcpy in system repository is old! For the latest release, see this step by step tutorial.

Option 1.) Ubuntu user may simply search for and install the app in Ubuntu Software (Snap Store), if you’re OK with Snap package which runs in sandbox.

Install Scrcpy (SNAP) in Ubuntu Software

And, you need to manually install ADB tools by running sudo apt install adb command in terminal.

Option 2.) For those prefer the classic .deb package, press Ctrl+Alt+T on keyboard to open terminal, and run the command below to install scrcpy as well as adb as dependencies:

sudo apt install scrcpy

This command works on Ubuntu 20.04+, Debian 11 (but NOT for Debian 12), Linux Mint 20+ and their based systems.

Install Scrcpy & adb in Ubuntu, Debian, Linux Mint, etc

Install Scrcpy in Fedora:

For Fedora Linux, there’s a Copr repository that contains the software pacakges.

Firstly, open terminal either via start menu or by searching from ‘Activities’ overview.

Open terminal

When terminal opens, run command to add the repository:

sudo dnf copr enable zeno/scrcpy

And, install scrcpy via:

sudo dnf install scrcpy

It mentioned that it requires the rpmfusion external repositories for build dependencies. Though I’m NOT sure if it’s required during installing process, as I’ve already have it in my system.

Install Scrcpy in Arch / Manjaro:

For Arch Linux, the package is available in system repository. Simply run command below in terminal to install it:

sudo pacman -S scrcpy

Or, search for and install it via the powerful ‘pamac’ package manager in Manjaro:

Install Scrcpy in Manjaro

For other Linux, Windows, and macOS, see the software in github project page.

Step 3: Connect Your Android in Linux

If you’ve successfully enabled USB Debugging in Android, and installed Scrcpy & ADB in Linux. Now, connect your mobile phone into Linux PC with USB cable (This is required until you click “ALLOW” in the ‘Allow USB debugging’ pop-up dialog. See the screenshot below).

And click “ALLOW” in Android screen if following pop-up occur in your device:

Allow USB Debugging while connecting
The above Android notification may occur multiple times, while connecting and/or running the commands below.

Option 1: To Control Android in Linux via USB:

If you would like to mirror the Android screen in your Linux desktop via USB cable, open terminal and run commands below one by one (tested only in Fedora 36):

  • Run command to start the daemon to listen on USB:
    adb usb

Option 2:  To Control Android wirelessly:

Or, you may connect wirelessly via TCPIP protocol, though MUST in same local network. Also, open terminal either from start menu or by searching from ‘Activities’ overview.

Open terminal
  • Start/Restart the adb daemon and listen on TCP port:
    adb tcpip 5555
  • Connect via your Android’s IP address (replace the IP below):
    adb connect 192.168.0.158:5555
  • Now, disconnect USB cable. It’s no longer required.

Finally, start Scrcpy either by running scrcpy command in terminal or by launching from start menu.

Here you may need to authenticate by click “ALLOW” USB Debugging in Android screen (if prompted). And if everything goes well, your Android screen should appear on your Linux desktop.

Or, start scrcpy from command line by running command: scrcpy --select-tcpip (for wireless mode) or scrcpy --select-usb (for usb mode) depends on how you started the adb daemon.

Remote Control Android in Ubuntu

Step 4: Create App shortcut icon for Ubuntu/Debian

For Ubuntu/Debian users installed Scrcpy package through apt install scrcpy command, there’s NO shortcut icon for the app. Instead of launching it every time by running command in terminal, here’s how to manually create a shortcut icon for it.

  1. First, open terminal either from start menu or by pressing Ctrl+Alt+T on keyboard.
  2. When terminal opens, run command to create a shortcut file and edit it via gedit text editor:
    gedit ~/.local/share/applications/scrcpy.desktop

    Depends on your desktop environment, replace gedit with gnome-text-editor, xed, or nano text editor.

  3. When file opens, paste following lines and save it. For nano command line text editor, press Ctrl+X, type y, and finally hit Enter to save file.
    [Desktop Entry]
    Name=scrcpy
    GenericName=Android Remote Control
    Comment=Display and control your Android device
    # For some users, the PATH or ADB environment variables are set from the shell
    # startup file, like .bashrc or .zshrc… Run an interactive shell to get
    # environment correctly initialized.
    Exec=/bin/sh -c '"$SHELL" -i -c scrcpy'
    Icon=scrcpy
    Terminal=false
    Type=Application
    Categories=Utility;RemoteAccess;
    StartupNotify=false

After that, Debian/Ubuntu users should be able to search for and launch Scrcpy from start menu or ‘Activities’ overview. If missing icons file, grab it from the project page and store in ‘.local/share/icons‘ folder.

(Optional) Disconnect

You can close the app window in Linux desktop to stop mirroring the Android screen. And, re-connect via either scrcpy command or the previous shortcut you set.

But, if you don’t want to remote screen your Android device any more. Disconnect it via command:

adb disconnect 192.168.0.158:5555

Replace the IP address to yours and done.