1

我一直在使用我编写的一个小型 c 程序从低成本蓝牙温度传感器获取蓝牙 ble 广告包。其中许多传感器以 0 型或 4 型蓝牙广告包广播它们的温度和湿度读数。这使我能够从低成本传感器获取这些数据,而不必使用供应商的应用程序或云服务。

几个月来,使用树莓派收集这些数据并发布到 MQTT 一直很有效。最近该程序开始失败。我追踪到蓝牙堆栈在一些数字和组合记录错误后崩溃的问题,如下所示:

Bluetooth: hci0: unknown advertising packet type: 0xdf
Bluetooth: hci0: unknown advertising packet type: 0xd8
Bluetooth: hci0: Dropping invalid advertising data
Bluetooth: hci0: advertising data len corrected

我在运行程序时看到这些错误:ARM Raspbian GNU/Linux 10 (buster) Intel Ubuntu 18.04.5 LTS

蓝牙堆栈故障和重新加载似乎最常发生在带有 USB 蓝牙适配器的 Raspberry Pi 上。在使用内部 UART 蓝牙适配器或更强大的 i5 x86 Ubuntu 机器上的任何适配器的 Raspberry Pi 上发生率较低。但是,所有这些都记录了上述消息的一些组合。

这是开始变得有点奇怪的地方。我很确定导致这些消息和崩溃的行为是我使用我的 iPhone 来控制我的 HomePods .....

这很快就从我的工资等级中移走了。在 HomePods 之前,我已经看到一些类似消息的报告,似乎表明广告数据包的速率超过了 Linux 蓝牙堆栈的某些内部。但是,正如我所说,我的系统已经运行了几个月,没有任何问题。直到,我认为,我将 HomePods 引入了我的家,即便如此,我认为可能是新版本的 HomePod 固件引发了这些问题。

任何想法或探索方向将不胜感激。

谢谢!

4

0 回答 0