中国安防论坛

 找回密码
 注册
查看: 42117|回复: 0

[心得] Realtek蓝牙Android10.0移植结束后的基本测试和常见问题分析

[复制链接]

安防知名大师

Rank: 7Rank: 7Rank: 7

积分
1288
QQ
发表于 2023-11-27 15:06:35 | 显示全部楼层 |阅读模式
基本测试主要包括配置检查和BT测试两大部分
6 i& G& W- c4 _9 x2 p8 v0 c配置检查:
; p  P! Q! g' c# m8 |% [2 L. W% g  为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。
' r( H) {; h9 d  adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录." L- X# ^2 K% W- ]6 L0 B, d
BT 测试:5 m# h( q2 o& g& }7 U+ a
  本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。5 B* n+ ~# ^: j4 v( v6 X
基本功能测试如下:
% H  T  ^+ U. J3 p7 \( @& w  1) 打开/关闭 BT 无失败现象。
, x! G- `" H- A+ c. I  2) 能够搜索到近处 BT 设备。! U+ ^6 N( k/ j, L* D2 Z
  3) 和搜索到的蓝牙耳机或其他设备配对。
' T' _: M" r" ]  4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。. v' K( p" y) H- A. C6 d  M
  5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。, E  y% t0 J+ Y+ K0 R# h
  6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
) p9 F4 D3 B4 W  7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。
9 h  ~# X# H! c+ _& T
' B2 [, l$ A/ p$ y7 O. [, Y* W7 D$ Q2 W+ h! U7 I: P, n) m
  当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.5 x, C% Z$ ^1 ~) [
蓝牙 Log 相关的配置文件:9 G! r4 K' i! S- d
  蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
" l9 C4 g4 A) v4 ~: r+ M    # Enable trace level reconfiguration function
# t+ q# I& g, T8 [# {2 E$ Z    # Must be present before any TRC_ trace level settings
: y9 k7 j7 G% Q6 I: g9 E    TraceConf=true+ b4 S0 A( t  i4 i, v
3 Y- _4 J& ]7 u% q& ]( J2 }1 q
    # Trace level configuration4 [2 x* {& s# F: D- N7 H# N4 L& H
    # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )# ~- r+ Y; s$ ^: ^' `! a9 g. A
    # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
" |* T: ^5 R  N- L' v    # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )$ Y; U7 Y5 b. e( k8 j& t
    # BT_TRACE_LEVEL_API 3 ( API traces )
+ C7 L. C5 P' I# _    # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
7 V4 d" {  T2 y# m9 o    # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )
/ [# O5 d) c1 ^, ?7 x# C3 r    # BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
' }9 C& T8 q; w3 x$ u) F  r2 XTRC_BTAPP only.- e- F. S* ?3 S4 k# v1 q
    TRC_BTM=2" r+ w, f0 \3 b8 N' ^" M4 r
    TRC_HCI=2: ~% w& [2 g0 l: W" N* R
    TRC_L2CAP=2
) D/ A: {( F' ]  q  w' _3 R  B    TRC_RFCOMM=2
5 `! _& n5 B9 B5 h# l4 x' Z    TRC_OBEX=2) X( e: B# t/ Y0 J  m" ^
    TRC_AVCT=2
! j9 n9 ?5 \3 b0 R& a7 X9 I% u    TRC_AVDT=2$ a4 K* P9 T; J/ A- M9 O
    TRC_AVRC=2& g0 C5 H6 \3 a* F: n9 k+ ?; ?: Z
    TRC_AVDT_SCB=2' a+ @0 {" n) a' B1 i0 p% w
    TRC_AVDT_CCB=2$ g  e: ?7 _4 I/ r; H# r: B
    TRC_A2D=2
4 H" e' S5 N+ _5 Z5 c    TRC_SDP=2
8 b" E/ j- t9 L$ H/ N* s' K& D    TRC_GATT=2
& h& ~0 O* {5 i) d9 S/ o* e* H    TRC_SMP=2
+ H; l$ p2 f. b  ~    TRC_BTAPP=2
; ]; n2 X3 ^1 t) R    TRC_BTIF=25 i1 \# x) r  }4 U4 o2 H' x0 W
    TRC_GAP=28 b0 t' h  N, F; B
    TRC_BNEP=2- w8 d8 k! K1 L9 w7 C
    TRC_PAN=2
/ H& F- [) ]& U7 K4 ]    TRC_HID_HOST=2# G& @; o9 ~$ V7 Z# j
    TRC_HID_DEV=2; u2 n( j4 O  F( U% b# }+ c
  N+ Z; h8 ?. `9 D: g3 I/ J, g3 |8 M$ X

& N, `' `/ I2 _- ?Logcat –v time  o! [; S. f, }9 i9 E
  在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.
4 x4 h. C$ Y9 J- L5 a  测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.5 Y7 f1 x" B9 n. o9 l6 h
8 c) p" g9 E% m3 x& E
BtSnoop
  Z  C. C7 P) \$ t6 G3 w6 ^2 i5 A  打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.
) R8 X0 N2 I" `, P; c  在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.
3 t% K+ M% |% B+ c/ f6 V- e+ Y& h" N2 N  ^6 f2 Y
获取 Bluetooth 进程相关信息
; x' b0 ~* [$ v* B1 h5 x) D  输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息
3 K4 d/ J& m) D4 G# w. J+ Q1 `1 C# e
注意事项
. `. ~1 @) C1 n/ v) u  报告蓝牙问题 至少 需要 提供 下列信息:) I: D. U) A2 x  D2 ^) `" _
   logcat –v time' E7 [# G( _0 W( ?1 O* K
   btsnoop
, G/ N, ?6 c$ h, ~( [1 Q   Bluetooth 进程信息
7 k4 \# J4 h( U+ H* l  出现问题的时间点( 以设备时间为准)
3 M7 k- I+ I7 B' L  重现步骤.
8 F+ B8 a! c4 ?$ x1 _8 g$ Q
0 {& ~9 ^4 q/ ?, u. Y  e, Q( k% u) U- _/ B, l: `/ q
常见问题分析' @6 M2 N( y5 M3 \7 t0 `
BT 打开失败(UART)
$ W9 u. a- F4 m. W$ |3 v    打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。2 @7 u3 r9 ]6 O, ~
    如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
9 R9 d* s# E9 m" O/ x* y    如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。7 j+ H* A8 y. N' c
    如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
) E. r: E/ _  o    如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。, F3 B" F- F/ I8 K8 t% o2 s

' Y) F& i) B4 i/ J) @, N( J7 U  MBT 打开失败(USB)
2 a5 r5 `* l5 z    用 logcat 抓取打开蓝牙打开的 log,搜索“dev/bus/usb”字样看是否有这样的 log:Added device UsbDevice[mName=/dev/bus/usb/002/002,mVendorId=3034,mProductId=46880,mClass=239,mSubclass=2. 如果有,检查下 mVendorId和mProductId是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.( _. U. b( u' {1 I1 v8 y0 A
    查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。
/ w6 e) h" w' [
/ w3 c; D$ R) O( @以上观点纳拓科技提供,请勿随意复制、编辑转用
! S3 x3 D& T+ U2 I5 z- q4 D. {6 Q, j" E( X' A

0 [3 r+ d' B% z  X* C9 ]- Z# o& h5 P1 m! p# r
WiFi模块/无线路由/无线中继/交换机方案PCBA模块QQ:42142951
您需要登录后才可以回帖 登录 | 注册

本版积分规则

安豆网|Archiver|手机版|中国安防论坛 ( 粤ICP备09063021号 )

GMT+8, 2026-2-24 15:35 , Processed in 0.059776 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表