中国安防论坛

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

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

[复制链接]

安防知名大师

Rank: 7Rank: 7Rank: 7

积分
1288
QQ
发表于 2023-11-27 15:06:35 | 显示全部楼层 |阅读模式
基本测试主要包括配置检查和BT测试两大部分$ r  p8 j1 I5 F* {4 @( d
配置检查:! [# r5 N$ r0 S4 {; p& Q
  为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。' }: Z5 u+ j: {( o) Y
  adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.
0 G. L' J/ y+ n* I$ R& W6 XBT 测试:
; S. `5 f, _  t, O/ k  本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。, s' {6 F3 p5 G, w9 ^4 @
基本功能测试如下:
, f: O5 @9 ~- g5 P! ]  1) 打开/关闭 BT 无失败现象。
- C& X) c1 a  r# I( C2 B  2) 能够搜索到近处 BT 设备。
& G9 x/ t5 B! T9 O) F  3) 和搜索到的蓝牙耳机或其他设备配对。
8 ?3 h) {* {! u' q+ K  4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。
. A, ?9 r: m, ~+ x1 A  5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。
0 d" _! O# q6 Y" e9 q7 a2 I  6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
  _& e( z& L1 X/ L$ V  7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。6 q: d9 g6 m) S
& H' s/ G' T6 I# W
# W. u2 K1 G3 i
  当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.7 O& g8 r4 G+ O7 K2 Q, o
蓝牙 Log 相关的配置文件:3 K, g/ Q% j. R! Z
  蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:: B4 s) K% X; F. B$ @" s
    # Enable trace level reconfiguration function1 P: U8 S/ J$ Y& `, ~
    # Must be present before any TRC_ trace level settings
& _3 }  f9 h( a- b+ W    TraceConf=true, q3 i) `, O) T- W% N
! b/ _$ z6 G9 w, E
    # Trace level configuration
' u# {# `0 V6 F    # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )' U& M' J9 _# m& J2 y2 T
    # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
& X( m( l5 |. c! o' q9 i: F* |0 _    # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )9 a, p  K4 x3 t1 X+ |
    # BT_TRACE_LEVEL_API 3 ( API traces )
6 f7 o' T+ t4 E. _5 o    # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
/ |/ `- S& L! ?4 w    # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )/ t+ I" J. B0 w  l7 A
    # BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
; m5 b# S2 x2 `' ?TRC_BTAPP only.4 S* {% o5 `0 S
    TRC_BTM=2& y% X) N9 v% g
    TRC_HCI=2
$ V* V( }' E6 i* y    TRC_L2CAP=2
& i% F0 a7 y, [% X    TRC_RFCOMM=2
2 n* s: G& B8 Q    TRC_OBEX=2
" O. _* n8 c! w    TRC_AVCT=2
7 {/ b1 j& X7 w$ l    TRC_AVDT=2
5 h  C; l9 |# Q5 D. N' S    TRC_AVRC=2, L; _# p# v' t7 J
    TRC_AVDT_SCB=2
) b" f: a6 g" W6 c* w2 s    TRC_AVDT_CCB=28 [4 T5 R* u$ p  n" w
    TRC_A2D=2' C. W- d* x; w* T0 ~% \" V+ d' b
    TRC_SDP=20 Y, P. b6 E+ V% B8 k
    TRC_GATT=2! v: q% Q5 d4 v& @( j5 E* B
    TRC_SMP=2* i% f( K9 B3 [- q& C
    TRC_BTAPP=2
; r, r& D' c9 \, b: V    TRC_BTIF=21 z7 w: z1 a4 ^/ P) V3 u( B. P; k
    TRC_GAP=2
# z  ~9 e$ \, P# l    TRC_BNEP=2
- k, c1 ~/ l7 O# P; m* S/ K    TRC_PAN=28 R/ {8 Q3 P3 w9 h7 _
    TRC_HID_HOST=2
8 ?9 n, z1 l  S' v& ]) H  M2 d9 g    TRC_HID_DEV=2: f3 y, j' [1 B& b/ a* R3 A

" h) T1 c6 z* ]5 ~) E: {# J6 d+ r
. y; h, V- Z, D2 _. q' f8 Z' v' |% ILogcat –v time' M! u& D  ^6 m/ q8 P
  在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.
4 {+ a3 o7 p! h1 o* _+ |+ T  测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.9 m$ L" y3 i9 t* m! S
0 j+ w0 X( q! Y$ |, o
BtSnoop6 @6 M* L" S" f& M( ~4 F
  打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.
5 g, t4 M) n; F$ a: E- z% H  在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.
4 e! L0 d6 P7 L, `- J+ I& @; N9 u- o, @& C
获取 Bluetooth 进程相关信息
) A+ Q1 Z# Q! W+ m7 c, I  输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息
% u! ], Q* H- K, a" d# I
! f3 F  s# p% k1 v) J: ^注意事项( R- [8 ?) b2 X9 a2 b: H* B7 H
  报告蓝牙问题 至少 需要 提供 下列信息:
" C" D9 X, i0 w/ P8 M; k% I) l   logcat –v time
% {$ e- [% u  v* w# L, Y! X% n   btsnoop- S: d6 U) |+ `3 x7 `, z: [3 D7 F
   Bluetooth 进程信息, O7 L" d5 ]" {* v( D6 x+ M
  出现问题的时间点( 以设备时间为准)& ]2 @$ A( O- V& L1 \
  重现步骤.
  Q  w9 }1 L: w, [# l% v
* I0 Y! x' x! K% C5 f" f/ ^4 d+ C" Q$ [; r" i5 J
常见问题分析* J$ t# q9 q6 o: s( W
BT 打开失败(UART)  [# I* M7 }6 U1 q
    打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。
" f- A- R! ^. B    如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
- C  p! o2 b* W/ N, T5 c5 ?    如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。
+ i! u7 ]4 I, Q! N    如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
; ~$ |0 A: _% o9 A    如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。
0 ^* g" [+ P5 z4 `! f3 Z
' Y0 a/ i- S* M9 [BT 打开失败(USB)6 q2 }4 S1 o$ B; m3 Y
    用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.
# p% N. b$ c. R5 g( p    查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。5 d: X( ?4 b' l8 {% |
* n, J# y1 k$ B/ m' H) s
以上观点纳拓科技提供,请勿随意复制、编辑转用
! v& \6 ^3 {# Z; n. j1 ?% F5 t
; E" N* a, R8 P* _& k3 o$ N3 n2 C8 \0 M

2 Y0 a  z9 }' V" H, V+ g
WiFi模块/无线路由/无线中继/交换机方案PCBA模块QQ:42142951
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-7 04:54 , Processed in 0.075159 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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