设置 adb 以供用户访问

设置 adb 以供用户访问

我最近购买了一部 Android 手机(我的第一部)。这可能与问题无关,但它是 Micromax Canvas Hue AQ5000,运行 Android 4.4.2。

我想从当前运行 Debian wheezy 的计算机访问手机。有人向我推荐了亚行。我安装了android-tools-adb,启用后开发者选项和USB调试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 调试桥 (adb) 设备 - 无权限”的答案这表明

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

那么,我应该添加GROUP="plugdev"到上面的文件中,还是有更好的方法?另外,该部分的含义是什么ATTRS{idVendor}=="18d1"?它适用于任何设备吗?还有,是什么 ATTRS{idProduct}=="d001|d002"意思?

我会考虑将好的建议转发给 Debian Bug Tracker。

答案1

在我的 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。

相关内容