SCRCPY: Physical Gamepad Simulation
Although I'll never truly understand people using SCRCPY to stream and play games from their Android phones to PC It is possible and works fairly well though controller support is a little hit and miss. So in this guide, we'll be looking at what controller options you have when using SCRCPY to play games. The feature is called SCRCPY Physical Gamepad Simulation and seems to work better than I thought it would.
SCRCPY: Physical Gamepad Simulation
Using Gamepads with SCRCPY is a little more complicated than doing most other things with SCRCPY so we've put this guide together to make things a little more simple. This explanation describes two modes for simulating physical gamepads (controllers) on an Android device using the tool scrcpy. If this guide doesn't work for you, you can try a different fork of SCRCPY that's specifically designed for controller support. Anyway here's a breakdown of what each mode does:
Purpose of Physical Gamepad Simulation
- This feature enables scrcpy to simulate a physical gamepad connection to an Android device, allowing you to use a controller connected to your computer as if it were directly connected to the Android device. Useful for gaming or controlling the Android device with a physical controller. There are actually two different methods as well so you might need to try both to find the one that works best for you.
UHID Mode
-
Uses the UHID (User HID) kernel module to simulate physical gamepads.
-
Works by making the Android device recognise a virtual gamepad as if it were physically connected.
To enable UHID mode you'll need to run the following command. Either by itself or as a string in a batch file. If that sounds complicated this guide will walk you through the steps.
scrcpy --gamepad=uhid
or the short version:
scrcpy -G
Limitations of UHID Mode
- May not work on older Android devices due to permission issues.
-
Preferred if you’re using multiple gamepads because AOA mode can cause issues with multiple controllers.
AOA Mode:
- Uses the AOAv2 (Android Open Accessory) protocol, directly over USB, to simulate a gamepad.
-
Works without USB debugging or the scrcpy server, meaning the Android device does not need developer mode or USB debugging to use a gamepad.
-
Only works over USB, not wirelessly.
To enable AOA mode:
scrcpy --gamepad=aoa
Limitations of AOA Mode
- Android may detect multiple gamepads as one faulty gamepad, so this mode is better suited for single-controller setups.
-
On Windows, AOA mode may only work in OTG mode when not mirroring the screen. This is because USB connections are limited to one active process (e.g., ADB may already be using the device connection).
Is it Better to use UHID or AOA to Simulate Physical Game Controllers with SCRCPY?
-
Use UHID mode if you need multiple gamepads or compatibility with the scrcpy server.
-
Use AOA mode if you want a single gamepad without enabling USB debugging, especially when mirroring isn’t required.