中国安防论坛

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

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

[复制链接]

安防知名大师

Rank: 7Rank: 7Rank: 7

积分
1288
QQ
发表于 2023-11-27 15:06:35 | 显示全部楼层 |阅读模式
基本测试主要包括配置检查和BT测试两大部分/ O  P/ ~& j: i* R
配置检查:1 L; J" O, A, X4 y& ^' z( t4 f
  为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。; }4 M7 \# c3 ]2 {# S9 i! Z
  adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.* X# A8 }$ w* z0 L2 ]
BT 测试:1 ?3 R9 J9 C. U# l
  本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。2 G# o! {2 q0 D! }7 P
基本功能测试如下:. }8 Z+ @/ F. O( J7 u7 ^  v# ~
  1) 打开/关闭 BT 无失败现象。" ]0 h" j0 ]* m0 {' @
  2) 能够搜索到近处 BT 设备。7 _8 q% f$ Z: c; x. M$ o
  3) 和搜索到的蓝牙耳机或其他设备配对。  }: F+ P5 U6 q/ q, T9 p8 e
  4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。
" B3 f6 s: S, x  5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。
+ v1 @  d+ {& ]- ]! X' u  6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
* O) F. ~7 d8 w9 o2 R% G6 m  7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。% k% u0 M% }5 k6 }" h8 T3 u
! p+ D/ y, j- v4 q
& O% l2 F0 A4 {" T2 K, y
  当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.
% O: p: Q9 {+ H# [1 H蓝牙 Log 相关的配置文件:! Y; h3 P4 i- ^/ h# d3 Q8 V
  蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
9 s+ K4 {1 C* U, o; [# {    # Enable trace level reconfiguration function
& X0 l: @* O0 _0 U* ?; R    # Must be present before any TRC_ trace level settings
' `6 M) S( a1 G2 ]    TraceConf=true9 a: ?' c5 Y. \# j
; r3 ?  Z- h1 s' W; s
    # Trace level configuration% ^: ]7 g/ w; H3 O( z  S
    # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )
: h# O5 n3 Q% ]) T+ a    # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )% o% ~% b: s) M! o* D5 A0 |, O
    # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )* a/ m1 m7 w" K: H9 e
    # BT_TRACE_LEVEL_API 3 ( API traces )
. Z- P' ?3 U; N/ F    # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
: `% |. {: [# w. k' s; f& C" H    # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )
, y& U6 b$ m# W9 K" H/ Y/ Q    # BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
% K& ~; U( u  a+ zTRC_BTAPP only.
6 L  e9 X( h5 p9 W; @* |# O4 O    TRC_BTM=2( \% Y( m4 r- c- y
    TRC_HCI=2& F7 h0 U0 l4 k& R- E* D
    TRC_L2CAP=2
. x- ^  g7 q* M8 Y& S  J/ T2 r    TRC_RFCOMM=2
0 V1 t; \( U. ]7 q- k" v& X    TRC_OBEX=2
& u6 {  M$ T0 W' _& p: \    TRC_AVCT=2+ K5 h! w* n- y+ P0 M, X4 S8 f4 t
    TRC_AVDT=27 d% a$ F( C6 h4 t5 b6 J
    TRC_AVRC=2
9 r1 T5 h* d0 f4 L    TRC_AVDT_SCB=21 K8 q9 ~& q7 m2 I7 ^2 j
    TRC_AVDT_CCB=2
" O( }- a' L1 v% c5 o8 t" c    TRC_A2D=2
7 f' J6 n  Y* ^: v4 O  Y    TRC_SDP=20 p7 {" U6 f* `& o. U
    TRC_GATT=2# j; g2 `+ q2 ]7 q2 h* g
    TRC_SMP=2
* Z" q6 y" b- \/ P    TRC_BTAPP=2
. m/ R9 _, x+ `! X) G2 W2 [    TRC_BTIF=2' y" Y+ o$ Z7 Y0 @- E- S2 X- l) O
    TRC_GAP=2
  O% P# a0 v  f: M4 q* o/ ~    TRC_BNEP=2& J' @- S) u6 x2 k6 h. M
    TRC_PAN=2% v( J4 m2 u. `. `
    TRC_HID_HOST=2) ]) ?# q1 \1 W% @+ [
    TRC_HID_DEV=2
# P: s. k' L4 p" S# r2 A) |0 h9 `) a

9 l# o5 b' z4 x  CLogcat –v time
, }  D1 n8 s) l, Q- D  在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.
( Z" m7 L* X- M) {3 k  测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.
# z, O% e- _' C1 N: C2 ?2 Z+ _* I( K( f9 B$ t1 B5 l4 p) Q
BtSnoop- B2 V7 O8 r2 r5 e/ c- \2 G4 }0 p
  打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.
5 ]$ j  W% v# q  在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.$ ]$ \2 @+ R9 [+ t' }! D5 w8 q
$ }" }* Q2 k8 C* T- r
获取 Bluetooth 进程相关信息
0 ?0 S& I5 L$ `1 ?; _" L; d  输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息$ m- g# Z8 ?4 J3 m) j5 P, \  x

4 m4 R6 A' m5 d8 o, j注意事项
0 T0 ^% [% n, I. ^, N  报告蓝牙问题 至少 需要 提供 下列信息:
" I$ s( E% i: p; S" ~! g   logcat –v time
& @6 N) l0 C( j4 M% {/ w+ A   btsnoop1 c# E- ^: X2 z) M3 K# x- _8 [
   Bluetooth 进程信息( e% c1 q; x7 t3 ^- [' R) }) `. |  p
  出现问题的时间点( 以设备时间为准)8 ^% o" m$ |) `; s
  重现步骤.+ N, k0 u0 ^" [/ T

( E% y- t9 p' L( A! u3 j5 O, _) u8 u+ f8 y( t
常见问题分析: R% |5 ^# k/ _- v9 O4 m+ p0 f5 g
BT 打开失败(UART)3 e. [+ S% X' C* w
    打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。
( {: K, K3 p9 e' g/ ^    如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。3 f$ m1 C9 }7 i" A: F/ l
    如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。7 g8 K/ Y6 Q. V# k9 j. O1 a4 ?2 r
    如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
) Y5 N+ o- [, D9 C6 B% Z    如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。7 Q$ U9 H( O$ t( ?0 |7 x3 Z) x

& i( ^& {3 O4 I5 ]" B9 X, x3 s0 |6 pBT 打开失败(USB)
3 n5 h% w% T2 h+ s    用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.* F9 `( ~/ N  R0 Q- e$ ?
    查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。/ m" Q7 G2 {' q& W- _

- |7 o$ ~* H3 B0 I; J) C以上观点纳拓科技提供,请勿随意复制、编辑转用5 K' g2 E3 e% B; s' N$ _- T
* ?4 z5 o* E$ d

% @) x1 v' C* T1 Y8 g
( d" t2 Z4 V  N- J0 u
WiFi模块/无线路由/无线中继/交换机方案PCBA模块QQ:42142951
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-17 13:41 , Processed in 0.057516 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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