Try Again Later (10). G10sm406835otg.81 - Gsmtp
scrcpy (v1.23)
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.
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
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
:
-
Plug the device into a USB port on your computer.
-
Connect the device to the same Wi-Fi network equally your figurer.
-
Get your device IP address, in Settings → Nigh phone → Status, or past executing this command:
adb shell ip route | awk '{print $9}'
-
Enable adb over TCP/IP on your device:
adb tcpip 5555
. -
Unplug your device.
-
Connect to your device:
adb connect DEVICE_IP:5555
(replaceDEVICE_IP
with the device IP accost you found). -
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":
- Press and keep pressing MOD.
- Then double-printing north.
- 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"