如何在Linux上使用bluez连接到支持蓝牙4.0 LE的FitBit Zip?

25

我购买了一款FitBit zip手环。该设备使用蓝牙4.0 LE技术。我希望至少可以通过bluez连接到它。如果成功连接,我想了解更多有关协议的信息。

我使用的是联想P500 Ideapad笔记本电脑,其内置支持蓝牙4.0。看起来它似乎可以工作(有点)。

当我执行以下操作时:

hcitool lescan

我可以找到设备的蓝牙地址,虽然这可能与问题无关,但是它是:CF:D9:24:DB:F4:7B

现在,我在另一个问题中阅读到: Bluetooth Low Energy: listening for notifications/indications in linux 我可以监听通知和其他协议特性。我以前使用过旧版蓝牙,但我没有使用蓝牙LE的经验。

我尝试使用hcitool leccgatttool 连接设备时遇到困难。连接超时并似乎使Linux主机上的蓝牙处于不良状态。我能通过重新加载与蓝牙相关的内核模块来解决这个问题。

非常感谢任何提示。我现在正在尝试最新的bluez。

2个回答

16

请看一下galileo项目,我们能够使用Fitbit dongle连接到跟踪器(并同步它),该dongle也是一个BluetoothLE连接器。那里使用的字节应该能帮助您找出所需的。

完全披露: 我是这个项目的维护者。


非常感谢。我最近没怎么出现,但这很酷,我打算安装它并尝试理解代码。 - Thomas Dignan
嗨,我正在开发一个新的(自定义我的版本的Android / iPhone)应用程序,是否有可能使Fitbit Charge与其通信并显示提醒等内容? - sofs1
这个项目已经停止了吗?链接跳转到了404页面。 - Sasha Chedygov

11

我记得曾经做过类似于你所描述的事情,并且成功连接了。但是,没有列出任何指示/通知的特征,因此我无法从设备获取任何数据,除了非常基本的元数据(设备类型、设备名称等)。

今天我尝试做同样的事情,但是似乎无法建立连接,直到我告诉它使用随机地址类型。

以下是我在之前成功连接时记录的结果:

# gatttool -b EB:47:1D:11:11:11 --addr-type=random --primary
attr handle = 0x0001, end grp handle = 0x0007 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle = 0x0008, end grp handle = 0x0008 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle = 0x0009, end grp handle = 0x000e uuid: adabfb00-6e7d-4601-bda2-bffaa68956ba
attr handle = 0x000f, end grp handle = 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb

# gatttool -b EB:47:1D:11:11:11 --addr-type=random --characteristics
handle = 0x0002, char properties = 0x02, char value handle = 0x0003, uuid = 00002a00-0000-1000-8000-00805f9b34fb
handle = 0x0004, char properties = 0x02, char value handle = 0x0005, uuid = 00002a01-0000-1000-8000-00805f9b34fb
handle = 0x0006, char properties = 0x02, char value handle = 0x0007, uuid = 00002a04-0000-1000-8000-00805f9b34fb
handle = 0x000a, char properties = 0x12, char value handle = 0x000b, uuid = adabfb01-6e7d-4601-bda2-bffaa68956ba
handle = 0x000d, char properties = 0x06, char value handle = 0x000e, uuid = adabfb02-6e7d-4601-bda2-bffaa68956ba
handle = 0x0010, char properties = 0x02, char value handle = 0x0011, uuid = 00002a29-0000-1000-8000-00805f9b34fb
handle = 0x0013, char properties = 0x02, char value handle = 0x0014, uuid = 0000fb00-0000-1000-8000-00805f9b34fb

您可能需要将设备配对才能获得实际有用的数据...不确定该如何操作。


感谢您的回答。这篇文章将非常有帮助。 - Thomas Dignan
谢谢你提醒我。不幸的是,我最近因工作太忙而没有时间去处理它。但我希望尽快处理完毕。 - Thomas Dignan
我能继续使用gatttool获取一些数据,但仍不确定它有什么用处。 gatttool -b F8:56:40:65:66:15 --char-read -u 00002a00-0000-1000-8000-00805f9b34fb --addr-type random - Chuck Claunch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接