Ошибка could not read OK from ADB server возникает в тот момент, когда клиент adb отправляет запрос фоновому серверу, но не получает от него ожидаемый ответ OKAY — обычно из-за того, что сервер не запустился, повис или его порт занят другим процессом. В результате команды вроде adb devices либо зависают, либо выдают сообщение об ошибке, и подключение к смартфону становится невозможным.
Проблема встречается на Windows чаще всего, но возможна и на macOS с Linux. Хорошая новость: в подавляющем большинстве случаев она решается программно, без переустановки системы и без риска для данных на устройстве. Ниже разберём, как устроен обмен между клиентом и сервером ADB, что именно ломается и какие шаги проверять в первую очередь.
Что означает эта ошибка и как работает ADB
Инструмент ADB (Android Debug Bridge) состоит из трёх компонентов: клиента, который вы запускаете в терминале, сервера, работающего в фоне на компьютере, и демона adbd на самом Android-устройстве. Когда вы вводите команду, клиент подключается к серверу через локальный TCP-порт 5037 и ждёт от него служебный ответ.
Сообщение could not read OK from ADB server означает, что это рукопожатие сорвалось: сервер либо не ответил вообще, либо ответил не так, как ожидал клиент. Типичные причины — несовпадение версий клиента и сервера, занятый порт, повреждённый процесс сервера или блокировка со стороны антивируса.
- 🔌 Конфликт версий — на ПК установлено несколько копий adb.exe (например, из Android Studio, из отдельного архива platform-tools и из комплекта прошивальщика), и клиент одной версии пытается говорить с сервером другой.
- 🚪 Занятый порт 5037 — другой процесс уже слушает этот порт, и сервер ADB не может стартовать.
- 🛡️ Антивирус или брандмауэр — блокирует локальное соединение или сам исполняемый файл.
- 📱 Эмуляторы и сторонние утилиты — BlueStacks, LDPlayer, Nox и подобные программы используют собственные копии ADB и перехватывают подключение.
Быстрая диагностика: с чего начать
Прежде чем менять настройки, выполните простую проверку. Откройте командную строку и введите команду adb version. Если клиент отвечает и показывает номер версии, сам исполняемый файл в порядке — проблема на стороне сервера или окружения.
Затем проверьте, запущен ли сервер и не завис ли он. Для этого используйте последовательность команд:
adb kill-server
adb start-server
adb devices
Если после перезапуска список устройств отображается (даже пустой), сервер работает, и дальше стоит искать проблему в кабеле, драйверах или разрешении отладки на смартфоне. Если же ошибка повторяется — переходите к проверке порта и конфликтующих процессов.
Проверка порта 5037 и конфликтующих процессов
Сервер ADB по умолчанию слушает порт 5037. Если его заняла другая программа, сервер не сможет запуститься корректно. В Windows проверить это можно командой:
netstat -ano | findstr :5037
В выводе будет указан PID процесса, который использует порт. Найдите его в Диспетчере задач на вкладке «Подробности» и определите, что это за программа. Если это старая копия adb.exe, завершите процесс и повторите запуск сервера. Если порт заняла сторонняя утилита — закройте её или удалите, если она не нужна.
⚠️ Внимание: не завершайте процессы, назначение которых вам неизвестно, особенно системные. Завершайте только те, что точно относятся к ADB или установленным вами эмуляторам и прошивальщикам.
☑️ Проверка конфликтов ADB
Конфликт нескольких копий ADB на компьютере
Одна из самых частых причин ошибки — несколько версий platform-tools на одном ПК. Клиент новой версии при старте проверяет версию уже запущенного сервера, и при несовпадении обмен может завершиться именно этой ошибкой.
Чтобы найти все копии, выполните в командной строке where adb. Если путей несколько, оставьте одну актуальную версию — например, свежий пакет platform-tools с официального сайта для разработчиков Android — и удалите или переименуйте остальные. Также проверьте переменную окружения PATH: в ней не должно быть устаревших путей к старым копиям ADB.
Драйверы, кабель и настройки смартфона
Если сервер запускается, но устройство не определяется, проблема может быть на стороне подключения. Проверьте, что на смартфоне включена отладка по USB: обычно она находится в разделе «Для разработчиков», который активируется после нескольких нажатий на пункт «Номер сборки» в сведениях о телефоне. Точные названия пунктов зависят от оболочки производителя — сверьтесь с инструкцией к вашей модели.
Также проверьте сам кабель: часть USB-кабелей поддерживает только зарядку и не передаёт данные. Попробуйте другой кабель и другой USB-порт, желательно напрямую, без хабов. В Диспетчере устройств Windows смартфон не должен отображаться с жёлтым значком ошибки — если отображается, переустановите драйвер производителя.
Сводная таблица симптомов и решений
| Симптом | Вероятная причина | Действие |
|---|---|---|
| Ошибка сразу при любой команде adb | Сервер не запущен или повис | adb kill-server, затем adb start-server |
| Ошибка после установки новой программы | Конфликт версий ADB | Найти копии через where adb, оставить одну |
| Порт 5037 занят чужим процессом | Эмулятор или старая копия ADB | Завершить процесс через Диспетчер задач |
| Сервер работает, устройства нет в списке | Кабель, драйвер или отладка отключена | Сменить кабель, включить отладку, переустановить драйвер |
| Устройство видно как unauthorized | Не подтверждён запрос на смартфоне | Разрешить отладку на экране устройства |
Когда ничего не помогает
Если перечисленные шаги не дали результата, попробуйте полностью чистый сценарий: завершите все процессы ADB, удалите все копии platform-tools, перезагрузите компьютер, скачайте свежий архив platform-tools с официального источника и распакуйте его в простую папку без кириллицы в пути, например C:\platform-tools.
Дополнительно временно отключите антивирус и проверьте, не блокирует ли он локальные соединения adb.exe. Если после этого сервер запускается — добавьте папку с ADB в исключения защитного ПО. В редких случаях помогает смена порта сервера через переменную окружения ANDROID_ADB_SERVER_PORT, но делать это стоит только если порт 5037 принципиально недоступен в вашей системе.
⚠️ Внимание: не скачивайте ADB и драйверы с неофициальных сайтов и «сборок» — в таких архивах встречаются устаревшие или модифицированные файлы, которые сами становятся источником ошибок. Используйте официальный пакет platform-tools от Google.
Почему ошибка появляется внезапно, хотя вчера всё работало
Чаще всего виновато фоновое обновление: Android Studio или эмулятор обновили свою копию ADB, и версии клиента и сервера разошлись. Также возможен сценарий, когда система «убила» зависший процесс сервера, а клиент продолжает обращаться к старому соединению.
Частые вопросы
Опасна ли эта ошибка для смартфона или данных?
Нет. Ошибка касается только связи между клиентом и сервером ADB на компьютере. Данные на устройстве не затрагиваются, а команды kill-server и start-server полностью безопасны.
Поможет ли переустановка Windows?
Крайне маловероятно, что это потребуется. Ошибка почти всегда вызвана конфликтом версий ADB, занятым портом или блокировкой антивирусом — всё это решается в рамках текущей системы.
Может ли виноват антивирус?
Да, возможная причина — блокировка локального TCP-соединения или помещение adb.exe в карантин. Проверьте журнал антивируса и добавьте папку platform-tools в исключения.
Что делать, если устройство определяется как unauthorized?
На экране смартфона должен появиться запрос на разрешение отладки — подтвердите его. Если запрос не появляется, отключите и снова включите отладку по USB, переподключите кабель и повторите adb devices.
Нужен ли root для исправления этой ошибки?
Нет. Ошибка возникает на стороне компьютера и не имеет отношения к правам root на устройстве. Разблокировка загрузчика или рутирование для её устранения не требуются.