一起玩树莓派3+蓝牙的配置与评测
上期回顾:
树莓派3应广大极客的需求,支持WiFi和Bluetooth无线通信技术,为IOT开发提供了更多可能。今天就来测试树莓派3的蓝牙功能。
启动树莓派3进入Raspbian系统桌面环境后,在桌面的右上角显示有蓝牙图标,如下图的红色框。
在蓝牙图标上右击鼠标弹出子菜单,共有“Turn Off Bluetooth”、“Make Discoverable”、“Add Device…”、“Remove Device…”4个菜单选项。
点击“Add Device…”子菜单选项,进入蓝牙设备搜索界面。打开手机蓝牙,开放检测功能,这样才能被树莓派找到,找到设备后,在Add New Device界面中,选择手机,点击Pair按钮,进行配对。
配对过程会弹出确认窗口,点击ok确认。
配对成功后弹出下面的窗口提示,分析应该是SDP出现了问题,我们来抓抓log分析一下。分析蓝牙的数据包协议,我们需要一款软件来辅助分析:Frontline ,去http://www.fte.com/ 官方网站下载,在Windows本地安装Frontline 的安装包。
http://www.fte.com/support/CPAS- ... %20BPA%20600&iid=21下载地址。
在手机中进入开发者选项,并开启开发者选项,打开蓝牙数据包日志。
在树莓派的蓝牙子菜单中点击Make Discoverable,然后打开手机蓝牙,进行scan,能够扫描到树莓派蓝牙设备,设备名称为raspberrypi(AD55)。
点击进行配对,配对完成后,查看树莓派蓝牙支持的profile,发现只有共享联系人 service,如下图所示。
将手机中的btsnoop_hci.log文件拷贝到电脑,修改后缀为.cfa文件,双击btsnoop_hci.cfa文件打开。
分析packet,Raspbian操作系统使用的BlueZ支持的bluetooth spec为4.1。
但是在inquiry result中只支持AVRCP、GAP profile。
在SDP中得到的结果也是只支持AVRCP、GAP profile,因此导致SDP完成后断线。
系统自带的蓝牙管理软件功能不是很强大,为了更便于使用,安装Blueman。Blueman是一个GTK蓝牙管理器,能够高效管理BlueZ API,并简化设备连接和操作。
sudo apt-get install blueman
测试文件发送,树莓派能够发送到手机,但是手机不能够发送到树莓派,问题在于树莓派SDP中不包含OPP profile的service record。
总结:
树莓派Raspbian操作系统的蓝牙功能还不是很完善,至少用户体验是很差的,还存在很多问题。如果要支持OPP,A2DP,DUN等profile需要自己配置,配置过程也非常复杂。