Tested using Windows 10 and Android 8.1 (device), Android 5-10 (emulator), Ubuntu 18.04.2 LTS with latest updates. Please read original description and instruction for the basic functionality and setup.
Should you report a problem, please:
- Try the official scrcpy and specify if it works for you. If it does not, I doubt I can be in help.
- Specify Android version, also whether it is pure stock Android or specify its kind.
- Specify the scrcpy build version.
- Specify the minimum command line to reproduce the problem.
- Type
adb logcat -d > logcat.txt
and try to find error messages or crash dumps related to scrcpy.
The new features are:
- 10-fingers multitouch support.
- Any language input support with an aid of ADBKeyBoard (included).
- Screen density and screen size can be set on the device during the session.
- "Tablet mode": dim device screen, synchronize device screen orientation with PC (requires additional service on the device from included ADBKeyBoard).
- Improved performance over wireless (Wi-Fi) connection.
- Clean server exit in case of any problem that prevents it from running.
- Quit command (Ctrl-Q).
- Ctrl-Shift-O turns device screen on (use with caution: it may not work properly on your particular device!).
Corresponding command line options:
-B, --tablet-mode
Synchronize device orientation with PC.
-d, --density dpi
Set the density for the device screen.
-i, --ime
Use IME compatible with ADBKeyBoard.
--screen-size width:height
Forced device screen size.
You need to install included build of ADBKeyBoard for IME and tablet mode to work properly:
adb install ADBKeyBoard-debug.apk
Tablet mode
Recommended to use along with --fullscreen
. When the app in full screen, it synchronizes device orientation with PC display orientation, and reduces backlight on the device to the minimum. With included ADBKeyBoard, apps on the device are forced to use the current orientation (but it does not work for lock screen).
Screen size and density
You may set screen size (in pixels) and/or density (in dpi) for the session, for comfortable look on your PC screen. Lower density may force Android to switch to tablet mode, which is also useful.
Note: Android does not allow to increase screen size more than two times to physical display resolution. If you increase screen resolution, you may need to Disable Hardware Overlay in Developer Options to see the actual change.
Wireless connection
It is not, and never will be, as stable and useful as wired. The more noise around, the more lags. Try to use 5GHz bands for better performance. Using TCP instead of UDP leads to additional lags, but switching to UDP is too much work.
If your Android device goes out of range and the server side detects no "heartbeat" packets for around 6 seconds, the server stops and restores the original state of the device. You may need to close the desktop app manually.
The improvements over the official version are:
- Simplified connection (just pass "
-s DEVICE_IP:port
" parameter to scrcpy, no a need to "adb connect...
"). - Direct TCP connection from desktop to the server, eliminating adb as the proxy (only with "
-s DEVICE_IP:port
" parameter!). - Fine tuned TCP/IP socket parameters.
- "Heartbeat" packets to detect broken connection on the device side.
- Touch and mouse events are simulated to produce delays between them close to the original events.
Troubleshooting
The server (device side) restores all the settings (IME, screen size, density, brightness) on exit, even via wireless (WiFi, Bluetooth) connection when the connection is lost. Nevertheless, should you need to restore screen size, density and brightness manually, do:
adb shell wm density reset
adb shell wm size reset
adb shell settings put system screen_brightness 90