How to Control an Android Phone With a Broken Touchscreen Using scrcpy and ADB

A broken touchscreen does not always mean an Android phone is useless.

If the display is still working and USB debugging is available, you can control the entire phone from your computer using ADB and scrcpy.

This was especially useful for one of my old Honor phones. The touchscreen stopped working, but the phone itself was still perfectly functional.

Instead of replacing the display, I started controlling the phone from my Mac and eventually turned it into a small server.

In this guide, I’ll show you how to do the same.

What We Are Going to Use

We need:

  • Android phone
  • USB cable
  • Mac, Linux, or Windows computer
  • ADB
  • scrcpy
  • USB debugging enabled on the Android phone

The final setup looks like this:

Android Phone
     │
     │ USB / ADB
     │
     ▼
Computer
     │
     └── scrcpy
            │
            ▼
     Android screen
     on your computer

You can then use your mouse and keyboard almost like they are connected directly to the phone.


1. Enable Developer Options

If the touchscreen still works partially, first enable Developer Options.

Open:

Settings
→ About phone

Find:

Build number

Tap it several times until Android says Developer Options have been enabled.

Then open:

Settings
→ System
→ Developer options

Enable:

USB debugging

When you connect the phone to your computer, Android may show:

Allow USB debugging?

Select:

Always allow from this computer

and tap:

Allow

If your touchscreen is completely dead and USB debugging was never enabled before, things become much more difficult because Android intentionally requires user authorization for ADB.


2. Install ADB on macOS

If you are using a Mac with Homebrew:

brew install android-platform-tools

Check that ADB works:

adb version

Now connect the Android phone using USB.

Run:

adb devices

You should see something like:

List of devices attached
AFYU9K2402611387    device

If the device says:

unauthorized

look at the Android screen and accept the USB debugging authorization request.


3. Install scrcpy

On macOS:

brew install scrcpy

Check the installation:

scrcpy --version

Now start it:

scrcpy

If everything is working, the Android display should immediately appear in a window on your computer.

You can now use:

Mouse click       → Tap
Mouse drag        → Swipe
Keyboard          → Type
Scroll wheel      → Scroll

This effectively gives your phone a replacement touchscreen.


4. Select the USB Device if Multiple ADB Devices Exist

I encountered this after enabling both USB debugging and Wireless Debugging.

Running:

scrcpy

gave:

ERROR: Multiple (2) ADB devices

ADB could see the same phone twice:

USB connection
Wireless ADB connection

The easiest solution is to tell scrcpy to use USB:

scrcpy -d

You can also specify the exact serial number:

scrcpy -s AFYU9K2402611387

To see the available devices:

adb devices

If you do not need the wireless ADB connection, disconnect it:

adb disconnect

Then:

scrcpy

should work normally again.


5. Control Android Entirely From the Computer

Once scrcpy opens, you can use the phone almost normally.

For example, I was able to use it to:

Open Android Settings
Configure Wi-Fi
Configure Tailscale
Install apps
Change permissions
Enable developer settings
Manage battery settings
Configure VPN
Open Termux

This is especially useful if:

Display works
+
Touchscreen does not work

The phone can remain permanently connected to a computer whenever you need full Android control.


6. Open Apps Using ADB

ADB can also launch Android applications directly.

For example, open Android Settings:

adb shell am start -a android.settings.SETTINGS

You can list installed packages:

adb shell pm list packages

Find a particular package:

adb shell pm list packages | grep tailscale

For example:

package:com.tailscale.ipn

This becomes useful when maintaining a phone remotely.


7. Reboot the Phone Using ADB

Once ADB is connected, you do not need the touchscreen to reboot Android.

Simply run:

adb reboot

The phone will immediately reboot.

This became especially useful for my broken-screen phone because I was configuring it as an unattended server and needed to repeatedly test boot scripts.

You can confirm the phone reconnects with:

adb devices

8. Wireless ADB

Android also supports Wireless Debugging on newer versions.

Open:

Developer options
→ Wireless debugging

Choose:

Pair device with pairing code

Android will show an IP address, pairing port, and pairing code.

On your computer:

adb pair PHONE_IP:PAIRING_PORT

For example:

adb pair 192.168.1.25:42151

Enter the pairing code.

One important thing to understand is that the pairing port and connection port are different.

Do not assume that the port used by:

adb pair

can also be used with:

adb connect

Wireless Debugging normally creates another connection port after pairing.


9. ADB Pairing Works but Connection Is Refused

This was one of the problems I encountered.

Pairing completed successfully, but:

adb connect IP:PORT

returned:

Connection refused

The main reason was that I was dealing with Android’s dynamically assigned Wireless Debugging ports.

The pairing server and actual ADB connection server are separate.

In our case, Tailscale also complicated discovery because Android sometimes exposed the Tailscale network address rather than the local Wi-Fi address.

Eventually, using USB ADB proved much more reliable.

For a phone that is permanently sitting at home as a server, I prefer:

USB ADB
+
scrcpy

for administrative access.


10. adb mdns services Shows Nothing

Normally you can try:

adb mdns services

to discover wireless ADB services.

However, in my setup it initially returned nothing.

This can happen depending on the network and VPN configuration.

Since Tailscale was running on the phone, mDNS discovery was not reliable.

If this happens, do not assume ADB itself is broken.

USB debugging is usually the easiest fallback:

adb devices

Then:

scrcpy -d

11. Use scrcpy Over Wireless ADB

If Wireless Debugging is already working, scrcpy can use the TCP/IP ADB device.

If both USB and wireless connections exist:

scrcpy -e

selects the TCP/IP device.

For USB:

scrcpy -d

This makes it easy to switch between:

USB
or
Wi-Fi

depending on how you are accessing the phone.

For reliability, however, I still prefer USB when working on a phone with a completely dead touchscreen.


12. Keep USB Debugging Available

Some Android manufacturers can aggressively disable debugging or background functionality.

On my Honor phone there were additional Developer Options related to allowing ADB while the phone is charging.

If your phone provides something like:

Allow ADB debugging in charge-only mode

enable it.

Also make sure the computer has already been authorized for ADB.

That way, connecting the USB cable later should give you immediate access:

adb devices

followed by:

scrcpy -d

13. Install Apps Using ADB

You can also install APK files without touching the phone.

For example:

adb install app.apk

To reinstall or update:

adb install -r app.apk

This is very useful on a broken touchscreen device.

You can download an APK on your computer and install it directly through USB.


14. Grant App Permissions Using ADB

Some permissions can also be granted remotely.

For example, I needed camera permission for the Termux:API companion app:

adb shell pm grant com.termux.api android.permission.CAMERA

ADB can therefore become a very powerful maintenance tool when you cannot reliably interact with the touchscreen.


15. Disable Unwanted Apps

ADB can also disable apps you do not need.

For example:

adb shell pm disable-user --user 0 PACKAGE_NAME

To re-enable:

adb shell pm enable PACKAGE_NAME

For an old phone being reused as a server, this allows you to disable unnecessary apps without rooting Android.

Do not blindly disable system packages.

Packages related to Android System, System UI, networking, permissions, Settings, VPN, WebView, and your server applications should be left alone.


16. Useful ADB Commands

Here are some commands I now regularly use with the broken-screen phone.

Check connected devices:

adb devices

Open scrcpy using USB:

scrcpy -d

Reboot:

adb reboot

Open Settings:

adb shell am start -a android.settings.SETTINGS

List packages:

adb shell pm list packages

Install an APK:

adb install app.apk

Disable an app:

adb shell pm disable-user --user 0 PACKAGE_NAME

Enable it again:

adb shell pm enable PACKAGE_NAME

View Android properties:

adb shell getprop

Final Setup

My broken-screen Honor eventually became much more useful than I expected.

The control setup now looks like this:

                    Honor Android Phone
                           │
              ┌────────────┴────────────┐
              │                         │
          Normal use               Administration
              │                         │
           Termux                    USB ADB
              │                         │
       SSH / Samba / Web              scrcpy
                                        │
                                        ▼
                                Mac mouse + keyboard

The touchscreen is no longer important.

Most of the time the phone runs unattended.

When I need to change an Android setting, install something, grant a permission, or troubleshoot the phone, I connect the USB cable and run:

scrcpy -d

Within a few seconds, the entire Android interface appears on the Mac.

So before throwing away an Android phone because the touchscreen is broken, check whether the display, USB port, and ADB still work.

With ADB + scrcpy, the phone may still have years of useful life left.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top