Salve a tutti. Sto scrivendo un programma che consenta di inviare messaggi da uno smartphone ad un computer Linux mezzo bluetooth. Mi trovo però davanti ad un problema strutturale, che non so come affrontare.
Se il pc è avviato e la sessione utente (kde) è attiva tutto funziona. Il supporto bluetooth è attivo mezzo bluez che si appoggia su dbus eccetera.
Ora il problema si pone quando la sessione è chiusa ed il programma lavora come servizio. Vedo infatti che al programma - servizio non è consentito accedere al dispositivo bluetooth. Vedo che la cosa non è accessibile nemmeno se mi collego al pc via terminal server. Sembra infatti che bluez - dbus permetta di accedere alle risorse bluetooth solo se si è al pc con una sessione avviata.
Ecco l'errore:
Codice PHP:
denis@tomcat:~/Cpp/QtBluetoothHTTPServer/QtBluetoothHTTPServer-build-desktop$ bluez-simple-agent
ERROR:dbus.proxies:Introspect error on :1.0:/: [b]dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message[/b], 2 matched rules; type="method_call", sender=":1.187" (uid=1000 pid=4142 comm="/usr/bin/python /usr/bin/bluez-simple-agent ") interface="org.freedesktop.DBus.Introspectable" member="Introspect" error name="(unset)" requested_reply="0" destination=":1.0" (uid=0 pid=2378 comm="/usr/sbin/bluetoothd ")
Traceback (most recent call last):
File "/usr/bin/bluez-simple-agent", line 104, in <module>
path = manager.DefaultAdapter()
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 70, in __call__
return self._proxy_method(*args, **keywords)
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
**keywords)
File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
message, timeout)
<b>dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message</b>, 2 matched rules; type="method_call", sender=":1.187" (uid=1000 pid=4142 comm="/usr/bin/python /usr/bin/bluez-simple-agent ") interface="org.bluez.Manager" member="DefaultAdapter" error name="(unset)" requested_reply="0" destination=":1.0" (uid=0 pid=2378 comm="/usr/sbin/bluetoothd ")
denis@tomcat:~/Cpp/QtBluetoothHTTPServer/QtBluetoothHTTPServer-build-desktop$
Avede idea di come si possa permettere ad un servizio di accedere ai dispositivi bluetooth?