Skip to main content

Overview

Wireless debugging allows you to connect Android devices to APK Extractor over WiFi without a USB cable. This feature requires Android 11 or higher and both devices must be on the same network.
Wireless debugging uses ADB over TCP/IP with TLS encryption and pairing codes for secure connections.

Requirements

Android 11+

Wireless debugging feature is built into Android 11 and newer

Same Network

PC and Android device must be on the same WiFi network

Developer Options

Developer options must be enabled on the device

APK Extractor

Web interface or CLI with ADB configured
Wireless debugging is not available on Android 10 or older. Use USB connection or upgrade to Android 11+.

Enabling Developer Options

If you haven’t enabled Developer Options yet:
1

Open Settings

Navigate to SettingsAbout phone (or About tablet)
2

Tap Build Number

Find Build number and tap it 7 timesYou’ll see a message: “You are now a developer!”
3

Access Developer Options

Go back to SettingsSystemDeveloper options(On some devices: SettingsDeveloper options directly)

Wireless Debugging Setup

Method 1: Using APK Extractor Web Interface

1

Enable wireless debugging on Android

On your Android device:
  1. Go to SettingsDeveloper options
  2. Enable Wireless debugging toggle
  3. Tap Wireless debugging to open its settings
2

Get pairing information

Tap Pair device with pairing codeYou’ll see a dialog with:
  • WiFi pairing code: 6-digit number (e.g., 123456)
  • IP address & Port: e.g., 192.168.1.100:37891
The pairing code expires after a few minutes. If it expires, tap Pair device with pairing code again for a new code.
3

Open web interface

In APK Extractor web interface:
  1. Click the ”+” button or “Add Device”
  2. Select the “Wireless Debugging” tab
  3. Enter the pairing information:
    • IP Address: 192.168.1.100
    • Pairing Port: 37891
    • Pairing Code: 123456
4

Pair the device

Click “Pair”You’ll see: “Successfully paired to 192.168.1.100:37891”
Pairing is now complete! You only need to do this once per device.
5

Get connection port

Back on the Android device, look at the Wireless debugging screen.At the top, you’ll see:
  • Device name
  • IP address & port: e.g., 192.168.1.100:33445
This is the connection port (different from the pairing port). It’s persistent and doesn’t expire as quickly.
6

Connect to device

In APK Extractor:
  1. Still in the “Wireless Debugging” modal
  2. Enter the connection port: 33445
  3. Click “Connect”
The device appears in the sidebar within seconds!

Method 2: Using CLI

1

Enable wireless debugging

Same as Method 1, Step 1.
2

Launch CLI

Run apk-downloader.bat and select [2] Depuración inalambrica (WiFi)
3

Start pairing

Choose [1] Iniciar vinculación
┌─────────────────────────────────────────────────────┐
│  Paso 1: Emparejamiento                             │
└─────────────────────────────────────────────────────┘

IP del dispositivo: 192.168.1.100
Puerto de vinculación: 37891
Código de vinculación (6 dígitos): 123456
4

Pairing

The CLI runs adb pair:
adb pair 192.168.1.100:37891 123456
Output:
Emparejando con 192.168.1.100:37891...

Successfully paired to 192.168.1.100:37891

[OK] Emparejamiento exitoso.
5

Connection

The CLI prompts for the connection port:
┌─────────────────────────────────────────────────────┐
│  Paso 2: Conexión                                   │
└─────────────────────────────────────────────────────┘

Puerto de conexión: 33445
Enter the port from the Android device’s Wireless debugging screen.
Conectando a 192.168.1.100:33445...

connected to 192.168.1.100:33445

[OK] Conectado exitosamente a 192.168.1.100:33445

[OK] Dispositivo guardado para reconexión futura.

Method 3: Manual ADB Commands

For advanced users:
# Step 1: Pair (use 6-digit code from device)
adb pair 192.168.1.100:37891
# Enter pairing code: 123456
# Output: Successfully paired to 192.168.1.100:37891

# Step 2: Connect (use connection port from device)
adb connect 192.168.1.100:33445
# Output: connected to 192.168.1.100:33445

# Verify
adb devices
# Output:
# List of devices attached
# 192.168.1.100:33445   device
Once paired, you only need adb connect for future sessions (pairing persists until device reboot or wireless debugging is toggled off).

Understanding Ports

Wireless debugging uses two different ports:

Pairing Port

Temporary port for initial pairing with code
  • Used once during pairing
  • Expires after a few minutes
  • Format: 192.168.1.100:37891
  • Shown in “Pair device with pairing code” dialog

Connection Port

Persistent port for actual connection
  • Used every time you connect
  • Changes when wireless debugging is toggled or device reboots
  • Format: 192.168.1.100:33445
  • Shown at top of “Wireless debugging” screen

Port Workflow

Automatic Saving

When you connect a device wirelessly, APK Extractor automatically saves it to devices.json:
[
  {
    "id": "1678901234567",
    "label": "Google Pixel 6",
    "ip": "192.168.1.100",
    "port": "33445",
    "lastConnected": "2026-03-07T16:45:23.456Z"
  }
]
This allows quick reconnection without pairing again.
The device label is auto-detected (brand + model). You can change it later using custom device naming.

Quick Reconnection

For saved devices, you don’t need to pair again:

Web Interface

  1. Click ”+” or “Add Device”
  2. Go to “Saved Devices” tab
  3. Click “Connect” next to the device

CLI

Main menu → [3] Dispositivos guardados[C] Conectar:
Dispositivos guardados: 2

[1] Google Pixel 6  (192.168.1.100:33445)
[2] Samsung Galaxy Tab  (192.168.1.101:39021)

Número del dispositivo a conectar [1-2]: 1

Conectando a 192.168.1.100:33445...
connected to 192.168.1.100:33445
[OK] Conectado a Google Pixel 6
Keep Wireless debugging enabled on your device for instant reconnection. No pairing needed!

Port Expiration & Re-pairing

Connection ports change when:
  • Device reboots
  • Wireless debugging is toggled off/on
  • Device switches WiFi networks
  • Long period of inactivity
If quick reconnection fails:
[!] No se pudo conectar. Los puertos pueden haber caducado.

¿Deseas re-vincular este dispositivo? [S/N]: S
The CLI/web interface guides you through re-pairing:
  1. IP is preloaded - no need to type it again
  2. Get new pairing port + code from device
  3. Enter the new pairing port and code
  4. Get new connection port from device
  5. Enter the new connection port
  6. Connection restored and port updated in devices.json
1

Connection attempt fails

APK Extractor tries to connect using the saved port but fails.
2

Re-pair prompt

IP: 192.168.1.100 (no modificable)
Nuevo puerto de vinculación: 41234
Código de vinculación: 654321

Emparejando...
Successfully paired to 192.168.1.100:41234
3

New connection port

Nuevo puerto de conexión: 35678

Conectando a 192.168.1.100:35678...
[OK] Puertos actualizados.
4

Saved device updated

The new port (35678) is saved to devices.json for future quick reconnections.

mDNS Auto-Discovery

Android devices advertise wireless debugging via mDNS (multicast DNS) using the service:
_adb-tls-connect._tcp
APK Extractor automatically detects these advertised devices:
// Example mDNS device serial
adb-1A2B3C4D5E6F7G8H-abcdef._adb-tls-connect._tcp
When detected:
  1. Resolves IP address from the mDNS hostname
  2. Fetches device info (brand, model) using getprop
  3. Displays in device list with wireless icon
mDNS discovery is automatic - no manual pairing needed if your network supports mDNS/Bonjour.
Some corporate or public WiFi networks block mDNS. If auto-discovery doesn’t work, use manual pairing instead.

WiFi Debugging API

The web interface uses these API endpoints:

Pair Device

POST /api/adb/pair
Content-Type: application/json

{
  "ip": "192.168.1.100",
  "port": "37891",
  "code": "123456"
}
Response:
{
  "ok": true,
  "output": "Successfully paired to 192.168.1.100:37891"
}
Implementation (server.js:586-596):
app.post('/api/adb/pair', async (req, res) => {
  const { ip, port, code } = req.body;
  if (!ip || !port || !code) {
    return res.status(400).json({ error: 'Faltan campos requeridos' });
  }
  
  const result = await runAdb(`pair ${ip}:${port} ${code}`, null, 30000);
  const success = result.toLowerCase().includes('success');
  res.json({ ok: success, output: result.trim() });
});

Connect Device

POST /api/adb/connect
Content-Type: application/json

{
  "ip": "192.168.1.100",
  "port": "33445",
  "label": "My Pixel 6" // optional
}
Response:
{
  "ok": true,
  "output": "connected to 192.168.1.100:33445"
}
The device is automatically saved with auto-detected brand/model or the provided label.

Security Considerations

TLS Encryption

All wireless debugging traffic is encrypted with TLS

Pairing Codes

6-digit codes prevent unauthorized connections

Same Network Only

Devices must be on the same local network (not internet-accessible)

Disable When Not Needed

Turn off wireless debugging to prevent unauthorized access
Always disable Wireless debugging when not using it. Anyone on your WiFi network could potentially pair with your device if it’s left enabled.
For remote connections over the internet, see the Remote Connection guide using Tailscale VPN.

Troubleshooting

Causes:
  • Wrong IP address
  • Wrong pairing port
  • Pairing code expired
  • Firewall blocking
Solutions:
  • Verify IP and port exactly match the device screen
  • Get a fresh pairing code (tap “Pair device with pairing code” again)
  • Disable firewall temporarily to test
  • Ensure PC and device are on the same WiFi network
You’re using the pairing port instead of the connection port.Solution: Look at the main “Wireless debugging” screen (not the pairing dialog) for the connection port.
Causes:
  • WiFi power saving
  • Weak signal
  • Network switching (WiFi ↔ mobile data)
Solutions:
  • Disable battery optimization for system services
  • Move device closer to WiFi router
  • Disable “Switch to mobile data automatically”
  • Use USB for long operations
  • Android 10 or older: Feature not available, use USB
  • Developer options disabled: Re-enable by tapping Build number 7 times
  • Airplane mode: Disable airplane mode
  • WiFi off: Enable WiFi
  • Network blocks mDNS: Use manual pairing
  • Device not advertising: Restart wireless debugging
  • Firewall: Allow mDNS (UDP port 5353)
  • Router settings: Enable mDNS/Bonjour forwarding
This is normal behavior. The port changes when:
  • Device reboots
  • Wireless debugging toggled
  • WiFi network changes
Solution: Use saved devices for quick reconnection. APK Extractor handles port updates automatically.

Best Practices

1

Use static IP

Configure your router to assign a static IP to your Android device’s MAC address. This prevents IP changes.
2

Keep wireless debugging enabled

Leave it enabled only when actively using it. Disable when done for security.
3

Save devices

Let APK Extractor save devices automatically. You’ll thank yourself later when reconnecting is one click.
4

USB for large operations

Extracting 50+ apps or large (100+ MB) apps? Use USB for speed and stability.

Next Steps

Remote Connection

Connect to devices over the internet using Tailscale

Device Management

Manage multiple WiFi and USB devices

Saved Devices

Understand devices.json format

Extracting APKs

Extract APKs over WiFi

Wireless API

API reference for pairing and connection

Build docs developers (and LLMs) love