fastboot и adb не работают с sudo

У меня очень странная проблема на моем компьютере с Ubuntu при попытке запустить команду fastboot.

Когда я бегу:

fastboot devices

я получил

no permissions   fastboot

Поэтому я запускаю команду с правами администратора:

sudo fastboot devices

И тогда я получаю результат

sudo: fastboot: command not found

Как это может быть? У меня есть каталог в моем PATH, и все работает правильно без sudo.


person Guy Sopher    schedule 19.11.2014    source источник
comment
чмод + х? Еще 5, чтобы пойти... Я сделал.   -  person    schedule 19.11.2014
comment
одно правило udev для одновременного управления всеми устройствами adb и fastboot   -  person Alex P.    schedule 14.06.2018


Ответы (2)


Вместо того, чтобы навязывать разрешения через sudo каждый раз, когда вам нужно запустить fastboot, вы можете навсегда решить проблему:

  1. используйте lsusb для идентификации устройства USB VendorID
  2. настроить udev, чтобы установить правильные разрешения, когда ваше устройство подключено к сети
  3. выгода!

В качестве бонуса - это будет исправлено и для 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

$ 

Вуаля!

person Andrey Kopeyko    schedule 24.01.2015
comment
Спасибо, это сработало, но строка с lsusb |grep 001 |grep -i intel запутала меня, потому что я пытался добавить телефон nexus 5x, который является телефоном Google. Поэтому я пропустил часть |grep -i intel и использовал lsusb | grep 001, и он дал мне полный список, показывающий мое устройство nexus 5x. 'Bus 001 Device 015: ID 18d1:d00d Google Inc. Затем я использовал 18d1 вместо 8087, и это сработало. - person Danuofr; 01.08.2018

Вы можете использовать

sudo $(какие fastboot) устройства

person Machado    schedule 19.11.2014
comment
Спасибо. Работал как шарм. Как я могу это исправить? Чтобы нормально работали устройства sudo fastboot? - person nlmm01; 05.02.2015
comment
Пожалуйста, не используйте sudo в качестве ответа. работать от имени root действительно плохо, если в этом нет необходимости. - person elichai2; 11.04.2018
comment
sudo — это олицетворение root, а не root. Если бы они выступали за su, тогда я мог бы понять вашу точку зрения. sudo — это то, как почти все команды запускаются в Linux, не знаю, в чем навязчивая идея не использовать его для быстрой загрузки. - person anutter; 16.07.2020