Ich verwende einen kopflosen Raspberry PI 3 und möchte, dass er automatisch Pairings von jedem Gerät akzeptiert.
Ich habe diese Antwort in einer identischen Frage gesehen:
Automatische Annahme von Bluetooth-Verbindungen auf einem Pi 3
Aber es scheint ein bisschen veraltet zu sein und einige der verwendeten Befehle scheinen nicht zu existieren.
Ich verwende das 2016-05-27-raspbian-jessie.img
Betriebssystem-Image.
bluetooth-agent
bin ich mir aber nicht sicher.Antworten:
Da
bluetooth-agent
es auf Jessie keinen Befehl gibt, besteht die moderne Methode darin, relevante Befehle an weiterzuleitenbluetoothctl
. Basierend auf dieser SO-Frage sollte das folgende Skript das automatische Pairing ohne manuelle Pin-Eingabe ermöglichen:quelle
No agent is registered
, scheint es, dass derdefault-agent
Befehl zu schnell ausgeführt wird. Wenn ich die Befehle manuell eingebe, wird dieser Fehler nicht ausgegeben, aber nach dem Beendenbluetoothctl
wird die Registrierung des Agenten aufgehoben und der Versuch, eine Verbindung herzustellen, schlägt fehl. Wenn ichbluetoothctl
laufe, werde ich gefragt, ob ich der Verbindung vertrauen soll, was nicht so ist,NoInputNoOutput
wie Sie hoffen würden ...NoInputNoOutput
nicht so sehr eine Autorisierungsrichtlinie ist, sondern Teil des Bluetooth-Protokolls, um herauszufinden, welche Art von Autorisierungsmechanismen (z. B. kann eine PIN verwendet werden?) Verfügbar sind.Ich habe gerade eine Neuinstallation von verwendet
2016-09-23-raspbian-jessie-lite.img
, um es ohne zusätzliche Updates zu versuchen. Nein,apt-get update
neinapt-get install bluez-utils
oder so. Dieser einzelne Befehl macht den Pi erkennbar und koppelbar. Ohne einen Agenten, der steuert, wer eine Verbindung herstellen kann, kann jeder:quelle
Raspbian - Jessie
xxxxx.sh
quelle
Ich hatte das gleiche Problem und fand, dass diese Methode funktioniert (RasPi 3, Modell B, Raspbian 9 Stretch).
Ich verwende Raspberry Pi als IoT EDGE-Gerät und benötige es, um Bluetooth-Paaranfragen ohne Intervention zu akzeptieren. Ich habe eine Android-App, die Textinformationen über Bluetooth an den Pi übermittelt, und für meine Problemstellung war ein Android-Gerät erforderlich , um eine Verbindung herzustellen.
Erstens verwende ich keine separaten Bluetooth-Agenten (kein Blueman, tatsächlich musste ich ihn entfernen)
Die .bashrc-Datei wurde unter bearbeitet
Am Ende wurden zwei Befehle hinzugefügt
piscan macht Raspberry Pi Bluetooth auffindbar
sspmode 1 aktiviert "Secure Simple Pairing" (sicheres einfaches Pairing). Dies ist die gleiche Methode, die auch von Ihren Bluetooth-Kopfhörern oder -Lautsprechern verwendet wird (im Grunde Geräte, die kein Display haben, auf dem Sie die PIN bestätigen können). Und da sich diese Befehle in .bashrc befinden, werden sie beim Booten ausgeführt.
Führen Sie das Bluetooth-Skript aus. Paar. Obwohl ich in einem Popup aufgefordert werde, dies zu bestätigen, kann ich mit meiner App Nachrichten zum und vom Pi senden
Hinweis: hci0 ist möglicherweise nicht durchgehend identisch. Es kann sich um hci1 oder hci2 handeln. Überprüfen Sie dies, indem Sie hciconfig auf Ihrer CLI ausführen
Dies ist fast wie eine Erfindung, und ich bin nicht sicher, ob es unbekannte Auswirkungen gibt, aber es funktioniert. Verbesserungen sind willkommen
quelle
Sie können einen Blick auf den Quellcode von EcoDroidLink werfen . Es akzeptiert Bluetooth-Verbindungen, ohne dass Sie sich anmelden müssen.
BEARBEITEN: Auf vielfachen Wunsch finden Sie hier Code-Auszüge des
edl_agent
Moduls, das dies ermöglicht.quelle