linux – DBus.ObjectManager.GetManagedObjects中缺少LEAdvertisingManager1

linux – DBus.ObjectManager.GetManagedObjects中缺少LEAdvertisingManager1,第1张

概述我正在运行运行Ubuntu和 Python 2.7的家用计算机进行测试,希望Raspberry Pi 3能够使用具有自定义服务和特性的BLE进行广告宣传.我在两台设备上都安装了Bluez版本5.42(使用推荐的方法)以及dbus-python.我的电脑和Raspberry Pi都可以使用hci0 lescan 0命令做广告,但是我想用bluez示例脚本做广告,例如–gatt-client.py和e 我正在运行运行Ubuntu和 Python 2.7的家用计算机进行测试,希望RaspBerry Pi 3能够使用具有自定义服务和特性的BLE进行广告宣传.我在两台设备上都安装了Bluez版本5.42(使用推荐的方法)以及dbus-python.我的电脑和RaspBerry Pi都可以使用hci0 lescan 0命令做广告,但是我想用bluez示例脚本做广告,例如–gatt-clIEnt.py和example-advertisement.py找到 here,因为我想要使用我自己的自定义特征.

家用电脑 – 内核版本4.4.0-31通用

我可以通过运行example-gatt-server.py和example-advertise.py来创建自定义特征和广告,而我的家用计算机上没有任何问题.我遇到的一个问题是,我需要通过在/lib/systemd/system/bluetooth.service中添加–experimental到bluetooth.service文件来启用Bluez实验模式.另外安装dbus-python库有点痛苦,因为我必须自己为Python2构建和安装它.

advertise.py脚本查找名为“org.bluez.LEAdvertisingManager1”的特定广告界面. gatt-server.py脚本查找“org.bluez.GattManager1”.我可以通过运行以下命令来检查该接口是否存在:

dbus-send --system --dest=org.bluez --print-reply / org.freedesktop.DBus.ObjectManager.GetManagedobjects

在家用计算机上找到这些接口并正常工作.脚本运行没有问题.

RaspBerry Pi – 内核版本4.4.38-v7

使用相同的bluez版本和实验性功能,我在尝试运行advertise.py时遇到此错误:

LEAdvertisingManager1 interface not found.

当我执行命令“systemctl status bluetooth”时,它显示实验标志已启用,但我在运行时看不到LEAdvertistingManager1.

dbus-send --system --dest=org.bluez --print-reply / org.freedesktop.DBus.ObjectManager.GetManagedobjects

然而,我可以运行gatt-server.py脚本而不会发出任何问题,这意味着找到了“org.bluez.GattManager1”并且工作正常.我在这里错过了什么?

我已经搜索了这个问题,但唯一的建议是启用实验性功能并确保我的内核是> = 4.1.

解决方法 我已经解决了我的问题!经过大量调试并查看bluez错误日志后,我意识到我没有在我的Pi上正确安装bluez.以下是从全新安装的raspbian正确安装bluez的步骤.
sudo apt-get update sudo apt-get upgrade mkdir bluez cd bluez wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.43.tar.xz tar xvf bluez-5.43.tar.xz cd bluez-5.43/ sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev ./configure sudo make sudo make install

然后,启用实验模式. Bluez v5.23可能不需要这样做,但无论如何我都是这样做的.

cdsudo nano /lib/systemd/system/bluetooth.service

在“ExecStart = /usr/local / libexec / bluetooth / bluetoothd”之后添加–experimental
所以看起来应该是这样的

ExecStart=/usr/local/libexec/bluetooth/bluetoothd --experimental

然后使用这个新配置运行蓝牙

sudo systemctl daemon-reload sudo systemctl restart bluetooth

如果您想运行测试广告,可以使用以下内容:

sudo hciconfig hci0 upsudo hciconfig hcio leadv 0

您的Pi3应该宣传为“raspBerrypi”,如果您尝试使用自己喜欢的BLE应用程序连接到它(我在iOS上使用liteBlue),它应该有一些默认特性.

为了检查’LEAdvertisingManager1’是否存在,我们需要运行

dbus-send --system --dest=org.bluez --print-reply / org.freedesktop.DBus.ObjectManager.GetManagedobjects

最后,不要尝试从原始帖子中的链接运行脚本.它们如此令人难以置信地过时了.而是运行位于您创建的目录中的示例脚本.

cd bluez/bluez-5.43/tests

在运行之前,您需要通过以下方式安装dbus-python:

sudo apt-get install python-dev libdbus-1-dev libdbus-glib-1-dev sudo apt-get install python-pip sudo apt-get install --reinstall python-gisudo python2.7 -m pip install dbus-python

如果你想使用python2.7(我做过)运行example-advertise脚本,你将不得不更改example-advertise中的行

import gobject

from gi.repository import GObject as gobject

如果要添加自己的自定义特性,则需要同时运行example-gatt-server,该服务器应该无需修改即可运行.

我还遇到了一个小问题,我的iPhone卡住了询问Pi3并且无法连接.通过简单地重置蓝牙解决了这个问题.

sudo systemctl daemon-reload sudo systemctl restart bluetooth

祝你好运!

总结

以上是内存溢出为你收集整理的linux – DBus.ObjectManager.GetManagedObjects中缺少LEAdvertisingManager1全部内容,希望文章能够帮你解决linux – DBus.ObjectManager.GetManagedObjects中缺少LEAdvertisingManager1所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1049192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存