Cómo hacer un dispositivo esclavo Bluetooth que se conecte automáticamente

Cómo hacer un dispositivo esclavo Bluetooth que se conecte automáticamente

Lo que estoy tratando de hacer es simple en concepto: hacer que la computadora Linux sea un dispositivo esclavo bluetooth que acepte conexiones automáticamente (desde un teléfono). El objetivo general es conectarse automáticamente y transferir datos desde una aplicación de teléfono a Python en la computadora Linux. Estos son los pasos que creo que son necesarios:

Primero configuré el adaptador bluetooth usando hciconfig:

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

Luego necesito un agente bluetooth que use Bluetoothctl para realizar la autenticación:

bluetoothctl
discoverable on
pairable on
agent NoInputNoOutput

Luego necesito conectarme usando mi teléfono. Sin embargo, para poder conectarme, aún debo escribir SÍ en el terminal dentro de bluetoothctl. (pide confirmar el Pin correcto). esto es un problema y anula todo el propósito de la configuración NoInputNoOutput.

Luego puedo ejecutar mi programa Python que usa Pybluez y la función publicidad_servicio. Luego puedo conectarme a ese servicio desde la aplicación del teléfono.

¿Es este el orden correcto de los acontecimientos? ¿Cómo puedo hacer que el bluetooth se autentique automáticamente? (¿modificar el código de agente en bluez?)

Gracias

Respuesta1

De ninguna manera soy un experto en este tema, más bien diría que apenas sobreviví intentando exactamente lo mismo durante 3 días. Ahora me estoy rindiendo y tirando mi Raspberry Pi a la pila de todos los demás proyectos sin terminar.

Sin embargo, creo que mi recorrido por este infierno podría resultarle valioso. Intente escribir agent offantes de registrar un nuevo agente:

bluetoothctl
agent off
agent NoInputNoOutput
discoverable on
pairable on

La ejecución btmonen una segunda terminal mientras se escriben esos comandos debería mostrar que se está registrando un nuevo agente NoInputNoOutput.

Respuesta2

prueba esto:

bt-agent -c NoInputNoOutput -d

información relacionada