Pair an Android 11+ device for wireless ADB by scanning a QR code rendered in your terminal.
This is a Python port of adb-wifi by
saleehk. All credit for the original idea and
JavaScript implementation goes to him.
- Generates a random one-time name and password.
- Renders a Wi-Fi-format QR code (
WIFI:T:ADB;S:<name>;P:<password>;;) directly in your terminal. - Listens for the phone's
_adb-tls-pairing._tcp.localmDNS advertisement. - Runs
adb pair <host>:<port> <password>against the first device it finds. - (optional) With
--connect, also discovers_adb-tls-connect._tcp.localand runsadb connect, so the device shows up inadb devicesand is ready foradb shell,adb install, etc.
- Python 3.8 or newer (3.9+ recommended — the pinned
zeroconfbranch is the last to support 3.8). adbonPATH(or pass--adb /path/to/adb). Install it with the Android SDK platform-tools.- Android 11+ device on the same Wi-Fi network as the computer.
pip install adb-wifi-qradb-wifi-qrThe terminal prints a QR code. On the Android device:
- Open Settings → System → Developer options → Wireless debugging.
- Tap Pair device with QR code.
- Point the camera at the QR code in your terminal.
The tool detects the device via mDNS and runs adb pair automatically.
Pair only (default — matches the original adb-wifi):
adb-wifi-qrPair and auto-connect, so the device immediately shows up in adb devices:
adb-wifi-qr --connectWait up to two minutes for the device (default is 60 s):
adb-wifi-qr --timeout 120Enable debug logging (mDNS events, full subprocess output):
adb-wifi-qr -vUse a non-default adb binary:
adb-wifi-qr --adb /opt/android-sdk/platform-tools/adbCombine flags freely:
adb-wifi-qr --connect --timeout 120 -v| Flag | Default | Description |
|---|---|---|
--timeout SECONDS |
60 |
How long to wait for the device to advertise itself. |
--connect |
off | After pairing, also run adb connect so the device joins adb devices. |
--adb PATH |
adb |
Path to the adb binary. |
-v, --verbose |
off | Debug logging to stderr. |
--version |
– | Print the package version and exit. |
--help |
– | Print full help and exit. |
Android 11 introduced wireless debugging. When the user opens Pair device
with QR code, the phone briefly advertises an mDNS service of type
_adb-tls-pairing._tcp.local on the local network. Scanning the QR code tells
the phone which (random) credentials the pairing request will use; the
computer-side adb pair host:port password completes the handshake.
adb-wifi-qr starts the mDNS listener before rendering the QR so the
discovery is already running the moment the user taps Pair device with QR
code — the advert is short-lived.
adbnot found. Install Android platform-tools, or pass--adbwith the full path.- No device found before timeout. Make sure the pairing dialog is actually
open on the phone — the mDNS advertisement only exists while that screen is
visible. Re-run with
--timeout 120if you need more time, or-vto watch the mDNS events live. - Phone and laptop on different subnets / VPN active. mDNS does not cross subnets. Disable the VPN or move both devices onto the same Wi-Fi.
- QR code does not scan. Make the terminal window wider, increase the font size, or switch to a dark background — phone cameras pick up the half-block glyphs much better with white-on-black contrast.
adb pairfails. Just re-runadb-wifi-qr— each invocation generates fresh credentials. The previous QR cannot be reused.
git clone https://github.com/matevosashot/adb-wifi-python
cd adb-wifi-python
pip install -e ".[dev]"
pytestTests mock the zeroconf and subprocess boundaries, so they do not require a
real Android device or network access.
ISC — see LICENSE.
- Original implementation: saleehk/adb-wifi.
- This Python port: matevosashot/adb-wifi-python.