My aim is to not need root to check phone proximity, and as bluetoothctl is not setuid, I am convinced it should be possible.
I've been fiddling with Net::DBus, but the docs are not conclusive and missing methods like list_services and list_objects.
I've been playing a bit with d-feet, but that didn't bring me any further (yet) with the correct arguments to Net::DBus. (and time lacks to keep trying).
What I had:
use 5.16.2;
use warnings;
use Net::DBus;
use Data::Peek;
my $bus = Net::DBus->find or die "Cannot connect to DBus\n";
my $hal = $bus->get_service ("org.bluez") or die "Cannot get Handle\n"
+;
Giving no die message, but a disappointing
org.freedesktop.DBus.Error.ServiceUnknown: The name org.bluez was not
+provided by any .service files
That plus
$ cat /etc/systemd/system/dbus-org.bluez.service
[Unit]
Description=Bluetooth service
Documentation=man:bluetoothd(8)
ConditionPathIsDirectory=/sys/class/bluetooth
[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/lib/bluetooth/bluetoothd
NotifyAccess=main
#WatchdogSec=10
#Restart=on-failure
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
LimitNPROC=1
ProtectHome=true
ProtectSystem=full
[Install]
WantedBy=bluetooth.target
Alias=dbus-org.bluez.service
Made me skip digging into DBus for now
Enjoy, Have FUN! H.Merijn
|