Linux BLE Gatt服务器程序在作为服务运行时无法检索dbus org.bluez对象

时间:2018-03-13 16:21:54

标签: linux bluetooth-lowenergy systemd gatt bluetooth-gatt

Linux BLE Gatt服务器程序在作为服务运行时无法检索dbus org.bluez对象。当我以root身份使用终端运行程序时,程序运行正常但是当我尝试将程序作为服务运行时它失败了。

这是我的systemd testproj.service文件

[Unit]
Description=Start BLE Gatt Server

[Service]
Type=dbus
BusName=com.testproj
WorkingDirectory=/home/root/ble_gatt_server
ExecStart=/home/root/ble_gatt_server/standalone
User=root


[Install]
WantedBy=multi-user.target

此处还有dbus的权限文件 testproj.conf内容低于

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <policy user="root">
    <allow own="com.testproj"/>
    <allow send_destination="com.testproj"/>
    <allow send_destination="org.bluez"/>
  </policy>
  <policy at_console="true">
    <allow own="com.testproj"/>
    <allow send_destination="com.testproj"/>
    <allow send_destination="org.bluez"/>
  </policy>
  <policy group="lp">
    <allow own="com.testproj"/>
    <allow send_destination="com.testproj"/>
    <allow send_destination="org.bluez"/>
  </policy>
  <policy context="default">
    <allow own="com.testproj"/>
    <allow send_destination="com.testproj"/>
    <allow send_destination="org.bluez"/>
  </policy>
</busconfig>

此处还有dbus的权限文件 bluetooth.conf内容低于

<!-- This configuration file specifies the required security policies
     for Bluetooth core daemon to work. -->

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- ../system.conf have denied everything, so we just punch some holes -->

  <policy user="root">
    <allow own="org.bluez"/>
    <allow send_destination="org.bluez"/>
    <allow send_interface="org.bluez.Agent1"/>
    <allow send_interface="org.bluez.MediaEndpoint1"/>
    <allow send_interface="org.bluez.MediaPlayer1"/>
    <allow send_interface="org.bluez.ThermometerWatcher1"/>
    <allow send_interface="org.bluez.AlertAgent1"/>
    <allow send_interface="org.bluez.Profile1"/>
    <allow send_interface="org.bluez.HeartRateWatcher1"/>
    <allow send_interface="org.bluez.CyclingSpeedWatcher1"/>
    <allow send_interface="org.bluez.GattCharacteristic1"/>
    <allow send_interface="org.bluez.GattDescriptor1"/>
    <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
    <allow send_interface="org.freedesktop.DBus.Properties"/>
  </policy>

  <policy at_console="true">
    <allow send_destination="org.bluez"/>
  </policy>

  <!-- allow users of lp group (printing subsystem) to 
       communicate with bluetoothd -->
  <policy group="lp">
    <allow send_destination="org.bluez"/>
  </policy>

  <policy context="default">
    <deny send_destination="org.bluez"/>
  </policy>

</busconfig>

0 个答案:

没有答案