我正在为 BLE 演示设置两个 Linux 系统。显然,一个系统将是外围设备,而一个系统将是中央设备。我对这两种配置都有几个问题。
环境
- 2x Ubuntu 14.04 系统
- 2 个可插拔 USB-BT4LE 加密狗(http://plugable.com/products/usb-bt4le)
外围设备设置
首要任务是通过配置 GATT 服务器进行外围系统设置和广告。目前,似乎无法从命令行配置 GATT 服务器。因此,虽然启动 USB 加密狗并对其进行宣传是一项简单的任务,但这并不允许创建自定义服务和特性。我能找到的 GATT 服务器的唯一示例是 Bluez 包中的 gatt-example.c 文件。所以我下载并构建了最新的 bluez-5.23 源代码。(http://www.linuxfromscratch.org/blfs/view/svn/general/bluez.html)。另外使用 --enable-maintainer-mode 标志配置以强制将 gatt-example.c 插件构建到 bluetoothd。我从~/bluez-5.23/plugins
目录中验证了构建后有一个bluetoothd-gat-example.o
文件。这告诉我 gatt-example 至少是成功构建的。
然后我修改了配置文件以启用 LE 和属性服务器。
$ sudo vi /etc/bluetooth/main.conf
EnableLE = true // Enable Low Energy support. Default is false.
AttributeServer = true // Enable the GATT attribute server. Default is false.
然后只需重新启动或重新启动蓝牙守护程序...
中央设备设置
由于中央设备不需要像外围设备那样构建任何特殊插件,我只是使用apt-get
. 这似乎已经根据bluetoothd -v
.
会话设置
那么连接过程应该相当简单。我将外围设备设置为广告,然后与中央设备连接:
周边:
$ sudo hciconfig hci0 up // Make sure the interface is up
$ sudo hciconfig hci0 leadv // Set the interface to advertise
中央:
$ sudo hcitool -i hci0 lescan // Scan for nearby devices advertising
LE Scan ...
00:02:72:C9:5E:0F (unknown) // Not sure why two of the same MAC are found?
00:02:72:C9:5E:0F (unknown) // but I know this is my device...
$ sudo gatttool -i hci0 -b 00:02:72:C9:5E:0F -m 48 --interactive // Connect interactively
[ ][00:02:72:C9:5E:0F][LE]> connect
[CON][00:02:72:C9:5E:0F][LE]> primary
attr handle: 0x0001, end grp handle: 0x0008 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0010 uuid: 00001801-0000-1000-8000-00805f9b34fb
[CON][00:02:72:C9:5E:0F][LE]> characteristics
handle: 0x0004, char properties: 0x02, char value handle: 0x0006, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0007, char properties: 0x02, char value handle: 0x0008, uuid: 00002a01-0000-1000-8000-00805f9b34fb
而且我们看到 gatt 示例中没有一项服务或特征可用。
问题
- 外围设备
- 我将如何创建自己的自定义 GATT 服务器?它可以是独立的 C 应用程序,还是需要像 gatt-example 那样作为插件内置到 bluetoothd 中?这个问题的答案(创建 GATT 服务器?)意味着您执行以下操作:“首先初始化 GATT 库和其他模块”,然后“注册您的 GATT 数据库”。但是没有一个如何实现这些通用语句的示例,并且提供的链接只是蓝牙网站的 URL。
- GATT 规范 ( https://developer.bluetooth.org/gatt/Pages/default.aspx ) 提供了许多可以以 XML 格式下载的“采用”服务和特征。但是没有关于如何使用它们的说明?!
- 如何验证我的 GATT 服务器是否正在运行?
--中央设备
- 为什么我的中央设备看不到外围设备上运行的 GATT 服务器的服务和特征?
我可以提供任何必要的额外信息。谢谢。