Skip to content

scrcpy v3.0.1

Compare
Choose a tag to compare
@rom1v rom1v released this 04 Dec 20:43
· 28 commits to master since this release
v3.0.1

To receive a notification when a new release is available, click on Watch > Custom > Releases at the top.


scrcpy v3.0.1

Changes since v3.0:

  • Set main display power for virtual display (#5522)
  • Rollback to old --turn-screen-off method for Android 15 (#5530)
  • Do not reset TCP/IP connections (#5562)
  • Fix socket interruption on macOS (#5536)
  • Fix NullPointerException on certain devices (#5537)
  • Fix camera capture failure without retry (#5539)
  • Accept control events without display (#5542)
  • Build macOS x86_64 release (#5526)
  • Fix .tar.gz compression for release tarballs (#5581)
  • Call static binary without wrapper script (#5560)

Highlights

This release fixes some issues from scrcpy 3.0.

Turn screen off

There were two major problems with the --turn-screen-off feature.

Firstly, Android 15 introduced a new mechanism to set the display power, used by scrcpy 3.0 (#5418). Unfortunately, it does not work as expected: video mirroring was broken or frozen when the display power was off.

Therefore, this version rolls back to the previous mechanism, even for Android 15.

In addition, --turn-screen-off was disabled when mirroring a virtual display because there was no display to power off. However, on some devices, interacting with the virtual display requires the device to be unlocked (with the main screen powered on).

In such cases, it might make sense to power on the device, but with the screen physically turned off (useful in conjunction with stay awake or a custom screen off timeout).

Therefore, the "turn screen off" feature is now enabled with virtual displays, and it changes the power mode of the main display.

TCP/IP multi-instances

When scrcpy was run with --tcpip=<addr>, to make sure a new working connection was established, any previous connection to the same address was disconnected. However, this caused all running instances connected to that address to be killed.

Running several instances of scrcpy on the same device is now useful with virtual displays, so change the default behavior to NOT disconnect.

To force a reconnection, a '+' prefix can be added:

scrcpy --tcpip=+192.168.0.3

Releases

For scrcpy 3.0, static builds were released for Linux (x86_64) and macOS (aarch64).

For 3.0.1, a new build for macOS x86_64 has been added.

Some changes have been made in the way scrcpy finds dependent files (adb, scrcpy-server and icon.png). Static releases are build in "portable" mode, which means that scrcpy must find the expected files in the same directory as the executable. This was implemented via a wrapper shell script in 3.0, but it had limitations (e.g., it did not work properly when executing the script from a symlink in another location). This functionality is now fully implemented in C.

By default, scrcpy uses the provided adb binary. If you want to use the adb binary from your system, set the ADB environment variable to the path of your adb (or just adb so that it is searched in $PATH):

ADB=adb scrcpy

Also, the .tar.gz releases for 3.0 were actually non-gzipped tarballs (#5581). The tarballs for 3.0.1 are now correctly gzipped.

Other specific issues have been fixed; see the full changelog above.