linux下插入android的手机时经常会遇到诸如
这种问题。这是因为linux对USB权限管理上做限制的关系,以下以Fedora 20为例说明怎么修改。
首先需要先查明出现这个问题的设备ID是什么,不同的厂商都拥有一个独特的USB Vendor ID,常见的手机对应如下:
Company | USB Vendor ID |
---|---|
Acer | 0502 |
ASUS | 0b05 |
Dell | 413c |
Foxconn | 0489 |
Fujitsu | 04c5 |
Fujitsu Toshiba | 04c5 |
Garmin-Asus | 091e |
18d1 | |
Hisense | 109b |
HTC | 0bb4 |
Huawei | 12d1 |
K-Touch | 24e3 |
KT Tech | 2116 |
Kyocera | 0482 |
Lenovo | 17ef |
LG | 1004 |
Motorola | 22b8 |
NEC | 0409 |
Nook | 2080 |
Nvidia | 0955 |
OTGV | 2257 |
Pantech | 10a9 |
Pegatron | 1d4d |
Philips | 0471 |
PMC-Sierra | 04da |
Qualcomm | 05c6 |
SK Telesys | 1f53 |
Samsung | 04e8 |
Sharp | 04dd |
Sony | 054c |
Sony Ericsson | 0fce |
Teleepoch | 2340 |
Toshiba | 0930 |
ZTE | 19d2 |
Coolpad | 1ebf |
输入lsusb列出当前的usb设备有哪些,我当前的手机状态如下:
现在要连接的手机是一台coolpad的手机,找到对应的一条记录
1 | ``` |
其中,%d的范围从50开始,如果目录下已经有50-android.rules,则%d就取51,以此类推。
1 | ``` |
其中粗体部分为对应的USB VendorID,我这里为1ebf,MODE指定了连接这个设备的模式,0666跟一般linux的权限一个意思,就是给了读写权限。
另外,也可以针对品牌下的设备ID添加规则,如上面coolPad的ID为1ebf:7010,则7010为这台手机的ID。
1 | ``` |
再执行
1 | adb start-server |
重启adb就可以了。如果还是没办法显示,就用root去重启adb吧。
需要注意的是,测试中发现一个rule文件里如果存在同一个idVendor,但不同produceId的记录,那将会使配置不生效,如果遇到奇葩问题,建议每一个rule文件里只放一条规则.