BlueZ 显示 DBUS 上的旧缓存数据
Posted
技术标签:
【中文标题】BlueZ 显示 DBUS 上的旧缓存数据【英文标题】:BlueZ showing old cached data on DBUS 【发布时间】:2017-09-12 19:14:50 【问题描述】:我对 BlueZ(Ubuntu 16.04 中的股票版本 5.37)有一个非常奇怪的问题。我正在开发蓝牙外围设备,我只有一个开发套件。在其固件中,我更改了广播的名称。当我使用时:
hcitool lescan
,显示我的设备的更新名称。但是当我使用 Qt5 库时,会扫描旧名称。在 DBUS 中查看显示旧名称已被缓存。有没有办法强制 DBUS 重新加载所有参数?或者以某种方式倾倒所有东西?
【问题讨论】:
在您的固件中,您是否从 org.bluez.Adapter1 接口写入“别名”属性? 值得注意的是,这不是 D-Bus 问题,而是 BlueZ(或您使用 BlueZ 的方式)的问题。 D-Bus 只是一个 IPC 协议,并不是这里的缓存。 【参考方案1】:事实证明,BlueZ 确实保留了蓝牙设备缓存。可以在
中找到/var/lib/蓝牙
在以 MAC 地址命名的文件夹中。删除他们的内容并重新启动蓝牙服务为我解决了这个问题。
【讨论】:
天哪,我以为我要疯了,直到我发现这个,在我的嵌入式设备中创建了新特性,尽管 Bluez 和我的 android 版本较旧,但我的 Qt 应用程序和 Bluez 都不会看到新特性手机看到上述特点。我还必须删除缓存目录(计算机的 BT MAC 地址目录)中与我的嵌入式 BLE 设备的 MAC 地址相关的一些信息。感谢一百万的回答。 我推断这一定是正在发生的事情,这里是确认它的答案。奇怪的“缓存”行为。谢谢! 顺便说一句,禁用此缓存,编辑 /etc/bluetooth/main.conf 确实对我有用。 spinics.net/lists/linux-bluetooth/msg90150.html以上是关于BlueZ 显示 DBUS 上的旧缓存数据的主要内容,如果未能解决你的问题,请参考以下文章
BlueZ DBUS API - GATT 接口对 BLE 设备不可用
使用 bluez 5.43 和 DBus 从 BLE 传感器读取广告数据包的正确方法是啥