Відповіді:
Спробуйте використовувати 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
$
b) шукайте інші пристрої 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-постачальник, який нам потрібен, - це "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 та цьому посиланню та списку я зміг вирішити проблему з дозволом на швидку завантаження .
У мене є Google Nexus 6P, тому я використовував таке для свого ідентифікатора постачальника:
Google - 18d1
Якщо ви використовуєте таку команду:
sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\" ..."
скопіюйте його точно. Я вже корінь і намагався скопіювати лише частину ехо, що дало мені небажані результати. В основному, він поміщає \ "у файл .rules, а не інтерпретує косу рису як символ евакуації.
Я пропоную скористатися наступним, якщо ви вже викорінюєте файл .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: Повний набір правил ідентифікатора USB-постачальника Android для Linux https://gist.github.com/jdamcd/6054951#file-51-android-rules
Спочатку встановіть швидку завантаження з apt:
sudo apt install android-tools-fastboot
Наступне виконання швидкої завантаження з sudo:
sudo fastboot
Це працює для мене.