【问题标题】:Tablet mounted but adb devices not recognizing tablet in ubuntu 14.04平板电脑已安装但 adb 设备在 ubuntu 14.04 中无法识别平板电脑
【发布时间】:2014-09-23 14:13:50
【问题描述】:

我正在尝试在我的平板电脑上使用 adb。平板电脑及其文件树在文件目录导航器中被识别,我可以导航到/media/me/SP1020

我不明白为什么 adb 无法识别设备。我从终端运行了这些指令:

adb kill-server
adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
adb devices
    List of devices attached 

什么都没有显示。

lsusb 将设备 ID 列为:

Bus 001 Device 004: ID 1f3a:1000

所以我在 ~/.android 中使用 vim 在 adb_usb.ini 的顶部输入了这个 ID,“0x1f3a”;在这不起作用之后,我删除了这个文件 adb_usb.ini 并且我也尝试输入

echo "0x1f3a" > ~/.android/adb_usb.in

这次保留文件。我还在 /etc/udev/rules.d 中创建了一个文件 51-android.rules,其内容如下:

SUBSYSTEM=="usb",SYSFS{idVendor}=="1f3a",MODE="0666"

然后我重新启动了我的系统和我的平板电脑,并尝试了

adb kill-server
adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
adb devices
    List of devices attached 

仍然没有显示任何内容。

这也是usb/004的内容

ls -l /dev/bus/usb/004
total 0
crw-rw-r-- 1 root root 189, 384 Sep 23 09:53 001

【问题讨论】:

  • echo "0x1f3a" > ~/.android/adb_usb.ini;adb kill-server;adb devices
  • 我已经使用 vim 将 0x1f3a 输入到 adb_usb.ini 中(也许这个问题有点不清楚,所以我更新了它),但我只是尝试了你的方式,看看是否有什么不同.我仍然没有从“附加设备列表”下的 adb devices 获得任何输出。
  • 查看find -L /sys/bus/usb/devices -maxdepth 2 -path "*/modalias" -printf "%h\t" -exec cat {} \; | awk -F: '/icFFisc42ip0/ {print $1}' 是否产生任何输出。如果没有 - 您的设备没有枚举 ADB 接口

标签: linux ubuntu adb


【解决方案1】:

这是我用来检测和注册系统中所有adb 设备的bash 函数:

UpdateAdbUsbIni () {
    INIFILE=${1:-$HOME}/.android/adb_usb.ini
    mkdir -p $(dirname $INIFILE)
    DEVICES=$(find -L /sys/bus/usb/devices -maxdepth 2 -path "*/modalias" -printf "%h\t" -exec cat {} \; | awk -F: '/icFFisc42ip0/ {print $1}')
    echo -e "\nRegistering Vendor IDs for the following ADB devices:"
    for D in $DEVICES
    do
        echo -e "\tDEVPATH=$D Serial=$(cat $D/serial) VendorID=0x$(cat $D/idVendor) ($(cat $D/manufacturer))"
        echo "0x$(cat $D/idVendor)" >> $INIFILE
    done
    VIDS=$(grep ^0x....$ $INIFILE | sort -u)
    echo "$VIDS" > $INIFILE
    return 0
}

此功能不依赖于现有的adb 配置。因此,如果它没有列出任何设备 - 这意味着没有任何连接的设备枚举了adb 接口。

这是另一个有用的功能:

InstallUniversalAndroidUdevRule () {
    RULE='ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666", GROUP="plugdev", SYMLINK+="android/$env{ID_SERIAL_SHORT}"'
    RULEFILE="/etc/udev/rules.d/${1:-90}-universal-android.rules"
    if [ "0$(id -u)" != "00" ]; then echo "No permission to add the universal Android udev rule!"; return 1; fi
    echo "$RULE" > $RULEFILE
    udevadm control --reload-rules
    udevadm trigger --action=add --subsystem-match=usb
    return 0
}

此函数添加了通用 android udev 规则,该规则将匹配所有 android 设备,无论制造商如何。它确实需要root 权限才能运行。

这个问题促使我终于完成了我的The most comprehensive write up on how to properly install adb in a debian-based linux environment

【讨论】:

    【解决方案2】:

    哇,我真是个白痴。

    我尝试了 UpdateAdbUsbIni 脚本,没有得到响应,然后去检查设备是否有任何问题。原来,在“设置”->“{} 开发者选项”下,“USB 调试”未选中。当我选中此选项并重新连接设备时,我得到了:

    adb devices
       List of devices attached 
       4d773808680064314c9  device
    

    感谢 Alex P!

    【讨论】:

    • 在 SO 上感谢一个人的方式是接受和支持有用的答案。
    【解决方案3】:

    在我的系统 (Ubuntu 12.04) 上,您必须以 root 身份运行 adb kill-server/adb start-server。尝试使用:
    sudo adb kill-server
    sudo adb start-server

    【讨论】:

    • 嗯——为什么这被否决了?我确实遇到了所描述的问题,这解决了它。
    • 绝对没有理由将adb 作为root 运行。这比试图用断头台治疗头皮屑更糟糕。
    • 也许——至少在我的情况下,在运行停止/启动服务器和执行 adb 设备之后——我有设备。
    • 还有一个快速的谷歌给了我stackoverflow.com/questions/3127539/ubuntu-android-device-debug/…,这个解决方案收到了 31 个赞成票,1 个人说这是一个糟糕的解决方案,有 17 个赞成票,并且讨论说非 root 的“修复 udev”解决方案没有为他们工作——因为它也不适合我。
    • 他的回复就在stackoverflow.com/a/26002233/1778421 那里,而“adb 权限”是在adb devices 显示???????????? no permissions 时。使用正确的udev 规则是最容易修复的。当您说udev 规则并没有解决您的问题时 - 这仅表示您有完全不同的问题或做错了。
    猜你喜欢
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 2018-04-27
    相关资源
    最近更新 更多