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。

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值