non - linux pair bluetooth command line



Configurare l'accoppiamento automatico Bluetooth su Linux (1)

Voglio utilizzare qualsiasi telefono cellulare per connettersi a un dispositivo IoT tramite Bluetooth Classic con il protocollo della porta seriale (SPP). Il dispositivo IoT non ha schermo e non ha tastiera, e dovrebbe accettare automaticamente le connessioni finché il telefono di connessione conosce un PIN segreto (cioè, non voglio essere forzato a ssh nel dispositivo IoT per impostare l'accoppiamento ogni volta un nuovo telefono tenta di connettersi).

Questi sono i comandi che ho eseguito finora sul dispositivo IoT:

# Make the device discoverable:
hciconfig hci0 piscan

# Register SPP:
sdptool add --channel=22 SP

# Start rfcomm:
rfcomm -r watch /dev/rfcomm0 22

Purtroppo, non sono riuscito a trovare un modo per impostare un PIN e l'associazione non riesce quando tento di connettermi con un telefono cellulare. Inoltre, il dispositivo è rilevabile solo per un breve intervallo.

Come configurare lo stack Bluetooth del dispositivo IoT (che esegue un Bluez recente) per eseguire l'accoppiamento automatico con qualsiasi telefono che conosca un determinato PIN e come posso rendere eterno il periodo di rilevamento?


È possibile eseguire un'applicazione che implementa l'API BlueZ DBus. Raccomando BlueZ> = 5.42. Utilizza l'interfaccia agente e implementa il tuo codice PIN. Dopo aver registrato il tuo agente, bluez chiamerà automaticamente e utilizzerà il tuo agente quando viene richiesto un accoppiamento.

Inoltre, puoi impostare DiscoverableTimeout su 0 tramite DBus con l'interfaccia org.bluez.Adapter1.

"Un valore pari a zero significa che il timeout è disabilitato e rimarrà per sempre in modalità rilevabile / limitata."

https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/adapter-api.txt (doc dell'oggetto adattatore dbus) https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/agent-api.txt (doc dell'oggetto agente dbus) https://kernel.googlesource.com/pub/scm/bluetooth/bluez/+/5.44/test/simple-agent (esempio) http://www.bluez.org/bluez-5-api-introduction-and-porting-guide/ (leggi in fondo)