Bluetooth 在内核4.1中,使用Dbus API为bluez 5.31写入特征值失败

Bluetooth 在内核4.1中,使用Dbus API为bluez 5.31写入特征值失败,bluetooth,dbus,bluez,characteristics,Bluetooth,Dbus,Bluez,Characteristics,我无法写入将值分配给已暴露的特性 通过新的4.1内核上的dbus 在升级到内核4.1之前,相同的应用程序可以编写 通过dbus将属性值指定给特性,无任何问题 以下是从Bluetooth收集的日志- org.freedesktop.DBus.Error.AccessDenied:拒绝发送邮件,1 匹配规则;类型=方法调用,发送方=:1.24 uid=0 pid=4112 通信=bluez-5.31/src/Bluetooth-ndE interface=org.bluez.GattCharacte

我无法写入将值分配给已暴露的特性 通过新的4.1内核上的dbus

在升级到内核4.1之前,相同的应用程序可以编写 通过dbus将属性值指定给特性,无任何问题

以下是从Bluetooth收集的日志-

org.freedesktop.DBus.Error.AccessDenied:拒绝发送邮件,1 匹配规则;类型=方法调用,发送方=:1.24 uid=0 pid=4112 通信=bluez-5.31/src/Bluetooth-ndE interface=org.bluez.GattCharacteristic1成员=WriteValue错误 name=unset requested_reply=0 destination=:1.25 uid=0 pid=4114 通信=/测试

有什么建议吗?
提前感谢。

它显示访问被拒绝,因为默认情况下,内核4.1中没有启用接口org.bluez.GattCharacteristic1

要访问任何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>
就我而言,它解决了问题