191

HTC Wildfire A3333 をデバッグ モードで Fedora Linux 17 に接続する際に問題があります。Adb は次のように述べています。

./adb devices
List of devices attached 
????????????    no permissions

私のudevルール(Samsungの最初のルールは正常に機能し、HTCの2番目のルールは正常に機能しません):

SUBSYSTEM=="usb",SYSFS{idVendor}=="04e8",SYMLINK+="android_adb",MODE="0666",GROUP="plugdev" 
SUBSYSTEM=="usb",SYSFS{idVendor}=="0bb4",SYMLINK+="android_adb",MODE="0666",GROUP="plugdev"

Samsung デバイスの場合、すべて問題ありません。

 ./adb devices
List of devices attached 
00198a9422618e  device

私は運がなくても同様のスレッドで与えられたすべての答えを試してきました: Using HTC wildfire for android development

4

20 に答える 20

368

Debian Wheezy でこの問題が発生しました。sudo で adb デーモンを再起動しました。

sudo ./adb kill-server
sudo ./adb start-server
sudo ./adb devices

すべてが機能しています:)

于 2013-02-23T17:41:24.407 に答える
107

その問題の原因は、システムのアクセス許可に関係しています (この提案については @ IsaacCisneros に感謝します)。どういうわけか、HTC Wildfire (およびおそらく他のもの) は、Samsung デバイスよりもシステムから何かを必要としています。簡単な解決策は、Eclipse をルートとして実行することですが、これは Fedora のような非 sudo Linux システムではあまり快適ではありません。

同じ目標を達成する別の方法を見つけました。これは、スーパー ユーザー権限で IDE 全体を実行するよりもユーザー フレンドリーで、セキュリティ ホールが少ないようです。これはまだ問題の回避策にすぎないことに注意してください。システム ルートの使用は管理タスクのみに最小限に抑える必要があり、「adb」は SUID のない通常のユーザー アカウントで動作するように設計されています。SUID の適切な設定は非常に安全であるという事実にもかかわらず、すべての権限の増加はシステムのセキュリティ ホールになる可能性があります。

1.adb バイナリの所有権の設定 (所有者 - root、所有者グループ - user_group):

chown root:user_group adb

2.SUID によるアクセス許可の設定:

chmod 4550 adb

これにより、次のような結果が得られます (ls -llh):

-r-sr-x---. 1 root user_name 1.2M Jan 8 11:42 adb

その後、通常のユーザー アカウントを使用して adb を root イベントとして実行できるようになります。通常のユーザーとして Eclipse を実行すると、HTC が適切に検出されます。

./adb devices 
List of devices attached 
HT0BPPY15230    device 
于 2013-01-23T11:36:48.790 に答える
95

同様の問題があります:

$ adb devices
List of devices attached 
4df15d6e02a55f15    device
????????????    no permissions

調査

を実行するlsusbと、接続したデバイスと、次の場所を確認できます。

$ lsusb
...
Bus 002 Device 050: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone ...
Bus 002 Device 049: ID 18d1:4e42 Google Inc. 

これは、Samsung Galaxy S3Nexus 7 (2012)が接続されていることを示しています。

それらの権限を確認します:

$ ls -l /dev/bus/usb/002/{049,050}
crw-rw-r--  1 root root    189, 176 Oct 10 10:09 /dev/bus/usb/002/049
crw-rw-r--+ 1 root plugdev 189, 177 Oct 10 10:12 /dev/bus/usb/002/050

待って。何?その「plugdev」グループはどこから来たのですか?

$ cd /lib/udev/rules.d/
$ grep -R "6860.*plugdev" .
./40-libgphoto2-2.rules:ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="6860", \
  ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
  ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"
./40-libgphoto2-2.rules:ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", \
  ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
  ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"

(私はそれらの行を折り返しました)

行に注意してくださいGROUP="plugdev"。また、これは他のデバイス ID では機能しないことに注意してください。

$ grep -Ri "4e42.*plugdev" .

(何も返されません)

それを修正する

わかった。それで、修正は何ですか?

ルールを追加する

/etc/udev/rules.d/99-adb.rules次の行を含むファイルを作成します。

ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e42", ENV{ID_GPHOTO2}="1",
  ENV{GPHOTO2_DRIVER}="proprietary", ENV{ID_MEDIA_PLAYER}="1",
  MODE="0664", GROUP="plugdev"

これは 1 行である必要があります。読みやすくするためにここでラップしています

udev を再起動します

$ sudo udevadm control --reload-rules
$ sudo service udev restart

それでおしまい

デバイスを抜き差しします。

それを試してみてください

$ adb devices
List of devices attached 
4df15d6e02a55f15    device
015d2109ce67fa0c    device
于 2013-10-10T09:28:57.307 に答える
37

udev ルールが間違っているようです。私はこれを使用しましたが、うまくいきました:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

(ATTRの代わりにSYSFS)

于 2013-08-03T12:48:18.597 に答える
26

Ubuntu 12.04の下で、日食ジュノ。私は同じ問題に直面しています。これは私がYiYuブログで見つけたものです

解決策はレオンと同じです

sudo -s
adb kill-server
adb start-server
adb devices
于 2013-03-10T05:44:18.120 に答える
24

ステファンの答えは機能しますが(sudo adb kill-serverを使用)、一時的なものです。再起動するたびに再発行する必要があります。

恒久的な解決策として、udev 構成を変更する必要があります。

Witrant の答えは正しい考えです (Android の公式ドキュメントからコピー)。しかし、それは単なるテンプレートです。お使いのデバイスでうまくいかない場合は、デバイスの正しいデバイス ID を入力する必要があります。

lsusb

Bus 001 Device 002: ID 05c6:9025 Qualcomm, Inc.
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
...

リストで Android デバイスを見つけます。

次に、ID の前半 (4 桁) を idVendor に使用します (後半は idProduct ですが、adb を機能させる必要はありません)。

sudo vi /etc/udev/rules.d/51-android.rules一意の idVendor ごとに 1 つのルールを追加します。

SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"

それはとても簡単です。一部の回答で指定されている他のすべてのフィールドは必要ありません。ファイルを保存します。

その後、再起動します。変更は永続的です。(Roger は、再起動したくない場合に udev を再起動する方法を示しています)。

于 2013-11-19T20:54:07.863 に答える
22

...これまでのところ、「特別なシステム許可」がないというOP自身の答えは間違っています。– 「許可なし」の問題は、要約すると... 許可なしです。

残念ながら、デバッグは簡単ではありません。なぜなら、adb はアクセスしようとしているデバイスを秘密にしているからです! Linux では、電話機の「USB シリアル コンバータ」デバイスを開こうとします。たとえば、/dev/bus/usb/001/115 です (バス番号とデバイス アドレスは異なります)。これは /dev/android_adb からリンクされて使用されることがあります。

lsusbバス番号とデバイスアドレスを見つけるのに役立ちます。ポートが使用する速度について混乱した場合 (たとえば、1 つの物理ポートが 1 つの論理バスまたは別の論理バスで終了する場合)、バス番号と同様に、再接続するとデバイスアドレスが確実に変更されることに注意してください。

lsusb ラインは次のようになります: Bus 001 Device 115: ID 4321:fedc bla bla bla

lsusb -v「bla bla bla」が十分なヒントでない場合は、デバイスを見つけるのに役立つ場合があります (メーカーや電話のモデルが含まれていない場合があります)。

デバイスがわかったら、ls -a /dev/bus/usb/001/115そのユーザーが本当にアクセスできるデバイスを自分の目で確認してください。次に、それが動作することを確認しchmod、udev セットアップを修正します。

PS1: /dev/android_adb は 1 つのデバイスのみを指すことができるため、目的のデバイスであることを確認してください。

PS2: この質問とは関係ありませんが、あまり知られていません: adb には、通過するベンダー ID の固定リストがあります。このリストは ~/.android/adb_usb.ini から拡張できます。これには 0x4321 が含まれている必要があります (上記の例の lsusb 行に従う場合)。– ここでは必要ありません。ベンダー ID が不明な場合は「権限なし」も得られないためです。

于 2013-06-03T17:46:18.240 に答える
3

今日も同じ問題に遭遇しました。

公式の指示に従いましたが、コマンド「chmod a+r /etc/udev/rules.d/51-android.rules」を実行する必要があることに気づきませんでした

このファイルを誰でも読み取り可能に設定し、USB ケーブルを再接続したところ、ステータスが無許可になりました。次に、許可を与えるだけで、すべてがうまくいきます。

于 2015-11-28T15:36:15.363 に答える
2

Robert SiemerMichaël Witrantに同意します。動作しない場合は、デバッグしてみてくださいstrace

strace adb devices

私の場合、すべてのインスタンスを強制終了し、ソケット ファイルを削除するのに役立ちます/tmp/ADB_PORT(デフォルトは です/tmp/5037)。

于 2014-05-22T12:07:06.743 に答える
1

「android update adb」コマンドを試してみてください。サムスンギャラクシーギアで役立ちます。

于 2014-01-15T13:59:35.360 に答える
1

の出力は、それが userおよび groupls -al /usr/bin/adbによって所有されていることを示しているはずです。Linux ACL (アクセス制御リスト) を使用して、次のようにローカル ユーザーにアクセス許可を与えることができます。rootrootadb

setfacl -m "u:userName:rwx" /usr/bin/adb

これは、SUID ビットをオンに設定するよりも望ましい方法で/usr/bin/adbあり、使用できるユーザーをadbuserNameroot制限します。

于 2015-07-16T06:24:56.790 に答える
0
  1. runningadbを閉じます。実行中の android-studio を閉じている可能性があります。

  2. デバイスの一覧表示、

/usr/local/android-studio/sdk/platform-tools/adb devices

于 2014-07-27T17:46:46.663 に答える
-1

THL W100 では、(上記のように) root としてデバイスを実行すると、テザリングが有効になっている場合にのみ機能しました (そのために AirDroid を使用しました)。

于 2013-12-07T15:52:45.010 に答える
-1

3 つのデバイスが 1 つの同じホストに接続されているのと同じ状況がありましたが、1 つだけが「アクセス許可なし」で、他のデバイスはオンラインでした。

adb に SUID または SGID を追加することは、私にとって別の問題でした。adb が再起動するたびにデバイスがオフラインとして表示されます - 毎回デバイスで確認するまで。

デバイスファイルに「o + w」権限を追加することで、この「権限なし」の問題を解決しました。

chmod o+w /dev/bus/usb/00n/xxx

于 2015-04-24T05:05:51.160 に答える