Ответы:
Попробуйте использовать sudo $(which fastboot)
например sudo $(which fastboot) devices
также sudo $(which fastboot) oem unlock
Нашли лучшее решение здесь:
https://stackoverflow.com/a/28127944/1621927
Вот комментарий:
вместо того, чтобы принудительно устанавливать разрешения при sudo
каждом запуске fastboot
, вы можете навсегда решить проблему:
lsusb
для идентификации вашего устройства USB VendorIDudev
для установки надлежащих разрешений, когда ваше устройство подключеноВ качестве бонуса - это тоже будет исправлено adb
.
Например, в моем случае (для «Мегафон SP-A20i»):
$ fastboot devices
no permissions fastboot
$ sudo fastboot devices
[sudo] password for kaa:
MedfieldA9055F28 fastboot
$
Давайте исправим:
Для начала нам нужно идентифицировать устройство:
а) искать номер шины USB (взломать: я знаю, что устройство на базе Intel)
$ fastboot -l devices
no permissions fastboot usb:1-1.2
$ lsusb |grep 001 |grep -i intel
Bus 001 Device 044: ID 8087:09ef Intel Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
$
б) искать другие устройства Intel:
$ lsusb |grep 8087
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 044: ID 8087:09ef Intel Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
$
Концентраторы не являются определенно смартфонами, поэтому - USB vendorID, который нам нужен, это "8087".
Во-вторых, настройте udev
(вы должны заменить значение «idVendor» на ваше):
$ sudo sh -c "echo '# Megafon SP-A20i' >> /etc/udev/rules.d/51-android.rules"
$ sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\", MODE=\"0666\", GROUP=\"plugdev\"' >> /etc/udev/rules.d/51-android.rules"
$ sudo service udev restart
udev stop/waiting
udev start/running, process 1821
$
В-третьих, заново подключите ваше устройство, чтобы оно могло udev
творить чудеса.
Окончательная проверка:
$ fastboot -l devices
MedfieldA9055F28 fastboot usb:1-1.2
$ adb devices
List of devices attached
$ fastboot reboot
rebooting...
finished. total time: 0.253s
$ sleep 90
$ adb devices
List of devices attached
MedfieldA9055F28 device
$
Вуаля!
sudo udevadm trigger
.
sudo
не является решением.
Благодаря elichai2 и этой ссылке и списку я смог решить мою проблему с разрешением fastboot.
У меня есть Google Nexus 6P, поэтому я использовал следующее для моего идентификатора поставщика:
Google - 18d1
Если вы используете следующую команду:
sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\" ..."
скопируйте это точно. Я уже был root и пытался скопировать только часть эха, которая дала мне нежелательные результаты. По сути, он помещает \ "в файл .rules, а не интерпретирует косую черту как escape-символ.
Я предлагаю использовать следующее, если вы уже создали root-файл .rules (используйте свой идентификатор поставщика).
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' >> /etc/udev/rules.d/51-android.rules
Я перезагрузил правила udev и затем выполнил команду триггера. Я также отключил и подключил USB для хорошей меры.
udevadm control --reload
udevadm trigger
Как непривилегированный пользователь, я запустил:
fastboot devices
и это сработало как хотелось. Я надеюсь, что это может быть полезным или помочь любому, кто испытывает проблемы с разрешением.
когда мне нужно отправить некоторые команды с помощью fastboot (например, прошить прошивку на устройстве htc), я устанавливаю fastboot с помощью apt
sudo apt install android-tools-fastboot
затем, когда я начинаю использовать его, первая команда
sudo -s
тогда все команды в этом терминале будут работать как корневые отправляющие команды, такие как
fastboot devices
fastboot reboot-bootloader
fastboot oem rebootRUU
fastboot flash zip xxxx.zip
нет необходимости исправлять или что-то еще, просто одна дополнительная команда, прежде чем начать
Или вы можете добавить все правила udev: Полный набор правил Android-идентификатора USB-производителя Android для https://gist.github.com/jdamcd/6054951#file-51-android-rules
Сначала установите fastboot из apt:
sudo apt install android-tools-fastboot
Затем выполните fastboot с помощью sudo:
sudo fastboot
Меня устраивает.