中国安防论坛

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

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

[复制链接]

安防知名大师

Rank: 7Rank: 7Rank: 7

积分
1194
QQ
发表于 2023-11-27 15:06:35 | 显示全部楼层 |阅读模式
基本测试主要包括配置检查和BT测试两大部分
; N7 r$ J, V) {/ H" G配置检查:
( j% G+ Q9 ?8 N0 x' l9 `  为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。
  o* N* Z7 f/ T6 _. v- _  adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.( P& C2 ~; F, F, u
BT 测试:* J/ C% b8 {1 P
  本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。
1 m. F4 ]& q8 U. F1 i" `* y基本功能测试如下:# }3 M. b" m2 e/ T- c
  1) 打开/关闭 BT 无失败现象。
# {) h4 ~2 V& p5 _7 i* o& _+ `8 Z  2) 能够搜索到近处 BT 设备。. N3 g% C* ]6 _7 A
  3) 和搜索到的蓝牙耳机或其他设备配对。
1 i  T$ @+ x# P. Z1 X) `  4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。
! D/ j& J" V( |3 U5 M- v1 w7 e  5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。! F3 z4 h9 d# f: R9 r+ ^
  6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
' p; K& F9 ], X. X0 ~8 G6 p' r' F  7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。- }$ {9 o) F, a) x: y: C( K+ V. ~
$ j; ]2 h( C& q  x6 Y  U# t7 F
1 x1 U  s8 i9 b$ E
  当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.9 C( X) k. M% g5 d0 Z8 o6 C
蓝牙 Log 相关的配置文件:* n" d3 d/ B/ {- L
  蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
# I9 L4 ]+ V. q2 S; Q    # Enable trace level reconfiguration function: Y- d4 W8 S  R8 y! r0 W
    # Must be present before any TRC_ trace level settings
2 T6 r/ p# q. y7 p9 r3 x, i    TraceConf=true' h5 {! W" J1 _& b% D% K
1 O# b: i, c1 y+ c9 ~" g% ?
    # Trace level configuration" A) ^+ N2 e1 R
    # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )$ O0 Q& \. l$ X
    # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
/ W8 [$ Z, b/ Z+ `5 _    # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )
; K( c5 k! x3 u6 e9 ?    # BT_TRACE_LEVEL_API 3 ( API traces )
, g8 O) B; C# D    # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
, o8 q2 k0 k: X! G; E* z    # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )5 I$ n; _: j# }4 S; ^
    # BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
) F3 R9 L) t/ Y: o1 GTRC_BTAPP only.4 Z9 a9 }: r  M: b, J0 K4 ]
    TRC_BTM=2. Q# I; Y, j  O4 c, r
    TRC_HCI=2
9 A  p5 k' y7 o: D7 C! h    TRC_L2CAP=2
3 G) V, M( v3 w; w    TRC_RFCOMM=26 s! d1 d5 v) z0 s% J% n: Q- @
    TRC_OBEX=2: S: y2 m& m/ m4 z* R9 |: {) W
    TRC_AVCT=2
3 J4 ~1 h" B- ~. \    TRC_AVDT=2; K  a& D" _8 {) [* ]6 X1 I
    TRC_AVRC=26 k9 A/ F( O8 ^( I; X1 b
    TRC_AVDT_SCB=2
. z7 C7 O& s% J    TRC_AVDT_CCB=2
3 O; X7 n, a- @. `% l8 C. }    TRC_A2D=2
: ~; V5 m; D( D. |: n. R* R$ w% M/ F    TRC_SDP=2
& u% ~9 l! q& T& t* j7 [: Q    TRC_GATT=2
- M! c+ r# X! F    TRC_SMP=2' h! [3 h+ M' ~, O; v1 x+ O5 t2 L
    TRC_BTAPP=2( x- q# |5 c1 Q  Q
    TRC_BTIF=24 Z& n( f2 ~. o# r. y8 d: |& M
    TRC_GAP=2# [* B4 b) V9 A" u
    TRC_BNEP=2
" j9 ^/ z* @$ s4 ~1 t6 K# W' W/ {    TRC_PAN=2
, ?" ]7 t9 L  j/ ]0 ~# a    TRC_HID_HOST=2' H. S+ f; p5 S% L
    TRC_HID_DEV=2' ~+ x# j9 `* H1 ]' t* F

- Z3 h8 R% ]* {, j2 E# D' g- y! \1 e1 }0 Q+ v
Logcat –v time
: {* Z* E1 N. ~* ]5 \2 Q! P# L  在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.  L3 w/ B6 [" g# x" [% w
  测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.
2 ^  F1 R; m' _2 V4 u& W" a2 S& i1 a, h$ }
BtSnoop8 O9 m; R2 N$ f; \! K
  打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效." R3 z4 J$ w( G/ ], r4 G7 \
  在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.1 _6 J- H9 e; t( j
! O& j, M+ r3 z$ W
获取 Bluetooth 进程相关信息, H, Y, f  W# p4 b! G
  输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息6 ^4 x9 t. ?( V; @4 k) y$ ~$ ?+ G
* ]; q4 O4 x' Z' A* ~" D$ j
注意事项
# R0 u5 v0 |) b1 n- L  a# H  报告蓝牙问题 至少 需要 提供 下列信息:, p% E, Q. l% r' o
   logcat –v time
! {- }. E' n5 z% f. }: k   btsnoop" b9 A% N0 D, v  z$ q" M/ H
   Bluetooth 进程信息
# ~" M# G4 j" N: e) d9 n, f0 _$ ]. p  出现问题的时间点( 以设备时间为准)
. }5 C2 b/ [, ^8 B$ j  重现步骤.9 \0 U% M, u# K" w) I

9 v/ S1 D7 P; y) B2 D
& ~2 K: k$ c) j8 G常见问题分析7 s: O! H2 k- R; x' f
BT 打开失败(UART)
$ |% U1 x! ~* `0 S    打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。
1 {  J  z- e2 w! T& G    如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
) b6 @- b, G: G1 v    如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。
8 ]$ i) e0 J1 ], ~/ ^  }9 [' g    如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
7 c* Z# ^( C: @) I7 X    如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。
* X. u5 {$ @- D2 l/ u4 e3 a. g: H; Q- ], \. F- W4 Q0 ^
BT 打开失败(USB)# P  B( _, f# f% `
    用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.+ m) ~) ~0 P* d, Q6 E
    查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。
4 F! ]3 P' K  M: P( A
0 z8 \/ t) W6 M: H( b: I以上观点纳拓科技提供,请勿随意复制、编辑转用. R$ T3 |: }, v

1 v- A0 w+ G4 b; H, a* s4 T6 d% j  x" X( R4 U

6 n8 S- o  P, h. K) O) p2 d: R% B7 }- B
WiFi模块/无线路由/无线中继/交换机方案PCBA模块QQ:42142951
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 14:51 , Processed in 0.076792 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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