# Wireless ADB When Your Network Fights You

> **Source:** [https://lorbic.com/til/2026-06-15-wireless-adb-over-wifi/](https://lorbic.com/til/2026-06-15-wireless-adb-over-wifi/)
> **Author:** [Vikash Patel](https://vikashpatel.net)
> **Published:** June 15, 2026
> **Reading Time:** 2 min
> 
> *This is the raw Markdown source of the article from the [Lorbic Technical Journal](https://lorbic.com/).*

---


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:

```bash
adb tcpip 5555
```

This 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

```bash
adb connect 192.168.x.x:5555
```

You 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 |

