2

我无法在新的 4.1 内核上写入通过 dbus 公开的特性的属性值。

在升级到内核 4.1 之前,相同的应用程序可以通过 dbus 将属性值写入特征,而不会出现任何问题。

以下是从 bluetoothd 收集的日志 -

org.freedesktop.DBus.Error.AccessDenied:拒绝发送消息,1 个匹配规则;type="method_call", sender=":1.24" (uid=0 pid=4112 comm="bluez-5.31/src/bluetoothd -ndE") interface="org.bluez.GattCharacteristic1" member="WriteValue" 错误名称= “(未设置)”request_reply="0"destination=":1.25"(uid=0 pid=4114 comm="./test")

有什么建议么?提前致谢。

4

1 回答 1

4

它显示访问被拒绝,因为默认接口“ org.bluez.GattCharacteristic1 ”未在内核 4.1 中启用

要访问任何 dbus 接口,dbus 配置文件必须允许接口名称,否则将显示 Access Denied。

我们可以在/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>

就我而言,它解决了问题

于 2015-10-01T12:47:12.940 回答