So erstellen Sie ein Bluetooth-Slave-Gerät, das automatisch eine Verbindung herstellt

So erstellen Sie ein Bluetooth-Slave-Gerät, das automatisch eine Verbindung herstellt

Was ich versuche, ist vom Konzept her einfach: Den Linux-Computer zu einem Bluetooth-Slave-Gerät machen, das automatisch Verbindungen (von einem Telefon) akzeptiert. Das Gesamtziel besteht darin, automatisch eine Verbindung herzustellen und Daten von einer Telefon-App an Python auf dem Linux-Computer zu übertragen. Hier sind die Schritte, die meiner Meinung nach erforderlich sind:

Ich habe zuerst den Bluetooth-Adapter mit hciconfig eingerichtet:

sudo hciconfig hci0 noauth
sudo hciconfig hci0 name thisdevice
sudo hciconfig hci0 lm SLAVE
sudo hciconfig hci0 lm ACCEPT
sudo hciconfig hci0 sspmode 1
sudo hciconfig hci0 reset
sudo hciconfig hci0 piscan

Ich brauche dann einen Bluetooth-Agenten, der Bluetoothctl verwendet, um die Authentifizierung durchzuführen:

bluetoothctl
discoverable on
pairable on
agent NoInputNoOutput

Ich muss dann eine Verbindung über mein Telefon herstellen. Um eine Verbindung herzustellen, muss ich jedoch im Terminal innerhalb von bluetoothctl immer noch JA eingeben. (Es fordert zur Bestätigung des richtigen Pins auf.) Dies ist ein Problem und macht den gesamten Zweck der Einstellung „NoInputNoOutput“ zunichte.

Dann kann ich mein Python-Programm ausführen, das Pybluez und die Funktion advertise_service verwendet. Ich kann dann über die Telefon-App eine Verbindung zu diesem Dienst herstellen.

Ist das die richtige Reihenfolge der Ereignisse? Wie kann ich die Bluetooth-Authentifizierung automatisch durchführen? (Den Agentencode in Bluez ändern?)

Danke

Antwort1

Ich bin auf diesem Gebiet keineswegs ein Experte. Ich würde eher sagen, dass ich es gerade so geschafft habe, drei Tage lang genau dasselbe zu versuchen. Ich gebe jetzt auf und werfe meinen Raspberry Pi auf den Stapel aller anderen unvollendeten Projekte.

Ich denke jedoch, dass meine Tour durch diese Hölle für Sie von Wert sein könnte. Geben Sie Folgendes ein, agent offbevor Sie einen neuen Agenten registrieren:

bluetoothctl
agent off
agent NoInputNoOutput
discoverable on
pairable on

Wenn Sie diese Befehle auf einem zweiten Terminal ausführen btmonund gleichzeitig eingeben, sollte angezeigt werden, dass ein neuer NoInputNoOutput-Agent registriert wird.

Antwort2

Versuche dies:

bt-agent -c NoInputNoOutput -d

verwandte Informationen