Wireless ADB keeps timing out if you run a VPN or something like Cloudflare WARP. The issue is that these tools route all traffic through a tunnel and block direct peer-to-peer connections on your local network.
The fix is a one-time USB handshake to tell the device to listen on TCP before you go wireless.
Step 1: USB handshake
Connect your device via USB (USB debugging must be on). Then run:
1adb tcpip 5555This restarts the ADB daemon on your phone in TCP mode, listening on port 5555. Once it confirms, unplug the cable.
Step 2: Find the device IP
On the device: Settings > About phone > Status > IP address
It will be something like 192.168.x.x or 10.0.x.x. Use exactly what you see here, not what your router shows.
Step 3: Connect
1adb connect 192.168.x.x:5555You should see connected to 192.168.x.x:5555. Done.
Why the USB step is necessary
Connecting wirelessly without it fails because the VPN blocks the initial TCP handshake. The USB connection is a direct physical link, not subject to your network’s routing rules. Running adb tcpip 5555 over USB puts the device into listening mode first, so when you connect wirelessly, the device is already ready.
Useful commands once connected
| Command | What it does |
|---|---|
adb devices |
List connected devices |
adb install <path.apk> |
Install an APK |
adb uninstall <package> |
Uninstall an app |
adb shell |
Open a shell on the device |
adb logcat |
Stream system logs |
adb reverse tcp:4001 tcp:4001 |
Forward device port to your machine (for local dev servers) |
adb push <local> <remote> |
Copy file to device |
adb pull <remote> <local> |
Copy file from device |
adb disconnect <ip>:<port> |
Disconnect a specific device |
adb disconnect |
Disconnect all |