LE Audio PTS dongle破解和调试方法

LE Audio PTS dongle破解和调试方法

说明

目前市面上支持LE Audio的USB dongle很少,如果要在Ubuntu Sim上调试LE Audio,基本只能用蓝牙官方PTS Dongle,但目前国内很难买到。本文介绍一种破解PTS Dongle的方法,以及如何在ubuntu上用bluez + zephyr调试LE Audio。

官方Dongle

蓝牙SIG认证的PTS Dongle有下图两种:左边的只能过蓝牙4.2认证,LE/BR/EDR都支持,用的是CSR的芯片,99美元;右边的可以支持蓝牙5.2的认证,但只支持BLE不支持BR/EDR,用的是Nordic的芯片。LE Audio需要右边Laird Connectivity这款Dongle。

(官方链接 https://store.bluetooth.com/)

破解方法

蓝牙官方的PTS Dongle是用的是Nordic 52840方案,和Nordic的nRF52840 Dongle非常相似,只不过加了个USB外壳,理论上是可以直接把PTS的 Firmware直接刷入nRF52840 Dongle来使用

  • 购买nRF52840 Dongle。Nordic官方的nRF52840 Dongle淘宝上很多卖的,100元左右,缺点是不带外壳。也可以在淘宝上找其他带外壳的52840 Dongle,价格也便宜。

  • 安装PTS Firmware Upgrade Software。SIG官网下载速度很慢,上传到这里暂时无法在文档外展示此内容

  • 插上Dongle,运行PTS Firmware Upgrade Software

  • 点击Next软件会搜索连接的dongle,如下图

  • 接着点击“Next”,登陆SIG账号(如果没有SIG账号需要用公司邮箱申请)

  • 此时直接用这个软件升级会失败,原因是我们买的dongle和PTS dongle的bootloader不同过不了校验,但这个过程会把PTS Firmware下载到本地,我们可以找出来烧录进去

  • 找到PTS Firmware,通常在\AppData\Local\PTSFirmwareUpgradeSoftware 路径下

  • 安装nrfutil,执行下面命令刷机(nrf52480 dongle的串口端口号记得修改)

.\nrfutil dfu usb-serial -pkg b15baf09-b224-446a-bd51-c16467c1762c.bin -p COM7

  • 如果出现如下报错,需要把nrf52840 dongle软复位一下,然后再立即执行上面的命令

  • 刷机成功后就可以当作PTS Dongle来做BQB认证测试了!!!

调试方法

PTS Dongle除了可以做BQB认证外,也可以作为controller在Ubuntu/Vela/Zephyr等系统或仿真器上调试蓝牙Host功能,而且由于是蓝牙SIG官方的Firmware兼容性比其他dongle更好

  • 安装依赖项

sudo apt install automake libtool libelf-dev elfutils libdw-dev libjson-c-dev libical-dev libreadline-dev libfftw3-dev

  • 下载编译bluez

git clone https://github.com/bluez/bluez.git

git clone git://git.kernel.org/pub/scm/libs/ell/ell.git

cd bluez

./bootstrap-configure --disable-android --disable-midi

make

sudo make install

  • 运行btattach

sudo btattach -B /dev/ttyACM0 -S 3000000 -R & //ttyACM0表示串口号

sudo systemctl stop bluetooth

hciconfig -a

  • 使用 btproxy 工具打开并监听 UNIX socket

cd ~/bluez

sudo tools/btproxy -u -i 0 & //0表示HCI端口号

-> Listening on /tmp/bt-server-bredrsudo

sudo btmon -Tw btsnoop.cfa //抓取hci log

  • 下载zephyr代码,参考https://docs.zephyrproject.org/latest/develop/getting_started/index.html# 搭建zephyr的编译环境

  • 编译qemu仿真器下的zephyr le audio应用

west build -b qemu_x86 ~/zephyrproject/zephyr/tests/bluetooth/shell/ --pristine -- -DOVERLAY_CONFIG=audio.conf

  • 执行west build -t run 运行zephyr,然后在shell终端执行下面命令初始化le audio,发送le audio广播

bt init

audio init

mcc init

vcs init

bt adv-create conn-nscan ext-adv name

bt adv-data discov

bt adv-start

  • 用支持LE Audio的手机连接调试

(如果能买到蓝牙官方的PTS Dongle,建议还是优先选择官方的Dongle)