web-dev-qa-db-ja.com

fastbootとadbがsudoで機能しない

Fastbootコマンドを実行しようとすると、Ubuntuマシンで非常に奇妙な問題が発生します。

私が走ると:

fastbootデバイス

私は得る

権限がないfastboot

だから私は管理者権限でコマンドを実行します:

Sudo fastbootデバイス

そして、私は結果を得ます

Sudo:fastboot:コマンドが見つかりません

どうすればいいの? PATHにディレクトリがあり、Sudoがなくてもすべてが正しく機能します。

13
Guy Sopher

Sudoを実行する必要があるたびにfastbootを介して権限を強制する代わりに、問題を完全に修正できます。

  1. lsusbを使用して、デバイスのUSB VendorIDを識別します
  2. デバイスが接続されているときに適切な権限を設定するようにudevを構成します
  3. 利益!

おまけとして-adbでも修正されます。

たとえば、私の場合(「Megafon SP-A20i」の場合):

$ fastboot devices
no permissions  fastboot
$ Sudo fastboot devices
[Sudo] password for kaa: 
MedfieldA9055F28    fastboot
$ 

修正しましょう:

まず、デバイスを特定する必要があります。

a)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ベンダーIDは「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
$ 

3番目に、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

$ 

出来上がり!

35
Andrey Kopeyko

使用できます

Sudo $(which fastboot)デバイス

9
Machado