Open-source project
wsvn53/scrcpy-mobile avatar
wsvn53/scrcpy-mobile

scrcpy-mobile puts an Android remote control on an iPhone

Ported scrcpy for mobile platforms, to remotely control Android devices on your iPhone or Android phone.

1,002 stars84 forksCMIT

At a glance

What is it?
scrcpy-mobile is a port of scrcpy that lets an iPhone drive an Android device over ADB on WiFi, with clipboard sync, iOS keyboard forwarding and audio playback on the phone. It is iOS only today, and the VNC fallback is the weak point.
Who is it for?
Use scrcpy-mobile when you need to reach an Android device from an iPhone and a laptop is not an option, and stay on the ADB path rather than the VNC one. Do not expect it to work today as Android to Android control, which the project lists as future work, and check the Android side version, because pairing codes need Android 10 or later and audio forwarding needs Android 11 or later.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 45 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The same scrcpy protocol, with the client on your phone

scrcpy is a desktop tool that mirrors and controls an Android device over ADB, and this project is a port of it for mobile platforms, so that an Android device can be controlled from an iPhone or an Android phone. The scope is narrower than the name suggests: the README states that it currently supports controlling Android devices from iOS only, and that Android controlling Android devices will be supported in the future.

That constraint defines the audience. The typical case is an iPhone user who needs to reach an Android box, a test device or a friend's phone, without a laptop in the picture. The repository layout shows how the port is done: the upstream scrcpy tree sits in a scrcpy directory as a git submodule, the porting layer lives in porting/, the iOS application is scrcpy-ios/ and the shared application code is in scrcpy-app/.

The application itself is C with native toolchain work around it, and it is distributed on the App Store as Scrcpy Remote, so an end user installs it like any other phone app rather than building anything.

Two connection paths, and the VNC one is the weaker

The app offers two ways in, and the README is clear about their relative quality.

The default mode after installation is VNC, and you can switch to ADB over WiFi in three ways: open the scrcpy2://adb URL scheme, type the text adb in the Host box and press Connect, or type 5555 in the Port box and press Connect. The ADB path is the real one, and it is where the hardware decoding, the tuned gestures and the rest of the port live.

The VNC path exists as a fallback, and it comes with a stated warning. The VNC mode can only connect to a VNC port that is proxied with websockify, and it is based on noVNC, which is a web VNC client, so the performance and the experience may not be good. That is an honest description of the mechanism: the phone acts as a browser displaying a VNC session, and every frame crosses a websocket.

So a reader should treat VNC as a way to get something on screen while setting up the ADB route, not as an equal alternative.

Two ways to authorise the device: adb tcpip 5555 or a pairing code

The Android side needs ADB over WiFi enabled, and there are two documented routes.

The first is the classic one. On the Android device you run adb tcpip 5555, and the app connects to that port. After the device is authorised, scrcpy continues to connect. This route needs a USB step first to switch ADB into TCP/IP mode, which is why it is the one that suits a device you can plug in once.

sh
adb tcpip 5555

The second is wireless pairing, and it only works on Android 10 and later. In the app you open the menu icon in the top left corner of the main window and choose Pair With Pairing Code. On the Android device you go to Settings, then System, then Developer Options, then Enable Wireless Debugging, then Pair device with pairing code, and you follow the on-device tips to pair.

The feature list also mentions adbkey management, with the ability to generate, modify, import and export keys, which is what makes a paired device stay paired instead of asking for authorisation on every session.

What the phone side adds: clipboard, keyboard and audio

The port is not only a screen mirror with taps. The feature list describes several things the phone does with the remote device.

Clipboard contents are synchronised between the iPhone and the remote Android device, which is the single most useful item on that list when the phone is your only computer. The iOS keyboard can be toggled and keys can be sent to the remote device, so you type on the iPhone into the Android device. Android navigation buttons, specifically Back, Home and Switch App, are available in the interface, and audio can be forwarded to the iPhone for Android 11 and later devices.

The hardware decoding claim in the feature list is the reason the port is not just a screen share: with hardware decoding, less power and CPU are consumed, which is what makes a long session on a phone bearable. The gestures were tuned for an unstable network, since a phone on mobile data loses packets and a desktop on a wired link does not.

The result is a remote control that tries to hide the difference between a phone and a laptop, which is the right goal for the use case.

Installing: the App Store build, or compile the port yourself

For ordinary use there is nothing to build. Scrcpy Mobile is available on the App Store, and the README links the iTunes download badge for the Scrcpy Remote application.

For developers the build is a make workflow. You build the dependencies first, then the server side, and then you open the Xcode project:

sh
make libs
make -C porting scrcpy-server

After that you open scrcpy-ios/scrcpy-ios.xcodeproj to build and run. The Makefile shows what the libs target does: it updates all submodules recursively and then builds the porting libraries into an output directory with iphone and android sub-directories.

The release tooling is in the same Makefile. There is a debug-ipa target that archives an IPA with full debug symbols and an upload-dev-ipa target that sends an already built IPA to the internal OTA service, with the path passed as IPA=path/to/App.ipa, and an upload-appstore target that archives a release build and uploads it to App Store Connect or TestFlight with the build number managed by Xcode. The help target lists all of them.

The scrcpy2 URL scheme is the scripting surface

The app can be driven from outside itself, which is what makes it usable from a workflow or a shortcut rather than only from the app window.

Two schemes switch the mode, scrcpy2://adb and scrcpy2://vnc, and both can be visited as links. Once the options are set, a Copy URL Scheme button produces the string, and the README suggests creating a shortcut in the Shortcuts.app to connect to scrcpy quickly. The example string shows the shape:

text
scrcpy2://example.com:5555?bit-rate=4M&max-size=1080

So a connection is a URL with a host, a port and query parameters, and the bit-rate and max-size parameters are visible in that example. That is a different integration style from the desktop tool, where the same options are command line flags, and it fits the phone: a saved shortcut in Shortcuts.app is the equivalent of a shell alias.

The project also keeps a Telegram channel for questions, which is where support for this port actually happens.

Two release trains, and the iOS app has moved faster

The release history shows two products living in one repository, and the gap between them is the thing to understand before you rely on the project.

The recent tags are v4.6.0, named Scrcpy Remote v4.6.0, published on 2026-09-08, and before that v2.3 and v2.0 under the name scrcpy-ios, dated 2024-02-20 and 2023-10-05. The naming change marks the shift from a port called scrcpy-ios to a product called Scrcpy Remote, and the version lines restarted with it. The last push to the main branch was on 2026-09-08, the same day as the v4.6.0 tag, and the repository is not archived.

The licence is the MIT licence, with the copyright notice naming Ethan and dated 2022, and it covers the port as shipped. The upstream scrcpy it builds on arrives as a git submodule rather than as vendored source, which matters for anyone auditing what is actually in the binary: the submodule points at a specific upstream commit, and the submodule update is part of the build.

The upgrade cost for a user is an App Store update. For a developer, it is the submodule update and the Xcode build, with the phone and Android device both needing recent enough operating systems for the features you want.

Editorial conclusion

Use scrcpy-mobile when you need to reach an Android device from an iPhone and a laptop is not an option, and stay on the ADB path rather than the VNC one. Do not expect it to work today as Android to Android control, which the project lists as future work, and check the Android side version, because pairing codes need Android 10 or later and audio forwarding needs Android 11 or later. First install Scrcpy Remote from the App Store and try the adb tcpip 5555 path before setting up a Shortcuts workflow around the scrcpy2 URL scheme.

Frequently asked questions

Can scrcpy-mobile control an Android device from an Android phone?

Not yet. The README states that it currently supports controlling Android devices from iOS only, and that Android controlling Android devices will be supported in the future.

How do I connect an Android device to scrcpy-mobile over WiFi?

Enable ADB over WiFi on the Android device by running adb tcpip 5555, then connect the app on port 5555, or type adb in the Host box and press Connect. On Android 10 and later you can instead use Pair With Pairing Code from the menu icon and pair from Developer Options.

Why is the VNC mode in scrcpy-mobile slow?

The VNC mode can only connect to a VNC port that is proxied with websockify, and it is based on noVNC, a web VNC client, so the README says the performance and the experience may not be good. The ADB over WiFi mode is the intended path.

How do I build scrcpy-mobile from source?

Run make libs to update the submodules and build the porting libraries, then make -C porting scrcpy-server, and finally open scrcpy-ios/scrcpy-ios.xcodeproj in Xcode to build and run. The Makefile also has targets for building a debug IPA and for uploading a build to TestFlight.

Official sources

  1. Issues
  2. License: MIT
  3. README
  4. Releases
  5. wsvn53/scrcpy-mobile on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/wsvn53-scrcpy-mobile.svg)](https://hysenlabs.com/projects/wsvn53-scrcpy-mobile)

Was this useful?