Skip to content

Releases: Genymobile/scrcpy

scrcpy v2.5

29 Jun 16:03
v2.5
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases on the top.


scrcpy v2.5

Changes since v2.4:

  • Add scrcpy window without video playback (#4727, #4793, #4868)
  • Add a shortcut to pause/unpause display (#1632, #4748)
  • Forward mouse hover events (#2743, #3070, #5039)
  • Add option to configure mouse bindings (#5022)
  • Forward all clicks by default for UHID/AOA (#5022)
  • Simplify shortcut modifiers (#4741)
  • Fix rotation shortcut for Android 14 (#4740, #4841)
  • Fix YUV conversion for full color range (#4756)
  • Fix camera sizes listing on some devices (#4852)
  • Fix thread leak on Windows (#4973)
  • Upgrade FFmpeg to 7.0.1 in Windows releases
  • Upgrade SDL to 2.30.4 in Windows releases
  • Upgrade platform-tools (adb) to 35.0.0 in Windows releases
  • Various technical fixes

Highlights

Control-only

By default, scrcpy now always opens a window (unless --no-window is passed), even without video stream (#4868).

In particular, this gives the possibility to solely control the device without screen mirroring:

scrcpy --no-video --no-audio

window

In that case, UHID mouse mode is used by default. It works both over USB and wirelessly.

This is different from OTG mode, which does not require USB debugging at all. Here, the standard mode is used but with the possibility to disable video playback.

Pause/unpause display

New shortcuts allow to pause (MOD+z) and unpause MOD+Shift+z the display (#4748).

It only impacts rendering, the device is still captured, the video stream transmitted to the device, and recorded if recording is enabled.

This can be useful for example during a presentation, to temporarily move to a different app on the device without showing the content.

Mouse hover

Initially, mouse motion (hover) events were not forwarded to the device when no mouse button was pressed. The reason was that at the time (6 years ago), these events had absolutely no impact on the devices I tested.

But on newer Android versions and newer apps, mouse hover events trigger animations and highlight items. So this new release forwards hover events, with a new option --no-mouse-hover to disable them.

Mouse bindings

By default, mouse secondary clicks triggers shortcuts:

  • right click: BACK
  • middle click: HOME
  • 4th click: APP_SWITCH
  • 5th click: expand notification panel

An option --forward-all-clicks had been added some time ago to forward all clicks to the device instead.

This release replaces --forward-all-clicks by a more flexible option --mouse-bind=xxxx. The argument must be exactly 4 characters, one for each secondary click:

--mouse-bind=xxxx
             ^^^^
             ||||
             ||| `- 5th click
             || `-- 4th click
             | `--- middle click
              `---- right click

Each character must be one of the following:

  • +: forward the click to the device
  • -: ignore the click
  • b: trigger shortcut BACK (or turn screen on if off)
  • h: trigger shortcut HOME
  • s: trigger shortcut APP_SWITCH
  • n: trigger shortcut "expand notification panel"

For example:

scrcpy --mouse-bind=bhsn  # the default mode
scrcpy --mouse-bind=++++  # forward all clicks (default for AOA/UHID)
scrcpy --mouse-bind=++bh  # forward right and middle clicks,
                          # use 4th and 5th for BACK and HOME

With UHID and AOA mouse modes (when the mouse cursor appears on the device), all clicks are now forwarded by default (but the behavior can be changed using --mouse-bind).


scrcpy v2.4

02 Mar 23:17
v2.4
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases at the top.


scrcpy v2.4

Changes since v2.3.1:

  • Add UHID keyboard and mouse support (#4473)
  • Simulate tilt multitouch by pressing Shift (#4529)
  • Add rotation support for non-default display (#4698)
  • Improve audio player (#4572)
  • Adapt to display API changes in Android 15 (#4646, #4656, #4657)
  • Adapt audio workarounds to Android 14 (#4492)
  • Fix clipboard for IQOO devices on Android 14 (#4492, #4589, #4703)
  • Fix integer overflow for audio packet duration (#4536)
  • Rework cleanup (#4649)
  • Upgrade FFmpeg to 6.1.1 in Windows releases (#4713)
  • Upgrade libusb to 1.0.27 in Windows releases (#4713)
  • Various technical fixes

Highlights

UHID keyboard

This is a huge improvement for typing text, especially in non-English languages:

scrcpy --keyboard=uhid
scrcpy -K  # short version

It simulates a physical keyboard. Contrary to the default text injection method, it is not limited to ASCII and some other characters.

This is functionally equivalent to the existing AOA mode (--keyboard=aoa), except it is not limited to USB (it also works wirelessly) and it works on Windows while mirroring (and without driver issues).

The keyboard layout must be configured (once and for all) on the device to match that of the computer (that's the reason why it's not the default). To open the keyboard settings, several possibilities:

  • from the scrcpy window (when uhid or aoa is used), by pressing MOD+k (see shortcuts)
  • from the device, in Settings β†’ System β†’ Languages and input β†’ Physical devices
  • from a terminal on the computer, by executing adb shell am start -a android.settings.HARD_KEYBOARD_SETTINGS

From there, it is also possible to enable or disable the virtual keyboard.

See #4473.

UHID mouse

Similarly, it is possible to simulate a physical mouse:

scrcpy --mouse=uhid
scrcpy -M  # short version

Like in AOA mode (--mouse=aoa), the computer mouse is "captured": the mouse pointer disappears from the computer and appears on the Android device instead.

Special capture keys, either Alt or Super, toggle (disable or enable) the mouse capture. Use one of them to give the control of the mouse back to the computer.

See #4473.

Simulate tilt

It was already possible to simulate two symmetric fingers to pinch-to-zoom or rotate by using Ctrl+click-and-move:

ctrl.mp4

This new version introduces a variant to tilt by using Shift+click-and-move-up-or-down:

shift.mp4

Technically, scrcpy generates additional touch events from a "virtual finger" at a location inverted through the center of the screen. When pressing Ctrl the x and y coordinates are inverted. Using Shift only inverts x.

See #4529 and documentation.

Android 15

A lot of refactors related to display occurred in Android, which required changes to continue working with the latest Android beta versions.

See #4657.


scrcpy v2.3.1

02 Dec 11:44
v2.3.1
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases on the top.


scrcpy v2.3.1

Changes since v2.3:

  • Add workaround for issues on Samsung devices (#4467)
  • Fix error in a headless environment without display (#4477)
  • Fix AV1 demuxing (#4487)
  • Fix build issue on macOS (4135c41)

Highlights

Version 2.3 fixed the camera feature for many devices. But these changes caused issues on some Samsung devices (#4467).

This minor release fixes these issues.


scrcpy v2.3

25 Nov 21:18
v2.3
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases on the top.


scrcpy v2.3

Changes since v2.2:

  • Add flipped display orientation (#1380, #3819, #4441)
  • Add recording rotation (#4441)
  • Add FLAC audio codec (#4410)
  • Add raw audio (WAV) recording (2004881)
  • Fix turn screen off for Android 14 (#3927, #4456)
  • Fix camera issues on many devices (#4392)
  • Fix clipboard synchronization when no video (#4418)
  • Fix screen refresh on device rotation (7e3b935)
  • Fix .desktop files on Linux (#4448)
  • Upgrade SDL to 2.28.5 in Windows releases
  • Various technical fixes

Highlights

Camera

Many problems related to camera capture with specific devices have been fixed.

If the new camera feature did not work on your device with scrcpy 2.2, you should definitely retry with scrcpy 2.3. (#4392)

Orientation

A new option --orientation allows to rotate or flip the video. (It replaces the deprecated --rotation option.)

It is possible to change the display orientation dynamically using shortcuts:

  • rotate display left: MOD+←
  • rotate display right: MOD+β†’
  • flip display horizontally: MOD+Shift+← or MOD+Shift+β†’
  • flip display vertically: MOD+Shift+↑ or MOD+Shift+↓

(The two first ones already existed).

The rotation can now be applied to recording as well. For example, to capture and record a portrait video from the camera:

scrcpy --video-source=camera --camera-size=1920x1080 --orientation=90 --record=portrait.mp4

(It is not possible to apply a flip to a recorded file though, the formats and/or video players do not handle flipping as metadata, without re-encoding the video stream.)

More details in #4441 (and the documentation).

Android 14

The turn screen off feature was broken in Android 14.

It is now fixed πŸŽ‰ Read some technical details.


scrcpy v2.2

01 Nov 17:55
v2.2
Compare
Choose a tag to compare

scrcpy v2.2

Changes since v2.1.1:

  • Add option to mirror camera (#241, #4213)
  • Add --pause-on-exit (#4130)
  • Rename --display (deprecated) to --display-id
  • Fix device disconnection detection with --no-video (#4207)
  • Accept --turn-screen-off without video playback (#4175)
  • Upgrade SDL to 2.28.4 in Windows releases
  • Upgrade platform-tools to 34.0.5 (adb) in Windows releases
  • Various technical fixes

Highlights

Camera capture

The previous minor version introduced --audio-source=mic to transmit the microphone instead of the device audio output.

This new version introduces --video-source=camera to mirror the device camera instead of the device screen.

A bunch of new options have been added:

  • --list-cameras
  • --list-camera-sizes
  • --camera-id=
  • --camera-facing=
  • --camera-ar=
  • --camera-size=
  • --camera-fps=
  • --camera-high-speed

For example:

scrcpy --video-source=camera --camera-facing=front --camera-size=1920x1080

Check the camera documentation for more details.

Android 14

Since the last scrcpy version, Android 14 has been released.

Unfortunately, several scrcpy features have been broken by changes in this new Android version:

  • --turn-screen-off (#3927): some internal functions have been removed, without replacement that scrcpy could use (it seems it also impacts the feature in Android Studio)
  • --lock-video-orientation (not window --rotation, which is independent) (#4011): some function parameters are now ignored
  • --crop (also #4011): some function parameters are now ignored

Reported to Google/Android: issue 303565669


scrcpy v2.1.1

14 Jul 21:12
v2.1.1
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases on the top.


scrcpy v2.1.1

Changes since v2.1:

  • Ignore fold change events for other display ids (#4120)
  • Fix Meizu deadlock (#4143, #4146)
  • Fix possible division by zero (#4115)
  • Increase attempts to start AudioRecord (#4147)

scrcpy v2.1

21 Jun 23:31
v2.1
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases on the top.


scrcpy v2.1

Changes since v2.0:

  • Add --no-video to mirror audio only (#3978)
  • Add option to select the device microphone as audio source (#4044)
  • Rename --no-display to --no-playback (#4033)
  • Add --no-video-playback and --no-audio-playback (#4033)
  • Add --time-limit to automatically stop after a given delay (#3752, #4052)
  • Add option to change the audio output buffer size (#3793)
  • Add option to kill adb on close (#205, #2580, #4049)
  • Support dynamic device folding (#3960, #3979)
  • Use OpenGL 3.0+ on macOS to support trilinear filtering (#3895)
  • Add (partial) support for Android 14 (#3784, #4074, #4075)
  • Improve delay buffer estimation (2f9396e)
  • Fix --tcpip not working in some cases (669e9a8)
  • Fix audio support for Vivo phones (#3805, #3862)
  • Fix audio support for Honor phones (#4015)
  • Fix copy-paste on Honor Magic 5 Pro (#3885)
  • Fix audio capture starting on some Android 11+ devices (#3796)
  • Fix V4L2 regression (#3795)
  • Fix support of Nvidia Shield (#3801)
  • Fix .desktop files for Linux (#3817)
  • Fix error on device rotation while minimized on Windows (#3947)
  • Fix extra audio glitches on audio buffer underflow (#4045)
  • Automatically fix PTS for buggy device encoders (#4054)
  • Upgrade SDL to 2.28 in Windows releases (#3825)
  • Update developer documentation (#3811)
  • Various technical fixes

Highlights

Audio only

Scrcpy v2.0 introduced audio forwarding, which could be disabled by --no-audio to mirror video only.

This version adds the symmetric option --no-video to forward audio without video.

Note that in many cases, including listening to music, audio latency is not critical, so it might be interesting to add buffering to minimize audio glitches:

scrcpy --no-video --audio-buffer=200
# interrupt with Ctrl+C

The capture can be recorded to an audio file:

scrcpy --no-video --record=file.opus
scrcpy --no-video --audio-codec=aac --record=file.aac
# .m4a/.mp4 and .mka/.mkv are also supported for both opus and aac

Capture device microphone

By default, the device audio output is forwarded.

It is now possible to capture the device microphone instead:

scrcpy --audio-source=mic

For example, to use the device as a dictaphone and record a capture directly on the computer:

scrcpy --audio-source=mic --no-video --no-playback --record=file.opus

No playback

The option -N, initially --no-display, has been renamed to --no-playback, since it impacts both video and audio.

In addition, two options --no-video-playback and --no-audio-playback have been added to disable video and audio playback separately (--no-playback is an alias for both).

For example:

scrcpy --v4l2-sink=/dev/video2 --no-video-playback  # keep audio playback
scrcpy --record=file.mkv --no-audio-playback        # keep video playback

Time limit

A new option --time-limit allows to stop scrcpy automatically after a given delay in seconds.

For example, to record the device for 20 seconds:

scrcpy --record=file.mkv --time-limit=20

Foldable devices

Scrcpy now reacts to "fold changed" events, so it should properly mirrors foldable devices (#3979).

Device-specific fixes

Several fixes (or workarounds) for specific devices have been implemented to make audio work. If you had audio issues with your device on scrcpy v2.0, you should try this new version.

Android 14

Several errors occurred when running scrcpy with Android 14 preview, some of them have been fixed.

One notable exception is the --turn-screen-off feature, which still does not work on Android 14. See #3784.

Developer documentation

The developer page was outdated. It has been updated for scrcpy 2.x.

It's not exhaustive, but it gives some relevant information and matches the current version.


scrcpy v2.0

12 Mar 01:56
v2.0
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases on the top.


scrcpy v2.0

Changes since v1.25:

  • Add Audio forwarding (#14, #3757)
  • Add H265 and AV1 video codec support (#3713)
  • Add --list-displays and --list-encoders
  • Fix clicks on Chrome when --forward-on-clicks is enabled (#3635)
  • Retry on spurious encoder error (#3693)
  • Make --turn-screen-off work on all displays (#3716)
  • Restore resizing workaround for Windows (#3640)
  • Upgrade platform-tools to 34.0.1 (adb) in Windows releases
  • Upgrade FFmpeg to 6.0 in Windows releases (and use a minimal build)
  • Upgrade SDL to 2.26.4 in Windows releases

Highlights

Read the blog post announcing the release: scrcpy 2.0, with audio.


scrcpy v1.25

22 Dec 12:04
v1.25
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases on the top.


scrcpy v1.25

Changes since v1.24:

  • Adapt copy-paste internals for Android 13 (#3497)
  • Add support for high-precision scrolling (#3363, #3369)
  • Add desktop entry files for Linux (#295, #296, #748, #1636, #3351)
  • Add bash and zsh autocompletion for -s/--serial (#3522, #3523)
  • Use current adb port (if any) for --tcpip (#3591, #3592)
  • Add fallback to get display information on some devices (#3416, #3573)
  • Fix click behavior when --forward-all-clicks is set (#3568, #3579)
  • Fix support for non-ASCII characters in window title (#2932, #3547)
  • Fix getDisplayIds() crash on some versions of Android 13 beta (#3446)
  • Upgrade platform-tools to 33.0.3 (adb) in Windows releases
  • Upgrade FFmpeg to 5.1.2 in Windows 64-bit releases
  • Upgrade SDL to 2.26.1 in Windows releases
  • Various technical fixes

Highlights

Android 13

Recent method signature changes in Android 13 broke copy-paste for scrcpy (#3497). This version adapt the calls to make it work again.

High-precision scrolling

This version uses high-precision scrolling if the computer supports it. As a result, scrolling is smoother, as you can see in #3363.

Serial auto-completion

When several devices are connected, it might be necessary to pass the serial of the device to mirror.

The serial is now auto-completed in bash and zsh:

scrcpy -s <tab><tab>  # auto-complete by the devices listed by "adb devices"

Menu shortcuts

Two new menu shortcuts are added on Linux (here is a screenshot on XFCE):

menu_scrcpy

They allow to launch scrcpy (without arguments) either with a visible terminal or not.

To pass command line arguments, it must still be started from a terminal or a script though.


scrcpy v1.24

28 Apr 19:18
v1.24
Compare
Choose a tag to compare

To receive a notification on new releases, click on Watch > Custom > Releases on the top.


scrcpy v1.24

Changes since v1.23:

  • Adapt input injection for Android 13 (#3186, #3190)
  • Add --no-power-on (#3148, #3210)
  • Read $ANDROID_SERIAL if no selector is specified (#3111, #3113)
  • Consider emulators as TCP/IP devices (-e) (#3137)
  • Apply requested window size in OTG mode (#3099, #3219)
  • Add specific exit code for device disconnection (#3083, #3085)
  • Enable libusb support for Windows 32-bit releases (#3204, #3206)
  • Upgrade libusb to 1.0.26 in Windows releases (#3206)
  • Upgrade platform-tools to 33.0.1 (adb) in Windows releases (#3206)
  • Upgrade SDL to 2.0.22 in Windows releases
  • Upgrade FFmpeg to 5.0.1 in Windows 64-bit releases
  • Improve some error messages
  • Various technical fixes

Highlights

Android 13 (preview)

Input injection from previous scrcpy versions failed on Android 13 preview (#3186). This version makes it work.

HID/OTG support for Windows 32-bit

The previous scrcpy version (v1.23) added HID/OTG support for all platforms except Windows 32-bit. By upgrading to the latest libusb version, Windows 32-bit is now supported.

$ANDROID_SERIAL

adb uses the ANDROID_SERIAL environment variable if no -s is specified. Use this same variable in scrcpy if no selector is specified (#3111):

# via a command line parameter
adb -s 0123456789abcdef shell
scrcpy -s 0123456789abcdef

# via an environment variable
export ANDROID_SERIAL=0123456789abcdef
adb shell
scrcpy

On Windows, setting an environment variable is slightly different:

:: in cmd
set ANDROID_SERIAL=0123456789abcdef
# in PowerShell
$env:ANDROID_SERIAL = '0123456789abcdef'

No power on

By default, on start, the device is powered on. A new option has been added to disable this behavior:

scrcpy --no-power-on