Tôi đã tạo ra một thiết bị ngoại vi BLE chạy bằng root trên một quả mâm xôi nhỏ như bảng. Bây giờ tôi đang làm cứng mọi thứ và phân vùng ứng dụng BLE cho người dùng không root. Vì vậy, tôi đã thay đổi tệp dịch vụ systemd của mình cho ứng dụng giống như:
[Unit]
Description=BLE Peripheral
[Service]
Type=simple
ExecStart=/usr/bin/python3 -u /opt/myPeripheral/bleMainloop
WorkingDirectory=/opt/myPeripheral
StandardOutput=journal
Restart=on-failure
User=blePeripheral
[Install]
WantedBy=multi-user.target
Đã thêm User
trường để chạy với tư cách blePeripheral
người dùng, giờ nó không khởi động được do:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.6797" (uid=107 pid=17300 comm="/usr/bin/python3 -u /opt/pilot/bleMainloop ") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination=":1.2" (uid=0 pid=1373 comm="/usr/lib/bluetooth/bluetoothd -d -E --noplugin=* “)
Tôi nghĩ rằng những gì tôi cần làm là bằng cách nào đó cho phép sử dụng nhất định dbus
cho người dùng không root này. Tôi thấy rằng có một bluetooth.conf
trong /etc/dbus-1/system.d
. Tôi có cần điều chỉnh một cái gì đó trong tệp này để cho phép ứng dụng của tôi vẫn sử dụng các dịch vụ BLE DBus không?