我最近购买了一部 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。