Adb

為使用者訪問設置 adb

  • May 5, 2015

我最近購買了一部 Android 手機(我的第一部)。這可能與問題無關,但它是執行 Android 4.4.2 的 Micromax Canvas Hue AQ5000。

我想從目前執行 Debian wheezy 的電腦上訪問電話。向我推薦了亞行。我安裝了android-tools-adb,在啟用Developer Options 和 USB Debugging之後,我可以通過adb shell例如訪問手機。

但是,ADB 不能作為使用者工作。這是對應的udev文件,/lib/udev/rules.d/70-android-tools-adb.rules.

# Set ACLs for console users on adb USB devices
# d001 recovery
# d002 system

ACTION=="add|change", SUBSYSTEM=="usb", \
 ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d001|d002", \
 TAG+="uaccess"

我應該如何修改此文件以授予使用者訪問權限?自然的方式似乎是授予對組的訪問權限。沿著這些構想,這裡有一個建議,即對“Android Debug Bridge (adb) device - no permissions”的回答,這表明

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

那麼,我應該添加GROUP="plugdev"到上面的那個文件中,還是有更好的方法?另外這部分是什麼ATTRS{idVendor}=="18d1"意思,這適用於任何設備嗎?還有,什麼 ATTRS{idProduct}=="d001|d002"意思?

我會考慮將好的建議轉發給 Debian Bug Tracker。

在我的 gentoo 系統上,設置了以下 udev 規則(/lib64/udev/rules.d對我來說):

SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0664", GROUP="android"
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0664", GROUP="android"
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0664", GROUP="android"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0664", GROUP="android"

這些規則允許組中的任何人訪問 USB android 設備(22b8 = Motorola、0bb4 = HTC、04e8 = Samsung 和 18d1 = Google)android

只要您的使用者是該組的成員,您決定使用的組的名稱並不重要。


為了解決您關於 USB 標識符的其他問題,供應商和產品 ID 標識了特定設備。dmesg您可以使用或來查看您的標識符lsusb。例如,當我插入手機時,dmesg報告:

[ 4573.116303] usb 4-5: New USB device found, idVendor=22b8, idProduct=2e63

lsusb報告:

Bus 004 Device 005: ID 22b8:2e63 Motorola PCS

這告訴我,我的手機的供應商 ID 為 22b8,產品 ID 為 2e63。udev 規則:

SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0664", GROUP="android"

將匹配此設備(以及所有摩托羅拉手機,因為它不受產品 ID 的限制)並將此手機的 USB 設備上的權限設置為:

crw-rw-r--+ 1 root android 189, 388 May  5 19:38 /dev/bus/usb/004/005

您可以使用 USB 匯流排和設備編號找到您的 USB 設備以檢查其權限。 lsusb報告Bus 004 Device 005並且設備路徑包含.../004/005. 只要您可以讀/寫此設備,您就可以使用adb其他需要訪問手機的程序。

警告:您的系統上的設備命名可能略有不同。我正在執行 udev 215 和 linux 核心 4.0.1。

引用自:https://unix.stackexchange.com/questions/200640