Today we are going to learn how to use adb tcp forwarding
to access an android phone shell (or screen) using multiple tcp/ip port forwardings
First, connect the phone via usb (this is needed) and issue:
# You can choose any port you want adb tcpip 5557 # Save the phone ip somewhere adb shell ifconfig
Once this is enabled, you can stop using the usb cable
To connect to the adb device by it's ip address:
adb connect [YOUR_PHONE_IP]:5557 # or disconnect later adb disconnect [YOUR_PHONE_IP]:5557
You can now access the phone shell or screen via tcp/ip
adb shell
scrcpy # gui tool from genymotion to view the phone screen over adb
There can be a case when you want to use a device connected to a server by usb
You can do this easily by enabling tcpip mode on adb and forwarding the port.
First, on the server, enable tcpip on 5557, and forward on server to 5558
adb tcpip 5557 adb forward tcp:5558 tcp:5557
Check forward is working
adb forward --list
Now, on the client, you can use ssh forwarding to connect the phone shell or screen remotely!!!
ssh -L 5558:127.0.0.1:5558 [REMOTE_HOST] adb connect 127.0.0.1:5558 # connect locally
To reset the tcpip state issue:
# If you just want to remove the forwarding but keep tcpip adb forward --remove-all # This will remove all forwardings and restart adb as usb instead of tcpip adb usb