当前位置: 首页 > news >正文

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.0UP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 免费wordpress中文主题
  • python连接FTP服务器:[WinError 10054] 远程主机强迫关闭了一个现有连接
  • 金融信创生态实验室第三期金融信创优秀解决方案--中间件统一管理平台解决方案
  • 基于FMEA保证汽车电控系统的可靠性
  • 新旅程:类与对象的魔法课堂
  • Git 命令大全
  • 代谢组数据分析六:基于报告分数的功能分析
  • 如何基于springboot构建cas最新版源码?
  • 【FPGA】Verilog:2-bit 二进制比较器的实现(2-bit binary comparator)
  • ctfshow web入门 web306--web310源码审计
  • 多电脑共享鼠标键盘
  • 如果jupyter notebook不能实现网页自动跳转,参考下面的链接
  • 【量算分析工具-方位角】GeoServer改造Springboot番外系列六
  • 基于vue3速学angular
  • You don‘t have enough free space或者no space left on device异常
  • [case10]使用RSQL实现端到端的动态查询
  • DataBase in Android
  • DOM的那些事
  • Druid 在有赞的实践
  • java 多线程基础, 我觉得还是有必要看看的
  • Java比较器对数组,集合排序
  • Java基本数据类型之Number
  • MD5加密原理解析及OC版原理实现
  • Python连接Oracle
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 分布式任务队列Celery
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用 @font-face
  • 转载:[译] 内容加速黑科技趣谈
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​Spring Boot 分片上传文件
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #define与typedef区别
  • #if 1...#endif
  • #Z0458. 树的中心2
  • #控制台大学课堂点名问题_课堂随机点名
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (备忘)Java Map 遍历
  • (回溯) LeetCode 77. 组合
  • (排序详解之 堆排序)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net Stream篇(六)
  • .NET 服务 ServiceController
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)