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

adb usb drivers

Подготовка среды

Сначала подтверждаю, что система разряда 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 — драйвер послушно передаёт каждую строку, будто дирижёр передал палочку оркестру. На этом место установки закрыто, рабочая сцена готова.