蓝牙功能测试
1. 手机连接蓝牙播放音频
1.1 给配置文件增加自定义 pcm 设备
确认 /etc/asound.conf 中有配置,没有的话追加配置:
cat >> /etc/asound.conf <<'EOF'
pcm.btplay {
type plug
slave {
pcm "hw:0,0"
rate 44100
channels 1
format S16_LE
}
}
EOF1.2 驱动、固件和设备使能
modprobe ATBM6x65_wifi_sdio
sleep 1
hciattach -s 1000000 ttyAS3 atbm 2000000
hciconfig hci0 up
hciconfig hci01.3 连接蓝牙
# 启动蓝牙守护进程
bluetoothd -n -d --noplugin=sap &
# 启动 bluez-alsa(A2DP sink 模式)
bluealsa -p a2dp-sink &
# 连接手机(交互式)
bluetoothctl
# 进入后依次输入:
[bluetooth]# ...
power on
discoverable on
pairable on
default-agent在手机进行蓝牙连接操作,连接 BlueZ 5.54


在终端输入两次 yes


连接成功后退出 bluetoothctl 控制台
exit1.4 蓝牙播放音频
# 打开声卡 0
amixer -c 0 set LINEOUTL on
amixer -c 0 set SPK on
# 启动 btplay 播放(MAC 替换为实际连接的手机,bluetoothctl日志有)
bluealsa-aplay -D btplay CC:42:10:1A:88:8E
# 或者自动选择设备
bluealsa-aplay -D btplay在手机播放音频,开发板 3.5mm 接口有音频输出,测试完成
2. 蓝牙耳机连接播放音乐(主设备模式)
先准备一个 wav 格式音频文件,或者使用 /root/test.wav
2.1 驱动、固件和设备使能
modprobe ATBM6x65_wifi_sdio
sleep 1
hciattach -s 1000000 ttyAS3 atbm 2000000
hciconfig hci0 up
hciconfig hci02.2 扫描蓝牙耳机
# 启动蓝牙守护进程
bluetoothd -n --noplugin=sap &
# 启动 bluez-alsa(A2DP source 模式)
bluealsa -p a2dp-source &
# 连接耳机(交互式)
bluetoothctl
# 进入控制台依次输入:
[bluetooth]# ...
power on
discoverable on
pairable on
default-agent
scan on
看到需要连接的设备后执行 scan off 命令停止扫描
scan off
# 执行如下命令,配对并连接至目标设备
# mac 地址请根据实际情况修改
pair 7C:C9:5E:CA:A3:4D
connect 7C:C9:5E:CA:A3:4D
连接成功后退出控制台
exit播放音频
aplay -D bluealsa:DEV=7C:C9:5E:CA:A3:4D ./test.wav此时蓝牙耳机能听到声音,即测试成功。
3. 蓝牙传输文件
3.1 驱动、固件和设备使能
modprobe ATBM6x65_wifi_sdio
sleep 1
hciattach -s 1000000 ttyAS3 atbm 2000000
hciconfig hci0 up
hciconfig hci03.2 连接蓝牙
# 启动蓝牙守护进程
bluetoothd -n -d --noplugin=sap &
# 启动 bluez-alsa(A2DP sink 模式)
bluealsa -p a2dp-sink &
# 创建接收文件夹
mkdir /root/bt_recv && chmod 777 /root/bt_recv
# 启动 obexd
export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --fork --print-address) && /usr/libexec/bluetooth/obexd -n -d -r /root/bt_recv -a &
# 连接手机(交互式)
bluetoothctl
# 进入后依次输入:
[bluetooth]# ...
power on
discoverable on
pairable on
default-agent蓝牙连接操作同上,连接完成退出控制台
exit3.3 蓝牙接收文件
在手机用蓝牙发送文件,等待传输完成

3.3 蓝牙发送文件
进入 obexctl 控制台,输入指令发送文件,MAC 地址以实际连接为准
obexctl
[obex]# connect CC:42:10:1A:88:8E
[obex]# send /root/test.wav
接收文件传入,等待传输完成

4. 低功耗蓝牙
/etc/bluetooth/main.conf 中修改 ControllerMode = le 并去掉前面的注释符号 #
4.1 驱动、固件和设备使能
modprobe ATBM6x65_wifi_sdio
sleep 1
hciattach -s 1000000 ttyAS3 atbm 2000000
hciconfig hci0 up4.2 启动蓝牙
# 启动蓝牙守护进程
bluetoothd -n -d --noplugin=sap &
# 启动 bluez-alsa(A2DP sink 模式)
bluealsa -p a2dp-sink &
bluetoothctl
# 进入后依次输入:
[bluetooth]# ...
power on
default-agent4.3 注册 GATT 功能
# 进入 GATT 菜单,注册自定义服务
menu gatt
# 1. 注册 Service(会提示是否为主服务)
register-service 0000ffe0-0000-1000-8000-00805f9b34fb
# 出现提示 "Primary (yes/no):" 时输入:
yes
# 2. 注册 Characteristic(会提示输入初始值)
register-characteristic 0000ffe1-0000-1000-8000-00805f9b34fb read,write,notify
# 出现提示 "Enter value:" 时输入初始值(十六进制),如:
00
# 3. 将上面创建的服务注册到 BlueZ 守护进程
register-application出现 Application registered
# 返回主菜单
back
# 开启 LE 广播,让手机能扫描到
advertise on
# 查看本机蓝牙地址
show4.4 手机端操作
手机安装 nRF Connect for Mobile 或其他蓝牙调试工具,扫描连接开发板的蓝牙

连接成功后可以看到刚才注册的服务
点击向下箭头可以读取一次,切换到实时日志界面
返回点击向上箭头开始发送数据

发送成功
作者:林晓燕 创建时间:2026-09-02 11:01
最后编辑:林晓燕 更新时间:2026-10-15 15:11
最后编辑:林晓燕 更新时间:2026-10-15 15:11