我们正在开发一种解决方案,尝试通过 BLE 从 30-35 个传感器获取数据,这些传感器将与我们的设备配对和绑定。我们设备的详细信息(硬件方面)如下:
SBC——AL253DFI 基于 Intel Atom E3900 系列的主板
内存——2GB
操作系统——Ubuntu Server 20.04.6 LTS
我们开发了一个通过 DBus(版本 1.12.16)和 BlueZ(版本 5.66)与 BLE 适配器通信的应用程序。
我们的应用程序的工作方式是,我们已注册 DBus 回调来确定广告传感器的 RSSI 属性变化,并在此基础上继续连接并执行其他活动。我们面临的问题是,在 15 个传感器配对和绑定后,其余传感器在广告时不会调用回调,但配对的 15 个传感器的回调会正确调用,所需操作会按预期工作。我们无法弄清楚为什么会发生这种情况。
我们在 Lubuntu 20.04 上部署了具有完全相同配置的相同代码,并在多次运行中观察到我们能够使所有传感器配对和绑定而没有任何问题。我们需要在 Ubuntu Server 20.04 LTS 上实现该应用程序,任何有关理解和解决此问题的想法/建议都将不胜感激。
先感谢您。
笔记:请注意,我们不是尝试同时连接多个外围设备。
答案1
检查系统限制:Ubuntu Server 可能对一次可配对的蓝牙设备数量有限制。您可以通过运行命令 cat /proc/sys/kernel/pid_max 来检查。如果该数字小于您尝试连接的传感器数量,则可能需要增加它。
更新您的系统:确保您的系统已安装最新的补丁和更新。使用以下命令更新您的系统:
sudo apt-get update
sudo apt-get upgrade
更新 BlueZ:您使用的 BlueZ 版本可能存在错误。尝试使用以下命令更新到最新版本:
sudo apt-get install --no-install-recommends bluetooth
您还可以使用 btmon 和 bluetoothcl 等调试工具获取有关此内容的更多信息
希望这能奏效