Современные смартфоны на базе Android обладают огромным потенциалом, который часто скрыт за графическим интерфейсом. Для продвинутых пользователей, разработчиков и энтузиастов главной дверью в глубины системы является ADB (Android Debug Bridge). Традиционно для работы с ADB требовался компьютер, но с появлением мощных терминальных эмуляторов вроде Termux ситуация кардинально изменилась. В этой статье мы подробно разберем, как настроить полноценное управление телефоном через терминал прямо с самого устройства, без root-прав и без ПК.
Почему Termux и ADB — идеальная пара
Termux, это не просто эмулятор терминала, это полноценная Linux-среда для Android с менеджером пакетов pkg (обертка над apt). Это позволяет устанавливать стандартные консольные утилиты: git, python, nodejs, vim и, конечно же, adb;
Использование ADB прямо на телефоне (on-device) дает уникальные преимущества:
- Автономность: Не нужно таскать ноутбук или искать кабель для подключения к ПК.
- Скорость: Выдача разрешений (permissions), удаление системного мусора (debloat), изменение DPI, запись экрана — все это делается за секунды.
- Автоматизация: Можно писать скрипты на Bash/Python для рутинных задач и запускать их по расписанию (cron) или через виджеты Termux:Widget.
Проблема официального пакета android-tools
В репозиториях Termux существует пакет android-tools, содержащий adb и fastboot. Однако, как указывается в документации проекта termux-adb, официальная сборка работает только на устройствах с root-правами.
Причина: Стандартный ADB для перечисления USB-устройств требует доступа к файловой системе /dev/bus/usb/*. В стандартной песочнице Android (без root) доступ к этим путям заблокирован. Если ADB не может просканировать USB-шину, он не увидит подключенные устройства (даже само себя в режиме OTG).
Решение: Проект termux-adb (nohajc/termux-adb)
Разработчик nohajc создал модифицированные версии adb и fastboot, которые обходят это ограничение, используя официальное Android API, доступное через утилиту termux-usb (из пакета termux-api).
Как это работает технически
- termux-usb запрашивает у пользователя разрешение на доступ к конкретному USB-устройству (через системный диалог Android).
- После одобрения
termux-usbвозвращает сырой файловый дескриптор (file descriptor) для этого устройства. - Обычный ADB не умеет работать с файловыми дескрипторами, переданными извне.
- termux-adb пропатчен так, чтобы:
- Сканировать устройства через вызов
termux-usb. - Использовать Unix Domain Socket (UDS) для передачи полученных файловых дескрипторов от дочернего процесса (termux-usb) к родительскому (termux-adb).
- Сканировать устройства через вызов
Это позволяет работать с любым количеством устройств, подключенных через USB-хаб к OTG-адаптеру, не требуя root-доступа.
Пошаговая инструкция по установке
Подготовка окружения
Все действия выполняются внутри приложения Termux (рекомендуется устанавливать его из F-Droid или GitHub Releases, версия из Google Play устарела и не поддерживается).
# Обновляем пакеты
pkg update && pkg upgrade -y
pkg install termux-api -y
Установка termux-adb
Автор проекта предоставляет удобный скрипт установки, который добавляет свой репозиторий и GPG-ключ.
# Запуск официального скрипта установки
curl -s https://raw.githubusercontent.com/nohajc/termux-adb/master/install.sh | bash
Что делает скрипт:
- Добавляет репозиторий
termux-adbв$PREFIX/etc/apt/sources.list.d/. - Импортирует публичный GPG-ключ для проверки подписей пакетов.
- Устанавливает пакеты
termux-adbиtermux-fastboot. - Настраивает автоматическое обновление через стандартную команду
pkg upgrade.
Важно: Команды переименованы в
termux-adbиtermux-fastboot, чтобы избежать конфликта с официальным пакетомandroid-tools. Если у вас установленandroid-tools, рекомендуется удалить его:pkg uninstall android-tools.
Подключение устройства (OTG / USB-C)
Для управления другим телефоном или планшетом:
- Подключите целевое устройство через USB-C кабель (male-to-male) или OTG-адаптер (microUSB/USB-C).
- На целевом устройстве включите «Отладку по USB» (USB Debugging) в настройках разработчика.
- В Termux выполните:
termux-adb devices. - Появится системный диалог: «Разрешить доступ к USB-устройству [Имя устройства]?». Нажмите OK (можно поставить галочку «По умолчанию для этого устройства»).
- После этого
termux-adbпокажет серийный номер устройства. Готово!
Практические сценарии использования (On-Device)
Управление разрешениями приложений (Permission Management)
Это одна из самых частых задач, упомянутая в блоге tiredsysadmin.cc. Многие продвинутые приложения (например, эквалайзер Wavelet, блокировщики рекламы, бэкап-утилиты) требуют специальных разрешений, которых нет в меню настроек.
# Пример: Выдача разрешения на дамп аудио для Wavelet
termux-adb shell pm grant com.pittvandewitt.wavelet android.permission.DUMP
termux-adb shell pm grant com;example.app android.permission.RECORD_SCREEN
termux-adb shell dumpsys package com.example.app | grep permission
Дебаутинг (Debloat) — удаление системного ПО без Root
С помощью pm uninstall --user 0 можно удалить предустановленные приложения (bloatware) для текущего пользователя, не трогая системный раздел (не требует root и не триггерит SafetyNet/Play Integrity).
# Поиск пакета (например, Facebook или предустановленные игры)
termux-adb shell pm list packages | grep facebook
termux-adb shell pm uninstall --user 0 com.facebook.katana
termux-adb shell pm uninstall --user 0 com.facebook.system
Настройка системы (DPI, анимации, навигация)
# Изменение DPI (плотности пикселей) без перезагрузки (требует перезапуска UI)
termux-adb shell wm density 420
termux-adb shell wm density reset # Вернуть стандарт
termux-adb shell settings put global window_animation_scale 0
termux-adb shell settings put global transition_animation_scale 0
termux-adb shell settings put global animator_duration_scale 0
termux-adb shell cmd overlay enable com.android.internal.systemui.navbar.gestural
Работа с файлами и бэкап
# Копирование файла с телефона в Termux (текущая директория)
termux-adb pull /sdcard/Download/file.txt .
termux-adb push ./backup.ab /sdcard/Download/
termux-adb backup -f backup.ab -apk com.example.app
termux-adb restore backup.ab
Fastboot (Разблокировка загрузчика, прошивка)
Пакет включает termux-fastboot. Он работает по тому же принципу через termux-usb.
# Перезагрузка в fastboot
termux-adb reboot bootloader
termux-fastboot devices
termux-fastboot flashing unlock
termux-fastboot oem unlock
Известные ограничения и нюансы
Производительность Fastboot
Как честно предупреждает автор в README на GitHub: «Запрос устройств через termux-usb и libusb может быть медленным. Для ADB это не проблема, так как он работает как демон и сканирует периодически. Но для fastboot это заметно, так как у него нет фонового сервиса».
Команды termux-fastboot могут выполняться дольше, чем на ПК. Это архитектурная особенность передачи дескрипторов через UDS. В будущих версиях это может быть оптимизировано.
Конфликт с официальным android-tools
Если у вас установлен пакет android-tools, команды adb и fastboot будут указывать на него (и они не заработают без root). Используйте явно termux-adb и termux-fastboot или создайте алиасы в ~/.bashrc / ~/.zshrc:
alias adb='termux-adb'
alias fastboot='termux-fastboot'
Беспроводной ADB (ADB over Wi-Fi / TCP/IP)
Termux-adb отлично работает с беспроводной отладкой (Android 11+).
# На телефоне-цели: Настройки -> Система -> Для разработчиков -> Беспроводная отладка -> Сопряжение с кодом сопряжения
termux-adb pair ...:* # IP и порт из меню сопряжения
termux-adb connect ...:* # Порт основного соединения
После этого можно выдернуть кабель и работать по локальной сети.
Альтернативы и платные решения
В Google Play Store существуют платные приложения-обертки над ADB (например, ADB WiFi, Bugjaeger, Remote ADB Shell). Однако, как отмечается в обзоре на tiredsysadmin.cc, большинство из них перестало работать на современных версиях Android (11/12/13/14+) из-за ужесточения политик безопасности (Scoped Storage, ограничения на выполнение бинарников в /data/local/tmp).
Termux-adb остается самым надежным, бесплатным и открытым решением, так как использует официальные API Android (termux-usb) и не требует обходов защиты.
Безопасность
- Физический доступ: Для USB-соединения требуется физическое подключение кабеля и подтверждение на экране телефона-цели.
- Беспроводной доступ: Требует ввода кода сопряжения (pairing code), который виден только на экране телефона-цели.
- Изоляция: Termux работает в своей песочнице. Даже если вы взломаете свой Termux, доступ к ADB дает только те права, что и у пользователя shell (без root).
Связка Termux + termux-adb превращает ваш Android-смартфон в портативную станцию администрирования других Android-устройств. Это решает главную боль мобильного разработчика и энтузиаста — зависимость от ПК для рутинных операций: выдачи специальных разрешений, удаления блоутвара, изменения системных настроек, бэкапа данных и даже разблокировки загрузчика.
Проект nohajc/termux-adb — это пример элегантного инжиниринга: вместо взлома системы (root) он использует легальные API Android (termux-usb) и умную передачу файловых дескрипторов через Unix-сокеты. Установив его один раз через простой скрипт curl ... | bash, вы получаете мощный инструмент, который обновляется вместе с системой Termux командой pkg upgrade.
Ключевые ссылки
- Репозиторий проекта: github.com/nohajc/termux-adb
- Официальный сайт Termux: termux.dev (скачивайте APK отсюда или из F-Droid)
- Termux:API (аддон): GitHub Releases или F-Droid
- Статья-вдохновитель (tiredsysadmin): Доступ к adb из termux с телефона