Skip to content Skip to sidebar Skip to footer

Try Again Later (10). G10sm406835otg.81 - Gsmtp

scrcpy (v1.23)

scrcpy

pronounced "screen copy"

Read in another linguistic communication

This awarding provides display and control of Android devices connected via USB (or over TCP/IP). It does not require any root access. It works on GNU/Linux, Windows and macOS.

screenshot

It focuses on:

  • lightness: native, displays just the device screen
  • functioning: 30~120fps, depending on the device
  • quality: 1920×1080 or in a higher place
  • low latency: 35~70ms
  • low startup time: ~i second to display the kickoff image
  • not-intrusiveness: nothing is left installed on the device
  • user benefits: no account, no ads, no internet required
  • liberty: free and open source software

Its features include:

  • recording
  • mirroring with device screen off
  • copy-paste in both directions
  • configurable quality
  • device screen as a webcam (V4L2) (Linux-only)
  • physical keyboard simulation (HID)
  • physical mouse simulation (HID)
  • OTG fashion
  • and more…

Requirements

The Android device requires at least API 21 (Android 5.0).

Make sure you enabled adb debugging on your device(south).

On some devices, you also need to enable an boosted option to control it using keyboard and mouse.

Go the app

Packaging status

Summary

  • Linux: apt install scrcpy
  • Windows: download
  • macOS: brew install scrcpy

Build from sources: BUILD (simplified procedure)

Linux

On Debian and Ubuntu:

On Arch Linux:

A Snap package is available: scrcpy.

For Fedora, a COPR package is bachelor: scrcpy.

For Gentoo, an Ebuild is available: scrcpy/.

You could as well build the app manually (simplified procedure).

Windows

For Windows, for simplicity, a prebuilt archive with all the dependencies (including adb) is bachelor:

  • scrcpy-win64-v1.23.zip
    (SHA-256: d2f601b1d0157faf65153d8a093d827fd65aec5d5842d677ac86fb2b5b7704cc)

Information technology is also available in Chocolatey:

choco install scrcpy choco install adb                              #                if y'all don't accept information technology yet            

And in Scoop:

scoop install scrcpy scoop install adb                              #                if you lot don't have it however            

You can besides build the app manually.

macOS

The application is bachelor in Homebrew. Just install it:

Y'all demand adb, accessible from your PATH. If you don't take it still:

brew install android-platform-tools

It's too available in MacPorts, which sets up adb for you:

You can also build the app manually.

Run

Plug an Android device, and execute:

Information technology accepts command-line arguments, listed by:

Features

Capture configuration

Reduce size

Sometimes, information technology is useful to mirror an Android device at a lower definition to increase operation.

To limit both the width and height to some value (e.k. 1024):

scrcpy --max-size 1024 scrcpy -m 1024                              #                brusk version            

The other dimension is computed to that the device aspect ratio is preserved. That way, a device in 1920×1080 volition be mirrored at 1024×576.

Modify chip-rate

The default bit-rate is eight Mbps. To alter the video bitrate (e.m. to ii Mbps):

scrcpy --bit-charge per unit 2M scrcpy -b 2M                              #                short version            

Limit frame rate

The capture frame rate can be limited:

This is officially supported since Android 10, only may piece of work on earlier versions.

The actual capture framerate may be printed to the console:

Information technology may likewise exist enabled or disabled at whatever fourth dimension with MOD+i.

Crop

The device screen may exist cropped to mirror only part of the screen.

This is useful for example to mirror only one center of the Oculus Get:

scrcpy --crop 1224:1440:0:0                              #                1224x1440 at offset (0,0)            

If --max-size is also specified, resizing is applied after cropping.

Lock video orientation

To lock the orientation of the mirroring:

scrcpy --lock-video-orientation                              #                initial (current) orientation              scrcpy --lock-video-orientation=0                              #                natural orientation              scrcpy --lock-video-orientation=one                              #                90° counterclockwise              scrcpy --lock-video-orientation=2                              #                180°              scrcpy --lock-video-orientation=iii                              #                xc° clockwise            

This affects recording orientation.

The window may besides be rotated independently.

Encoder

Some devices have more than ane encoder, and some of them may crusade issues or crash. It is possible to select a dissimilar encoder:

scrcpy --encoder OMX.qcom.video.encoder.avc

To list the bachelor encoders, yous could pass an invalid encoder name, the error will give the available encoders:

Capture

Recording

It is possible to record the screen while mirroring:

scrcpy --record file.mp4 scrcpy -r file.mkv

To disable mirroring while recording:

scrcpy --no-brandish --record file.mp4 scrcpy -Nr file.mkv                              #                interrupt recording with Ctrl+C            

"Skipped frames" are recorded, even if they are non displayed in real time (for performance reasons). Frames are timestamped on the device, so packet filibuster variation does not impact the recorded file.

v4l2loopback

On Linux, it is possible to ship the video stream to a v4l2 loopback device, and so that the Android device can be opened like a webcam by any v4l2-capable tool.

The module v4l2loopback must exist installed:

sudo apt install v4l2loopback-dkms

To create a v4l2 device:

sudo modprobe v4l2loopback

This will create a new video device in /dev/videoN, where N is an integer (more options are available to create several devices or devices with specific IDs).

To list the enabled devices:

                              #                requires v4l-utils parcel              v4l2-ctl --listing-devices                              #                simple just might be sufficient              ls /dev/video*            

To start scrcpy using a v4l2 sink:

scrcpy --v4l2-sink=/dev/videoN scrcpy --v4l2-sink=/dev/videoN --no-display                              #                disable mirroring window              scrcpy --v4l2-sink=/dev/videoN -N                              #                brusque version            

(replace N by the device ID, check with ls /dev/video*)

Once enabled, you lot can open your video stream with a v4l2-capable tool:

ffplay -i /dev/videoN vlc v4l2:///dev/videoN                              #                VLC might add together some buffering filibuster            

For instance, you could capture the video within OBS.

Buffering

It is possible to add buffering. This increases latency merely reduces jitter (see #2464).

The pick is available for display buffering:

scrcpy --display-buffer=50                              #                add 50 ms buffering for brandish            

and V4L2 sink:

scrcpy --v4l2-buffer=500                              #                add 500 ms buffering for v4l2 sink            

Connection

TCP/IP (wireless)

Scrcpy uses adb to communicate with the device, and adb can connect to a device over TCP/IP. The device must exist connected on the aforementioned network as the calculator.

Automatic

An option --tcpip allows to configure the connexion automatically. At that place are ii variants.

If the device (accessible at 192.168.i.1 in this example) already listens on a port (typically 5555) for incoming adb connections, then run:

scrcpy --tcpip=192.168.ane.1                              #                default port is 5555              scrcpy --tcpip=192.168.1.ane:5555

If adb TCP/IP mode is disabled on the device (or if you don't know the IP address), connect the device over USB, then run:

scrcpy --tcpip                              #                without arguments            

It will automatically find the device IP address, enable TCP/IP way, then connect to the device before starting.

Manual

Alternatively, information technology is possible to enable the TCP/IP connexion manually using adb:

  1. Plug the device into a USB port on your computer.

  2. Connect the device to the same Wi-Fi network equally your figurer.

  3. Get your device IP address, in Settings → Nigh phone → Status, or past executing this command:

    adb shell ip route                  |                  awk                                      '{print $9}'                                  
  4. Enable adb over TCP/IP on your device: adb tcpip 5555.

  5. Unplug your device.

  6. Connect to your device: adb connect DEVICE_IP:5555 (replace DEVICE_IP with the device IP accost you found).

  7. Run scrcpy as usual.

Since Android eleven, a Wireless debugging choice allows to bypass having to physically connect your device straight to your computer.

If the connection randomly drops, run your scrcpy command to reconnect. If it says there are no devices/emulators found, attempt running adb connect DEVICE_IP:5555 over again, and then scrcpy equally usual. If it nevertheless says in that location are none found, try running adb disconnect and so run those two commands again.

Information technology may exist useful to decrease the bit-rate and the definition:

scrcpy --flake-rate 2M --max-size 800 scrcpy -b2M -m800                              #                short version            

Multi-devices

If several devices are listed in adb devices, you can specify the serial:

scrcpy --serial 0123456789abcdef scrcpy -southward 0123456789abcdef                              #                curt version            

If the device is connected over TCP/IP:

scrcpy --serial 192.168.0.1:5555 scrcpy -s 192.168.0.1:5555                              #                short version            

If merely 1 device is connected via either USB or TCP/IP, it is possible to select it automatically:

                              #                Select the simply device connected via USB              scrcpy -d                              #                like adb -d              scrcpy --select-usb                              #                long version                              #                Select the simply device connected via TCP/IP              scrcpy -east                              #                similar adb -e              scrcpy --select-tcpip                              #                long version            

Y'all can start several instances of scrcpy for several devices.

Autostart on device connection

You lot could employ AutoAdb:

Tunnels

To connect to a remote device, it is possible to connect a local adb client to a remote adb server (provided they utilize the aforementioned version of the adb protocol).

Remote ADB server

To connect to a remote ADB server, make the server listen on all interfaces:

adb kill-server adb -a nodaemon server start                              #                keep this open            

Alarm: all communications between clients and ADB server are unencrypted.

Suppose that this server is accessible at 192.168.i.ii. And then, from some other terminal, run scrcpy:

              consign              ADB_SERVER_SOCKET=tcp:192.168.i.2:5037 scrcpy --tunnel-host=192.168.1.two

By default, scrcpy uses the local port used for adb forward tunnel establishment (typically 27183, encounter --port). It is also possible to force a different tunnel port (it may exist useful in more circuitous situations, when more redirections are involved):

              scrcpy --tunnel-port=1234                          
SSH tunnel

To communicate with a remote ADB server securely, information technology is preferable to apply a SSH tunnel.

First, brand sure the ADB server is running on the remote estimator:

Then, found a SSH tunnel:

                              #                local  5038 --> remote  5037                              #                local 27183 <-- remote 27183              ssh -CN -L5038:localhost:5037 -R27183:localhost:27183 your_remote_computer                              #                keep this open up            

From another concluding, run scrcpy:

              consign              ADB_SERVER_SOCKET=tcp:localhost:5038 scrcpy

To avoid enabling remote port forwarding, you lot could forcefulness a forward connection instead (find the -L instead of -R):

                              #                local  5038 --> remote  5037                              #                local 27183 --> remote 27183              ssh -CN -L5038:localhost:5037 -L27183:localhost:27183 your_remote_computer                              #                keep this open            

From another terminal, run scrcpy:

              export              ADB_SERVER_SOCKET=tcp:localhost:5038 scrcpy --force-adb-forward

Like for wireless connections, it may exist useful to reduce quality:

              scrcpy -b2M -m800 --max-fps 15                          

Window configuration

Title

By default, the window championship is the device model. It can be changed:

scrcpy --window-title                              'My device'                          

Position and size

The initial window position and size may exist specified:

scrcpy --window-x 100 --window-y 100 --window-width 800 --window-summit 600

Borderless

To disable window decorations:

scrcpy --window-borderless

Always on elevation

To go on the scrcpy window always on peak:

Fullscreen

The app may exist started direct in fullscreen:

scrcpy --fullscreen scrcpy -f                              #                curt version            

Fullscreen can then exist toggled dynamically with MOD+f.

Rotation

The window may be rotated:

Possibles values are:

  • 0: no rotation
  • ane: 90 degrees counterclockwise
  • 2: 180 degrees
  • 3: 90 degrees clockwise

The rotation can besides exist changed dynamically with MOD+ (left) and Modernistic+ (right).

Note that scrcpy manages 3 different rotations:

  • MOD+r requests the device to switch betwixt portrait and landscape (the electric current running app may refuse, if it does non support the requested orientation).
  • --lock-video-orientation changes the mirroring orientation (the orientation of the video sent from the device to the figurer). This affects the recording.
  • --rotation (or Modern+/Modern+) rotates only the window content. This affects merely the display, non the recording.

Other mirroring options

Read-only

To disable controls (everything which can interact with the device: input keys, mouse events, drag&drop files):

scrcpy --no-command scrcpy -due north

Display

If several displays are available, it is possible to select the display to mirror:

The list of display ids can be retrieved by:

adb shell dumpsys display                              #                search "mDisplayId=" in the output            

The secondary brandish may only exist controlled if the device runs at to the lowest degree Android 10 (otherwise information technology is mirrored in read-only).

Stay awake

To forbid the device to sleep after some filibuster when the device is plugged in:

scrcpy --stay-awake scrcpy -w

The initial state is restored when scrcpy is closed.

Turn screen off

Information technology is possible to turn the device screen off while mirroring on kickoff with a command-line option:

scrcpy --turn-screen-off scrcpy -S

Or past pressing Modernistic+o at whatever fourth dimension.

To turn it back on, press Mod+Shift+o.

On Android, the Power button e'er turns the screen on. For convenience, if POWER is sent via scrcpy (via right-click or MOD+p), it will force to turn the screen off after a small delay (on a all-time endeavor basis). The physical Power push will all the same cause the screen to be turned on.

It tin can too be useful to prevent the device from sleeping:

scrcpy --plough-screen-off --stay-awake scrcpy -Sw

Power off on close

To turn the device screen off when closing scrcpy:

scrcpy --power-off-on-close

Bear witness touches

For presentations, it may be useful to bear witness physical touches (on the physical device).

Android provides this feature in Developers options.

Scrcpy provides an option to enable this feature on kickoff and restore the initial value on exit:

scrcpy --show-touches scrcpy -t

Note that it merely shows physical touches (with the finger on the device).

Disable screensaver

By default, scrcpy does not prevent the screensaver to run on the computer.

To disable it:

scrcpy --disable-screensaver

Input command

Rotate device screen

Printing MOD+r to switch between portrait and mural modes.

Note that it rotates merely if the application in foreground supports the requested orientation.

Copy-paste

Any time the Android clipboard changes, it is automatically synchronized to the figurer clipboard.

Whatever Ctrl shortcut is forwarded to the device. In particular:

  • Ctrl+c typically copies
  • Ctrl+x typically cuts
  • Ctrl+five typically pastes (after computer-to-device clipboard synchronization)

This typically works as you lot await.

The bodily behavior depends on the active application though. For instance, Termux sends SIGINT on Ctrl+c instead, and Chiliad-9 Mail composes a new message.

To re-create, cut and paste in such cases (but only supported on Android >= seven):

  • MOD+c injects COPY
  • Modern+x injects CUT
  • Mod+v injects PASTE (after figurer-to-device clipboard synchronization)

In add-on, MOD+Shift+v allows to inject the computer clipboard text as a sequence of central events. This is useful when the component does not accept text pasting (for example in Termux), simply information technology can suspension not-ASCII content.

WARNING: Pasting the computer clipboard to the device (either via Ctrl+v or MOD+v) copies the content into the device clipboard. Equally a consequence, any Android application could read its content. You should avoid to paste sensitive content (like passwords) that way.

Some devices practice not behave as expected when setting the device clipboard programmatically. An option --legacy-paste is provided to alter the behavior of Ctrl+v and Modernistic+v so that they also inject the computer clipboard text as a sequence of key events (the same way every bit MOD+Shift+v).

To disable automatic clipboard synchronization, use --no-clipboard-autosync.

Pinch-to-zoom

To simulate "compression-to-zoom": Ctrl+click-and-move.

More than precisely, hold Ctrl while pressing the left-click button. Until the left-click button is released, all mouse movements scale and rotate the content (if supported past the app) relative to the center of the screen.

Concretely, scrcpy generates additional touch events from a "virtual finger" at a location inverted through the center of the screen.

Concrete keyboard simulation (HID)

By default, scrcpy uses Android cardinal or text injection: it works everywhere, but is limited to ASCII.

Alternatively, scrcpy can simulate a physical USB keyboard on Android to provide a amend input experience (using USB HID over AOAv2): the virtual keyboard is disabled and information technology works for all characters and IME.

Withal, information technology only works if the device is connected past USB.

Note: On Windows, it may only work in OTG mode, non while mirroring (it is non possible to open a USB device if it is already open by another process like the adb daemon).

To enable this style:

scrcpy --hid-keyboard scrcpy -One thousand                              #                short version            

If it fails for some reason (for example because the device is not connected via USB), it automatically fallbacks to the default fashion (with a log in the console). This allows to use the aforementioned control line options when connected over USB and TCP/IP.

In this mode, raw cardinal events (scancodes) are sent to the device, independently of the host central mapping. Therefore, if your keyboard layout does non friction match, information technology must be configured on the Android device, in Settings → Organisation → Languages and input → Physical keyboard.

This settings folio can be started directly:

adb vanquish am first -a android.settings.HARD_KEYBOARD_SETTINGS

Still, the option is only available when the HID keyboard is enabled (or when a physical keyboard is connected).

Concrete mouse simulation (HID)

Similarly to the physical keyboard simulation, it is possible to simulate a physical mouse. Also, it only works if the device is connected by USB.

By default, scrcpy uses Android mouse events injection, using absolute coordinates. By simulating a physical mouse, a mouse pointer appears on the Android device, and relative mouse movement, clicks and scrolls are injected.

To enable this mode:

scrcpy --hid-mouse scrcpy -M                              #                short version            

You lot could also add --forward-all-clicks to forward all mouse buttons.

When this mode is enabled, the calculator 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 estimator.

OTG

It is possible to run scrcpy with only physical keyboard and mouse simulation (HID), equally if the computer keyboard and mouse were plugged directly to the device via an OTG cable.

In this style, adb (USB debugging) is not necessary, and mirroring is disabled.

To enable OTG way:

scrcpy --otg                              #                Pass the serial if several USB devices are available              scrcpy --otg -due south 0123456789abcdef

It is possible to enable only HID keyboard or HID mouse:

scrcpy --otg --hid-keyboard                              #                keyboard but              scrcpy --otg --hid-mouse                              #                mouse only              scrcpy --otg --hid-keyboard --hid-mouse                              #                keyboard and mouse                              #                for convenience, enable both past default              scrcpy --otg                              #                keyboard and mouse            

Similar --hid-keyboard and --hid-mouse, it only works if the device is connected by USB.

Text injection preference

There are 2 kinds of events generated when typing text:

  • key events, signaling that a key is pressed or released;
  • text events, signaling that a text has been entered.

By default, messages are injected using key events, so that the keyboard behaves as expected in games (typically for WASD keys).

But this may cause problems. If you meet such a problem, you can avoid information technology by:

(but this volition break keyboard behavior in games)

On the contrary, you could strength to e'er inject raw key events:

These options take no effect on HID keyboard (all fundamental events are sent as scancodes in this mode).

Cardinal repeat

By default, property a fundamental down generates repeated cardinal events. This can cause performance problems in some games, where these events are useless anyway.

To avoid forwarding repeated cardinal events:

This option has no effect on HID keyboard (cardinal repeat is handled by Android directly in this mode).

Right-click and middle-click

By default, right-click triggers Dorsum (or Ability on) and center-click triggers Dwelling. To disable these shortcuts and forward the clicks to the device instead:

scrcpy --frontwards-all-clicks

File drib

Install APK

To install an APK, drag & drop an APK file (ending with .apk) to the scrcpy window.

In that location is no visual feedback, a log is printed to the console.

Button file to device

To push button a file to /sdcard/Download/ on the device, drag & driblet a (non-APK) file to the scrcpy window.

At that place is no visual feedback, a log is printed to the console.

The target directory tin can be changed on start:

scrcpy --button-target=/sdcard/Movies/

Sound forwarding

Audio is not forwarded by scrcpy. Utilise sndcpy.

Also see issue #14.

Shortcuts

In the following list, Mod is the shortcut modifier. Past default, it's (left) Alt or (left) Super.

Information technology can exist changed using --shortcut-modern. Possible keys are lctrl, rctrl, lalt, ralt, lsuper and rsuper. For example:

                              #                use RCtrl for shortcuts              scrcpy --shortcut-mod=rctrl                              #                use either LCtrl+LAlt or LSuper for shortcuts              scrcpy --shortcut-mod=lctrl+lalt,lsuper

Super is typically the Windows or Cmd central.

Activeness Shortcut
Switch fullscreen mode MOD+f
Rotate display left Modernistic+ (left)
Rotate display correct Modern+ (right)
Resize window to 1:i (pixel-perfect) MOD+grand
Resize window to remove black borders MOD+westward | Double-left-click¹
Click on Habitation Mod+h | Middle-click
Click on Back Mod+b | Right-click²
Click on APP_SWITCH Modern+s | 4th-click³
Click on MENU (unlock screen)⁴ MOD+m
Click on VOLUME_UP MOD+ (up)
Click on VOLUME_DOWN MOD+ (down)
Click on POWER Mod+p
Ability on Right-click²
Plough device screen off (keep mirroring) Modernistic+o
Turn device screen on Modernistic+Shift+o
Rotate device screen Modernistic+r
Aggrandize notification console Mod+n | 5th-click³
Aggrandize settings panel Modernistic+n+northward | Double-5th-click³
Collapse panels Modernistic+Shift+n
Copy to clipboard⁵ MOD+c
Cut to clipboard⁵ MOD+x
Synchronize clipboards and paste⁵ Modernistic+v
Inject computer clipboard text Mod+Shift+v
Enable/disable FPS counter (on stdout) MOD+i
Compression-to-zoom Ctrl+click-and-move
Drag & drop APK file Install APK from reckoner
Drag & drop not-APK file Push file to device

¹Double-click on black borders to remove them.
²Correct-click turns the screen on if it was off, presses BACK otherwise.
³4th and 5th mouse buttons, if your mouse has them.
⁴For react-native apps in development, Bill of fare triggers development bill of fare.
⁵But on Android >= 7.

Shortcuts with repeated keys are executted by releasing and pressing the cardinal a 2d time. For example, to execute "Expand settings console":

  1. Press and keep pressing MOD.
  2. Then double-printing north.
  3. Finally, release MOD.

All Ctrl+cardinal shortcuts are forwarded to the device, then they are handled by the active application.

Custom paths

To use a specific adb binary, configure its path in the surround variable ADB:

To override the path of the scrcpy-server file, configure its path in SCRCPY_SERVER_PATH.

To override the icon, configure its path in SCRCPY_ICON_PATH.

Why scrcpy?

A colleague challenged me to observe a name as unpronounceable every bit gnirehtet.

strcpy copies a string; scrcpy copies a screen.

How to build?

See BUILD.

Common problems

Come across the FAQ.md).

Developers

Read the developers page.

Licence

              Copyright (C) 2022 Genymobile Copyright (C) 2018-2022 Romain Vimont  Licensed under the Apache License, Version ii.0 (the "License"); y'all may not utilise this file except in compliance with the License. You may obtain a copy of the License at      http://www.apache.org/licenses/LICENSE-two.0  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "Equally IS" Basis, WITHOUT WARRANTIES OR Weather OF ANY KIND, either limited or implied. Come across the License for the specific linguistic communication governing permissions and limitations nether the License.                          

Articles

  • Introducing scrcpy
  • Scrcpy now works wirelessly

Contact

If you encounter a issues, delight read the FAQ get-go, then open an issue.

For general questions or discussions, you could also utilise:

  • Reddit: r/scrcpy
  • Twitter: @scrcpy_app

Translations

This README is available in other languages:

  • Deutsch (German, de) - v1.22
  • Indonesian (Indonesia, id) - v1.xvi
  • Italiano (Italiano, it) - v1.19
  • 日本語 (Japanese, jp) - v1.19
  • 한국어 (Korean, ko) - v1.11
  • Português Brasileiro (Brazilian Portuguese, pt-BR) - v1.nineteen
  • Español (Spanish, sp) - v1.21
  • 简体中文 (Simplified Chinese, zh-Hans) - v1.22
  • 繁體中文 (Traditional Chinese, zh-Hant) - v1.xv
  • Turkish (Turkish, tr) - v1.18

Merely this README file is guaranteed to exist up-to-appointment.

colvincleakettent.blogspot.com

Source: https://github.com/Genymobile/scrcpy

Post a Comment for "Try Again Later (10). G10sm406835otg.81 - Gsmtp"