Tunnels
Scrcpy is designed to mirror local Android devices. Tunnels allow to connect to a remote device (e.g. over the Internet).
To connect to a remote device, it is possible to connect a local adb client to
a remote adb server (provided they use the same version of the adb
protocol).
Remote ADB server
Section titled “Remote ADB server”To connect to a remote adb server, make the server listen on all interfaces:
adb kill-serveradb -a nodaemon server start# keep this openWarning: all communications between clients and the adb server are unencrypted.
Suppose that this server is accessible at 192.168.1.2. Then, from another
terminal, run scrcpy:
# in bashexport ADB_SERVER_SOCKET=tcp:192.168.1.2:5037scrcpy --tunnel-host=192.168.1.2:: in cmdset ADB_SERVER_SOCKET=tcp:192.168.1.2:5037scrcpy --tunnel-host=192.168.1.2# in PowerShell$env:ADB_SERVER_SOCKET = 'tcp:192.168.1.2:5037'scrcpy --tunnel-host=192.168.1.2By default, scrcpy uses the local port used for adb forward tunnel
establishment (typically 27183, see --port). It is also possible to force a
different tunnel port (it may be useful in more complex situations, when more
redirections are involved):
scrcpy --tunnel-port=1234SSH tunnel
Section titled “SSH tunnel”To communicate with a remote adb server securely, it is preferable to use an SSH tunnel.
First, make sure the adb server is running on the remote computer:
adb start-serverThen, establish an SSH tunnel:
# local 5038 --> remote 5037# local 27183 <-- remote 27183ssh -CN -L5038:localhost:5037 -R27183:localhost:27183 your_remote_computer# keep this openFrom another terminal, run scrcpy:
# in bashexport ADB_SERVER_SOCKET=tcp:localhost:5038scrcpy:: in cmdset ADB_SERVER_SOCKET=tcp:localhost:5038scrcpy# in PowerShell$env:ADB_SERVER_SOCKET = 'tcp:localhost:5038'scrcpyTo avoid enabling remote port forwarding, you could force a forward connection
instead (notice the -L instead of -R):
# local 5038 --> remote 5037# local 27183 --> remote 27183ssh -CN -L5038:localhost:5037 -L27183:localhost:27183 your_remote_computer# keep this openFrom another terminal, run scrcpy:
# in bashexport ADB_SERVER_SOCKET=tcp:localhost:5038scrcpy --force-adb-forward:: in cmdset ADB_SERVER_SOCKET=tcp:localhost:5038scrcpy --force-adb-forward# in PowerShell$env:ADB_SERVER_SOCKET = 'tcp:localhost:5038'scrcpy --force-adb-forward