使用 Dbus API 为 bluez 5.31 写入特征值失败,内核 4.1
Writing characteristics value using Dbus API for bluez 5.31 failed with kernel 4.1
我无法将属性值写入公开的特征
在新的 4.1 内核上通过 dbus。
在升级到内核 4.1 之前,同一个应用程序可以写入
通过 dbus 将属性值赋予特征没有任何问题。
以下是从bluetoothd收集的日志-
org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 1
matched rules; type="method_call", sender=":1.24" (uid=0 pid=4112
comm="bluez-5.31/src/bluetoothd -ndE ")
interface="org.bluez.GattCharacteristic1" member="WriteValue" error
name="(unset)" requested_reply="0" destination=":1.25" (uid=0 pid=4114
comm="./test ")
有什么建议吗?
提前致谢。
它显示访问被拒绝,因为默认接口“org.bluez.GattCharacteristic1”在内核 4.1
中未启用
要访问任何 dbus 接口,dbus 配置文件必须允许接口名称,否则将显示拒绝访问。
我们可以在 /etc/dbus-1/system.d/bluetooth.conf 找到蓝牙的 dbus 配置文件,如下所示:
<policy user="root">
<allow own="org.bluez"/>
<allow send_destination="org.bluez"/>
<allow send_interface="org.bluez.Agent1"/>
... ... ... ...
</policy>
接口org.bluez.GattCharacteristic1的权限需要添加如下策略:
<policy user="root">
<allow own="org.bluez"/>
<allow send_destination="org.bluez"/>
<allow send_interface="org.bluez.Agent1"/>
... ... ... ...
<allow send_interface="org.bluez.GattCharacteristic1"/>
<allow send_interface="org.bluez.GattDescriptor1"/>
<allow send_interface="org.freedesktop.DBus.ObjectManager"/>
... ... ... ...
</policy>
就我而言,它解决了问题
我无法将属性值写入公开的特征 在新的 4.1 内核上通过 dbus。
在升级到内核 4.1 之前,同一个应用程序可以写入 通过 dbus 将属性值赋予特征没有任何问题。
以下是从bluetoothd收集的日志-
org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 1 matched rules; type="method_call", sender=":1.24" (uid=0 pid=4112 comm="bluez-5.31/src/bluetoothd -ndE ") interface="org.bluez.GattCharacteristic1" member="WriteValue" error name="(unset)" requested_reply="0" destination=":1.25" (uid=0 pid=4114 comm="./test ")
有什么建议吗? 提前致谢。
它显示访问被拒绝,因为默认接口“org.bluez.GattCharacteristic1”在内核 4.1
中未启用要访问任何 dbus 接口,dbus 配置文件必须允许接口名称,否则将显示拒绝访问。
我们可以在 /etc/dbus-1/system.d/bluetooth.conf 找到蓝牙的 dbus 配置文件,如下所示:
<policy user="root">
<allow own="org.bluez"/>
<allow send_destination="org.bluez"/>
<allow send_interface="org.bluez.Agent1"/>
... ... ... ...
</policy>
接口org.bluez.GattCharacteristic1的权限需要添加如下策略:
<policy user="root">
<allow own="org.bluez"/>
<allow send_destination="org.bluez"/>
<allow send_interface="org.bluez.Agent1"/>
... ... ... ...
<allow send_interface="org.bluez.GattCharacteristic1"/>
<allow send_interface="org.bluez.GattDescriptor1"/>
<allow send_interface="org.freedesktop.DBus.ObjectManager"/>
... ... ... ...
</policy>
就我而言,它解决了问题