Respostas:
Tente usar sudo $(which fastboot)
por exemplo sudo $(which fastboot) devices
Além disso sudo $(which fastboot) oem unlock
Encontre uma solução melhor aqui:
https://stackoverflow.com/a/28127944/1621927
Aqui está o comentário:
Em vez de forçar permissões a sudo
cada vez que você precisa executar fastboot
, você pode corrigir permanentemente o problema:
lsusb
para identificar o seu dispositivo USB VendorIDudev
para definir permissões apropriadas quando o dispositivo estiver conectadoComo um bônus - será corrigido adb
também.
Por exemplo, no meu caso (para 'Megafon SP-A20i'):
$ fastboot devices
no permissions fastboot
$ sudo fastboot devices
[sudo] password for kaa:
MedfieldA9055F28 fastboot
$
Vamos consertar:
Primeiro, precisamos identificar o dispositivo:
a) procure o número do barramento usb (hack: eu sei que o dispositivo é baseado na 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) procure outros dispositivos 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
$
Os hubs não são definitivamente smartphones, então o USB vendorID de que precisamos é "8087".
Segundo, configure udev
(você deve substituir o valor "idVendor" pelo seu):
$ 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
$
Terceiro, reconecte seu dispositivo para permitir udev
que ele seja mágico.
Checagem final:
$ 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
$
Voila!
sudo udevadm trigger
também.
sudo
não é uma solução.
Graças a elichai2 e este link e lista , consegui resolver meu problema de permissão do fastboot.
Eu tenho o Google Nexus 6P, então usei o seguinte para meu ID de fornecedor:
Google - 18d1
Se você usar o seguinte comando:
sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\" ..."
copie exatamente. Eu já era root e tentei copiar apenas a parte do eco que me deu resultados indesejáveis. Basicamente, ele coloca o \ "no arquivo .rules em vez de interpretar a barra como o caractere de escape.
Sugiro que você use o seguinte se você já criou o arquivo .rules (use sua ID de fornecedor).
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' >> /etc/udev/rules.d/51-android.rules
Recarreguei as regras do udev e, em seguida, emiti o comando trigger. Também desconectei e conectei o usb por uma boa medida.
udevadm control --reload
udevadm trigger
Como usuário não privilegiado, executei:
fastboot devices
e funcionou como desejado. Espero que isso possa ser útil ou ajudar qualquer pessoa que tenha problemas com o problema de permissões.
Quando preciso enviar alguns comandos usando o fastboot (firmware piscando no dispositivo htc, por exemplo), instalo o fastboot usando o apt
sudo apt install android-tools-fastboot
então quando eu começar a usá-lo primeiro comando é
sudo -s
todos os comandos neste terminal serão executados como comandos de envio raiz, como
fastboot devices
fastboot reboot-bootloader
fastboot oem rebootRUU
fastboot flash zip xxxx.zip
não há necessidade de correção ou algo que seja simples, um comando extra antes de iniciá-lo
Ou você pode adicionar todas as regras do udev: Conjunto completo de regras de ID de fornecedor USB do Android para Linux https://gist.github.com/jdamcd/6054951#file-51-android-rules
Primeiro instale o fastboot no apt:
sudo apt install android-tools-fastboot
Em seguida, execute o fastboot com o sudo:
sudo fastboot
Funciona para mim.