Ubuntu下android開發之配置USB設備

這篇文章講如何讓普通用戶訪問USB設備 第一步,獲得USB設備的ID,使用lsusb命令,獲得結果以下: Bus 002 Device 002: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0 Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub  Bus 001 Device 025: ID 18d1:4e12  Bus 001 Device 007: ID 1a40:0101 TERMINUS TECHNOLOGY INC.  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 若是不能從名字裏看出來,能夠經過插入USB設備以前和以後的lsusb結果來比較出所要訪問的設備的ID。 idVendor:idProduct  *************************************************************** 個人edv信息: lsusb命令後: Bus 001 Device 006: ID 04e8:689e Samsung Electronics Co., Ltd *************************************************************** 第二步,把USB設備的ID加入到UDEV規則中  sudo gedit /etc/udev/rules.d/99-android.rules  若是沒有這個文件,請生成一個 並編輯內容以下, 裏面的idVendor和idProduct從第一步中獲得: SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e12", MODE="0666", OWNER="your_name" 下面是一個NexusOne手機的例子 SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e12", MODE="0666", OWNER="your_name" SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0fff", MODE="0666", OWNER="your_name" #Fastboot 注:yourname 就是本機的用戶 第三步,重啓UDEV和 adb sudo restart udev  adb kill-server  拔掉USB設備,並從新插上 *************************************************** 另外一種實現方式: 在終端運行 lsusb   會發現結果有會有以下相似記錄:   Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub    Bus 004 Device 005: ID 1219:0102               #這行就是 手機   Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub    這時鍵入   sudo gedit  /etc/udev/rules.d/51-android.rules   在打開的文件中增長如下文本:   SUBSYSTEM=="usb", SYSFS{idVendor}=="1219", MODE="0666"    SUBSYSTEM=="usb", ATTR{idVendor}=="1219", ATTR{idProduct}=="0102", SYMLINK+="android_adb"   2) 運行如下命令:   sudo chmod a+rx /etc/udev/rules.d/51-android.rules   sudo /etc/init.d/udev restart   3) 在 android sdk 的 platform-tools 目錄下運行 (這一步很重要,必需要sudo,不然沒效果)   sudo ./adb kill-server   sudo ./adb devices   而後,就能夠直接用 adb  shell來進行操做了 針對小米手機,若是還不行,在撥號處輸入 *#*#717717#*#* ************************************************** 官方文檔: Configuring USB Access Under GNU/linux systems (and specifically under Ubuntu systems), regular users can't directly access USB devices by default. The system needs to be configured to allow such access. The recommended approach is to create a file /etc/udev/rules.d/51-android.rules (as the root user) and to copy the following lines in it. <username> must be replaced by the actual username of the user who is authorized to access the phones over USB. # adb protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>" # fastboot protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>" # adb protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>" # fastboot protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>" # adb protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>" # fastboot protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>" # adb protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>" # fastboot protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>" # adb protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>" # fastboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard ES) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>" # adb protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>" # fastboot protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>" # adb protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>" # fastboot protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="689e", MODE="0600", OWNER="<username>" Those new rules take effect the next time a device is plugged in. It might therefore be necessary to unplug the device and plug it back into the computer. This is known to work on both Ubuntu Hardy Heron (8.04.x LTS) and Lucid Lynx (10.04.x LTS). Other versions of Ubuntu or other variants of GNU/linux might require different configurations.
相關文章
相關標籤/搜索