# Frequently Asked Questions [Read in another language](#translations) Here are the common reported problems and their status. If you encounter any error, the first step is to upgrade to the latest version. ## `adb` issues `scrcpy` execute `adb` commands to initialize the connection with the device. If `adb` fails, then scrcpy will not work. This is typically not a bug in _scrcpy_, but a problem in your environment. ### `adb` not found You need `adb` accessible from your `PATH`. On Windows, the current directory is in your `PATH`, and `adb.exe` is included in the release, so it should work out-of-the-box. ### Device not detected > ERROR: Could not find any ADB device Check that you correctly enabled [adb debugging][enable-adb]. Your device must be detected by `adb`: ``` adb devices ``` If your device is not detected, you may need some [drivers] (on Windows). There is a separate [USB driver for Google devices][google-usb-driver]. [enable-adb]: https://developer.android.com/studio/command-line/adb.html#Enabling [drivers]: https://developer.android.com/studio/run/oem-usb.html [google-usb-driver]: https://developer.android.com/studio/run/win-usb ### Device unauthorized > ERROR: Device is unauthorized: > ERROR: --> (usb) 0123456789abcdef unauthorized > ERROR: A popup should open on the device to request authorization. When connecting, a popup should open on the device. You must authorize USB debugging. If it does not open, check [stackoverflow][device-unauthorized]. [device-unauthorized]: https://stackoverflow.com/questions/23081263/adb-android-device-unauthorized ### Several devices connected If several devices are connected, you will encounter this error: ERROR: Multiple (2) ADB devices: ERROR: --> (usb) 0123456789abcdef device Nexus_5 ERROR: --> (tcpip) 192.168.1.5:5555 device GM1913 ERROR: Select a device via -s (--serial), -d (--select-usb) or -e (--select-tcpip) In that case, you can either provide the identifier of the device you want to mirror: ```bash scrcpy -s 0123456789abcdef ``` Or request the single USB (or TCP/IP) device: ```bash scrcpy -d # USB device scrcpy -e # TCP/IP device ``` Note that if your device is connected over TCP/IP, you might get this message: > adb: error: more than one device/emulator > ERROR: "adb reverse" returned with value 1 > WARN: 'adb reverse' failed, fallback to 'adb forward' This is expected (due to a bug on old Android versions, see [#5]), but in that case, scrcpy fallbacks to a different method, which should work. [#5]: https://github.com/Genymobile/scrcpy/issues/5 ### Conflicts between adb versions > adb server version (41) doesn't match this client (39); killing... This error occurs when you use several `adb` versions simultaneously. You must find the program using a different `adb` version, and use the same `adb` version everywhere. You could overwrite the `adb` binary in the other program, or ask _scrcpy_ to use a specific `adb` binary, by setting the `ADB` environment variable: ```bash set ADB=/path/to/your/adb scrcpy ``` ### Device disconnected If _scrcpy_ stops itself with the warning "Device disconnected", then the `adb` connection has been closed. Try with another USB cable or plug it into another USB port. See [#281] and [#283]. [#281]: https://github.com/Genymobile/scrcpy/issues/281 [#283]: https://github.com/Genymobile/scrcpy/issues/283 ## Control issues ### Mouse and keyboard do not work On some devices, you may need to enable an option to allow [simulating input]. In developer options, enable: > **USB debugging (Security settings)** > _Allow granting permissions and simulating input via USB debugging_ [simulating input]: https://github.com/Genymobile/scrcpy/issues/70#issuecomment-373286323 ### Special characters do not work The default text injection method is [limited to ASCII characters][text-input]. A trick allows to also inject some [accented characters][accented-characters], but that's all. See [#37]. Since scrcpy v1.20 on Linux, it is possible to simulate a [physical keyboard][hid] (HID). [text-input]: https://github.com/Genymobile/scrcpy/issues?q=is%3Aopen+is%3Aissue+label%3Aunicode [accented-characters]: https://blog.rom1v.com/2018/03/introducing-scrcpy/#handle-accented-characters [#37]: https://github.com/Genymobile/scrcpy/issues/37 [hid]: README.md#physical-keyboard-simulation-hid ## Client issues ### The quality is low If the definition of your client window is smaller than that of your device screen, then you might get poor quality, especially visible on text (see [#40]). [#40]: https://github.com/Genymobile/scrcpy/issues/40 To improve downscaling quality, trilinear filtering is enabled automatically if the renderer is OpenGL and if it supports mipmapping. On Windows, you might want to force OpenGL: ``` scrcpy --render-driver=opengl ``` You may also need to configure the [scaling behavior]: > `scrcpy.exe` > Properties > Compatibility > Change high DPI settings > > Override high DPI scaling behavior > Scaling performed by: _Application_. [scaling behavior]: https://github.com/Genymobile/scrcpy/issues/40#issuecomment-424466723 ### Issue with Wayland By default, SDL uses x11 on Linux. The [video driver] can be changed via the `SDL_VIDEODRIVER` environment variable: [video driver]: https://wiki.libsdl.org/FAQUsingSDL#how_do_i_choose_a_specific_video_driver ```bash export SDL_VIDEODRIVER=wayland scrcpy ``` On some distributions (at least Fedora), the package `libdecor` must be installed manually. See issues [#2554] and [#2559]. [#2554]: https://github.com/Genymobile/scrcpy/issues/2554 [#2559]: https://github.com/Genymobile/scrcpy/issues/2559 ### KWin compositor crashes On Plasma Desktop, compositor is disabled while _scrcpy_ is running. As a workaround, [disable "Block compositing"][kwin]. [kwin]: https://github.com/Genymobile/scrcpy/issues/114#issuecomment-378778613 ## Crashes ### Exception There may be many reasons. One common cause is that the hardware encoder of your device is not able to encode at the given definition: > ``` > ERROR: Exception on thread Thread[main,5,main] > android.media.MediaCodec$CodecException: Error 0xfffffc0e > ... > Exit due to uncaughtException in main thread: > ERROR: Could not open video stream > INFO: Initial texture: 1080x2336 > ``` or > ``` > ERROR: Exception on thread Thread[main,5,main] > java.lang.IllegalStateException > at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method) > ``` Just try with a lower definition: ``` scrcpy -m 1920 scrcpy -m 1024 scrcpy -m 800 ``` Since scrcpy v1.22, scrcpy automatically tries again with a lower definition before failing. This behavior can be disabled with `--no-downsize-on-error`. You could also try another [encoder](README.md#encoder). If you encounter this exception on Android 12, then just upgrade to scrcpy >= 1.18 (see [#2129]): ``` > ERROR: Exception on thread Thread[main,5,main] java.lang.AssertionError: java.lang.reflect.InvocationTargetException at com.genymobile.scrcpy.wrappers.SurfaceControl.setDisplaySurface(SurfaceControl.java:75) ... Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.genymobile.scrcpy.wrappers.SurfaceControl.setDisplaySurface(SurfaceControl.java:73) ... 7 more Caused by: java.lang.IllegalArgumentException: displayToken must not be null at android.view.SurfaceControl$Transaction.setDisplaySurface(SurfaceControl.java:3067) at android.view.SurfaceControl.setDisplaySurface(SurfaceControl.java:2147) ... 9 more ``` [#2129]: https://github.com/Genymobile/scrcpy/issues/2129 ## Command line on Windows Since v1.22, a "shortcut" has been added to directly open a terminal in the scrcpy directory. Double-click on `open_a_terminal_here.bat`, then type your command. For example: ``` scrcpy --record file.mkv ``` You could also open a terminal and go to the scrcpy folder manually: 1. Press Windows+r, this opens a dialog box. 2. Type `cmd` and press Enter, this opens a terminal. 3. Go to your _scrcpy_ directory, by typing (adapt the path): ```bat cd C:\Users\user\Downloads\scrcpy-win64-xxx ``` and press Enter 4. Type your command. For example: ```bat scrcpy --record file.mkv ``` If you plan to always use the same arguments, create a file `myscrcpy.bat` (enable [show file extensions] to avoid confusion) in the `scrcpy` directory, containing your command. For example: ```bat scrcpy --prefer-text --turn-screen-off --stay-awake ``` Then just double-click on that file. You could also edit (a copy of) `scrcpy-console.bat` or `scrcpy-noconsole.vbs` to add some arguments. [show file extensions]: https://www.howtogeek.com/205086/beginner-how-to-make-windows-show-file-extensions/ ## Translations This FAQ is available in other languages: - [Italiano (Italiano, `it`) - v1.19](FAQ.it.md) - [한국어 (Korean, `ko`) - v1.11](FAQ.ko.md) - [简体中文 (Simplified Chinese, `zh-Hans`) - v1.22](FAQ.zh-Hans.md)