• RK平台ADB不识别问题排查


    简介

    ADB是Android系统的调试工具,一般用USB线连接开发板和PC,可以抓取开发板的调试日志,执行shell指令,传输文件等功能。为了调试方便,RK平台的Linux系统也默认支持ADB,其源码是从Android移植过来的。
    本文档主要用于新开的项目中遇到ADB不识别,可以按下面步骤来排查问题。

    基本问题排查步骤

    RK发布的大部分SDK默认是支持通过ADB连接PC的,如果板子通过USB线连接PC后,PC识别不到ADB设备,需要先确认几个问题:

    1. 硬件连接是否正常?
      板子通过USB线连接PC,进入loader模式或者maskrom模式,是否能正常识别?如果能正常识别说明USB接口的数据线部分硬件连接是正常的。
    2. 板子是否有正常开机?
      可以通过开发板的调试串口看开机log,开机后调试串口能执行shell指令说明系统已经正常开机,如果板子不能正常开机,请先排查系统问题,再来调试USB
    3. 硬件连接是否正确?
      ADB需要连接到开发板的OTG口,即烧录固件的USB口。
    4. PC是否有安装USB驱动和ADB工具?
      PC如果是第一次连接RK开发板,请正确安装RK的USB驱动,Windows PC的USB驱动在SDK中可以找到,Android SDK在RKTools目录下面,Linux SDK在tools目录下面,驱动安装包名字为DriverAssitant_vx.x.zip,Linux PC不需要单独安装USB驱动。Windows PC的ADB工具请上网找安装教程,Linux PC如果是ubuntu系统可以用: sudo apt-get install android-tools-adb安装,请确保能正常执行ADB指令。
    5. 确认ADB连接状态?
      RK的烧录工具可以显示ADB设备的连接状态,但是如果是复合设备(如把板子做成ADB+UVC),由于改了VID/PID,RK的烧录工具无法正确显示ADB设备的连接状态,因此最好是通过PC的设备管理器或者通过执行ADB指令(如:adb devices)来确认ADB连接状态。

    如果以上确认没问题,可能是板子配置或者应用软件问题,需要进一步排查。

    底层驱动排查

    软件配置需要根据板子的硬件设计来适配,因此需要根据硬件原理图来检查USB配置。

    1. 确认USB接口类型。
      常用的USB接口类型有Type-A,Type-C,Micro-USB等,不同的接口类型的配置有差异,这个在SDK提供的文档中都可以找到对应的章节。
    2. 根据USB接口类型找对应的DTS配置。
      以RK3588 Android12为例,RK3588的USB文档是RKDocs/common/usb/Rockchip_RK3588_Developer_Guide_USB_CN.pdf,该文档的《RK3588 USB DTS 配置》章节列举了三种USB接口类型的配置,其中还包括了USB2.0和USB3.0两种类型。
      三种USB接口类型的配置
    3. Type-C芯片的选择。
      如果需要支持全功能的Type-C口,需要配合Type-C芯片,Type-C芯片需要适配驱动,如果驱动没有正常工作也会导致USB连接异常,因此建议选用SDK默认支持的Type-C芯片,在文档的《Type-C 控制器芯片支持列表》章节有列出来,如果选用SDK默认没支持的Type-C芯片,需要自己调试。

    Android系统相关问题

    1. 开发者选项的USB调试功能
      在userdebug模式下,需要默认关闭ADB,可以加下面补丁修复:
    diff --git a/device.mk b/device.mk
    index b666b84..d6047d3 100644
    --- a/device.mk
    +++ b/device.mk
    @@ -904,7 +904,7 @@ endif
    ### in AOSP-system image (user firmware) ###
    ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
    PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
    -    ro.adb.secure=0
    +    ro.adb.secure=1
    PRODUCT_COPY_FILES += \
         device/rockchip/common/zmodem/rz:$(TARGET_COPY_OUT_VENDOR)/bin/rz \
         device/rockchip/common/zmodem/sz:$(TARGET_COPY_OUT_VENDOR)/bin/sz
    --
    2.7.4
    

    Linux系统相关问题

    部分buildroot系统默认不支持ADB,在添加ADB过程如果遇到启动ADB报错,可以检查以下几个问题:

    1. 打开环回网络
    # ifconfig lo up
    # ifconfig 
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    1. 挂载pts
    mkdir -p /dev/pts
    mount -vt devpts -o gid=4,mode=620 none /dev/pts
    

    网络ADB相关问题

    如果要开启网络ADB,请确认是否有设置端口号,设置端口号的指令(Android):

    # setprop service.adb.tcp.port 5555
    # stop adbd
    # start adbd
    

    ADB Host端

    buildroot不支持Host端用ADB,Debian或者ubuntu可以自己用: sudo apt-get install android-tools-adb安装ADB工具来支持Host端用ADB,Android可以通过添加可执行文件来支持Host端的ADB。

  • 相关阅读:
    3DGS语义分割之LangSplat
    岩土工程监测中的振弦采集仪选择与布设策略
    ETF动量轮动+RSRS择时,RSRS修正标准分,回撤降至16%
    全面废除“竞业协议”计划告吹!美国联邦法院裁定 FTC 越权,禁令无效
    websocket协议详解
    golang结构与接口方法实现与交互使用示例
    Bootstrap Collapse的使用
    【Python零基础入门篇 · 13】:字符串判断扩展、变量作用域、global和nonlocal的使用
    ES6 入门教程 6 正则的扩展 6.10 Unicode 属性类 & 6.11 v 修饰符:Unicode 属性类的运算 & 6.12 具名组匹配
    时序数据库-4-[IoTDB]的docker安装和python3操作
  • 原文地址:https://blog.csdn.net/jacolin/article/details/139254373