==== Forwarding adb over TCP/IP (Mostly Wifi) ====
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
\\
==== Forwarding adb over USB and TCP/IP ====
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