Как это устроено внутри:
Демон adbd на устройстве умеет слушать не только USB-транспорт, но и TCP-сокет. Сервер adb на компьютере подключается к нему по сети, и дальше протокол работает ровно так же, как по проводу: те же
Код: Выделить всё
pushКод: Выделить всё
pullКод: Выделить всё
logcatКод: Выделить всё
shellКлассика: adb tcpip и adb connect:
Работает на любом Android начиная с 4.x, root не нужен, но для первого включения обязателен USB-кабель.
Шаг 1. Подключаем устройство проводом и переводим adbd в TCP-режим:
Код: Выделить всё
$ adb tcpip 5555
restarting in TCP mode port: 5555Шаг 2. Узнаём IP телефона в Wi-Fi сети:
Код: Выделить всё
$ adb shell ip addr show wlan0
24: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 192.168.1.42/24 brd 192.168.1.255 scope global wlan0Код: Выделить всё
adb shell ip routeШаг 3. Отключаем кабель и подключаемся по сети:
Код: Выделить всё
$ adb connect 192.168.1.42:5555
connected to 192.168.1.42:5555
$ adb devices
List of devices attached
192.168.1.42:5555 deviceМинусы классики честно. Режим слетает после перезагрузки телефона: свойство
Код: Выделить всё
persist.adb.tcp.portAndroid 11+: беспроводная отладка с сопряжением:
Начиная с Android 11 кабель не нужен вообще. В меню разработчика появился пункт "Беспроводная отладка" (Wireless debugging). Включаете его, и устройство поднимает adbd поверх TLS на случайном порту. Никакого открытого 5555, канал шифруется, подключиться могут только сопряжённые компьютеры. Работает только в Wi-Fi сети, через мобильные данные тумблер не активируется.
На компьютере нужны platform-tools 30.0.0 или новее, в 2026 актуальны 35.x:
Код: Выделить всё
$ adb --version
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458На телефоне внутри экрана беспроводной отладки жмёте "Подключение устройства с помощью кода" (Pair device with pairing code). Появится шестизначный код и адрес вида IP:порт. Этот порт нужен именно для сопряжения, он отличается от порта подключения на главном экране беспроводной отладки. На путанице двух портов спотыкаются почти все.
Код: Выделить всё
$ adb pair 192.168.1.42:37187
Enter pairing code: 482913
Successfully paired to 192.168.1.42:37187 [guid=adb-RF8M33KXXXX-Vbz0xJ]Код: Выделить всё
$ adb pair 192.168.1.42:37187 482913Код: Выделить всё
adb pairКод: Выделить всё
adb connectКод: Выделить всё
$ adb connect 192.168.1.42:42013
connected to 192.168.1.42:42013QR-вариант делает то же самое, только код сканирует телефон. Чистый adb из командной строки QR не рисует, эта кнопка живёт в Android Studio: Device Manager > Pair Devices Using Wi-Fi > Pair using QR code. Студия показывает QR, телефон сканирует его кнопкой "Подключение с помощью QR-кода", сопряжение проходит автоматически. Под капотом тот же
Код: Выделить всё
adb pairЗапоминание и mDNS:
Сопряжение это однократный обмен ключами. Компьютер сохраняется в списке "Сопряжённые устройства" на телефоне (там же его можно удалить), повторный
Код: Выделить всё
adb pairКод: Выделить всё
$ adb mdns check
mdns daemon version [Openscreen discovery 0.0.0]
$ adb mdns services
List of discovered mdns services
adb-RF8M33KXXXX-Vbz0xJ _adb-tls-connect._tcp 192.168.1.42:42013Код: Выделить всё
adb devicesПереключение проводной/беспроводной:
Вернуть adbd из классического TCP-режима обратно на USB:
Код: Выделить всё
$ adb usb
restarting in USB modeКод: Выделить всё
$ adb disconnect 192.168.1.42:42013
disconnected 192.168.1.42:42013
$ adb disconnect
disconnected everythingКод: Выделить всё
$ adb devices -l
List of devices attached
RF8M33KXXXX device usb:1-2 product:a52qnsxx model:SM_A525F transport_id:1
192.168.1.42:42013 device product:a52qnsxx model:SM_A525F transport_id:2Код: Выделить всё
$ adb -s 192.168.1.42:42013 logcat -d -t 20
$ adb -t 1 shell getprop ro.product.modelУстранение неполадок:
Connection refused. Вывод вида:
Код: Выделить всё
$ adb connect 192.168.1.42:5555
failed to connect to '192.168.1.42:5555': Connection refusedКод: Выделить всё
adb tcpip 5555Таймаут вместо refused. Пакеты не доходят до устройства. Типичные причины: компьютер и телефон в разных подсетях (на части роутеров диапазоны 2.4 и 5 ГГц изолированы друг от друга), включённый VPN на любой из сторон, файрвол. Проверяется netcat:
Код: Выделить всё
$ nc -vz 192.168.1.42 42013
nc: connectx to 192.168.1.42 port 42013 (tcp) failed: Operation timed outОшибка при pair. Если
Код: Выделить всё
adb pairoffline или unauthorized по сети. Сначала перезапуск сервера:
Код: Выделить всё
$ adb kill-server
$ adb start-serverСвязь рвётся сама. Агрессивное энергосбережение режет Wi-Fi у спящего устройства, особенно на прошивках Xiaomi и Huawei. На время отладки посадите телефон на зарядку и включите "Не выключать экран" в меню разработчика (опция работает только при подключённом питании), плюс выведите систему из оптимизации батареи для Wi-Fi.
mDNS не находит устройства. Диагностика через
Код: Выделить всё
adb mdns checkКод: Выделить всё
$ ADB_MDNS_OPENSCREEN=1 adb kill-server
$ adb start-serverПоследнее про скорость: Wi-Fi всегда медленнее кабеля, и
Код: Выделить всё
adb install