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文件里只放一条规则.
