ADB (Android Debug Bridge) воспринимаю как стетоскоп для мобильного инженера: прикладываю к устройству, слушаю логи, измеряю пульс протоколов. Без корректного драйвера звук искажается, поэтому привожу рабочий алгоритм.

Подготовка среды
Сначала подтверждаю, что система разряда x64 или x86 совпадает с будущими бинарями. Комбинация Win + Pause открывает окно «Сведения». Под катализатором Device Manager ищу раздел «Portable Devices». Подключаю телефон в режиме «USB Debugging». Если вместо имени модели появляется «Unknown Device», значит стек MTP активен, однако интерфейс ADB нем.
Дальше блокируют автоматическую подстановку устаревших драйверов через gpedit.msc:
Computer Configuration → Administrative Templates → System → Device Installation → «Prevent installation of devices not described by other policy settings» → Enabled.
Эта мера устраняет паразитное вмешательство Windows Update, сохраняя идемпотентность процесса.
Загрузка драйверов
Перехожу к официальному пакету Google USB Driver на developers.android.com. Ссылка уходит на zip-архив «usb_driver». Контрольная сумма SHA256 сверяется через PowerShell:
Get-FileHash .\usb_driver.zip -Algorithm SHA256
Совпадение гарантирует, что телеметрия передачи не исказила байты.
Распакованный каталог содержит android_winusb.inf. Файл расставляет связи VID_18D1&PID_4EE7 и подобных с универсальным мостом WinUSB. У некоторых вендоров, например Xiaomi или Samsung, встречается собственный VID. В таком случае правлю INF: добавляю строку
%CompositeAdbInterface% = USB_Install, USB\VID_04E8&PID_685D
и подписываю модификацию. Для подписи использую утилиту signtool из Windows SDK вместе с тестовым сертификатом, созданным через makecert.
После подготовительных штрихов перезапускаю систему в режиме «Disable driver signature enforcement». Комбинация Shift + Перезагрузка → Troubleshoot → Startup Settings → F7.
Открываю Device Manager, щёлкаю «Update Driver» по неизвестному устройству, выбираю пункт «Browse my computer for drivers». Указываю путь к распакованной папке. Windows выдаёт предупреждение о неподписанном драйвере, подтверждаю установку. Через секунду в дереве устройств появляется «Android Composite ADB Interface».
Решение возможных сбоев
Иногда после установки ADB выводит строку «unauthorized». Причина — RSA-пароль на смартфоне. Снимаю шнур, на телефоне в «Developer options» активирую «Revoke USB debugging authorizations», подключаю повторно, подтверждаю ключ.
При конфликте портов сообщение «device offline» лечу командой
Бинарь пересобирает транспортный слой, обновляя дескрипторы.
Редкий случай — драйвер CDC-ACM от модема перехватывает VID/PID, из-за чего ADB не видит гаджет. Исправляю через pnputil /enumdrivers, нахожу oem*.inf, выполняю pnputil /delete-driver oem*.inf /uninstall /force.
Мета-совет для скрупулёзных: храню копию рабочего usb_driver с кастомным INF в репозитории вместе с markdown-скриптом установки. Такой подход упрощает интроспекцию изменений.
Финишная проверка
Открываю PowerShell, набираю
Список показывает serial, статус — «device». Запускаю
Система отвечает номером прошивки, тестт завершается.
Отлаживаю проект, погружаюсь в трассировку logcat — драйвер послушно передаёт каждую строку, будто дирижёр передал палочку оркестру. На этом место установки закрыто, рабочая сцена готова.














