Iată o explicație parțială de ce se întâmplă acest lucru.
https://unix.stackexchange.com/questions/96106/bluetooth-le-scan-as-non-root
Iată părerea mea despre el:
Ierarhia reală a apelurilor Bluetooth pare să fie:
Implementarea QT (bibliotecă) a Bluetooth numită „Bluetooth (modul).
Rețineți că acest modul NU este același în fiecare versiune QT și de fapt lipsește în unele.
Modulul QT „biblioteca” este copiere/modificare QT a „bluez”.
„bluez” se bazează pe „hci”.
Notă - Am folosit direct „hci”, ocolind „bluez” și nu am găsit probleme folosindu-l direct. De fapt, implementarea QT lipsește, resetează fizic „Dispozitivele Bluetooth găsite cu ultimul apel reușit pentru ele”. Așa că folosesc „hci” pentru a reseta baza de date necunoscută a dispozitivelor Bluetooth găsite data trecută.
Acum există exemple QT C/C++
Exemplul btscanner funcționează conform așteptărilor - returnează dispozitivele din apropiere și „serviciul” acestuia
btchat face la fel, dar nu reușește cu eroarea de mai sus.
Ambele exemple implementează doar trei SEMNALE
start
dispozitiv găsit
terminat
**NU există SEMANALE „Dispozitiv găsit” ** în btchat,
sunt acolo in btscanner !!
Prin urmare, "problema" este cu implementarea btchat a lui "bluez" și btchat folosește DIFERITE funcții QT - adaugă un alt strat pentru a apela / utiliza "bluez"...
Deoarece utilizarea funcțiilor QT este în timp real, este o provocare să găsiți secvența apelurilor și unde se blochează.