Como fazer um dispositivo escravo Bluetooth que se conecta automaticamente

Como fazer um dispositivo escravo Bluetooth que se conecta automaticamente

O que estou tentando fazer é um conceito simples: fazer com que o computador Linux seja um dispositivo escravo bluetooth que aceita conexões automaticamente (de um telefone). O objetivo geral é conectar-se automaticamente e transferir dados de um aplicativo de telefone para python no computador Linux. Aqui estão as etapas que considero necessárias:

Primeiro configurei o 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

Preciso então de um agente bluetooth usando Bluetoothctl para fazer a autenticação:

bluetoothctl
discoverable on
pairable on
agent NoInputNoOutput

Preciso então me conectar usando meu telefone. Porém, para conectar, ainda preciso digitar YES no terminal dentro do bluetoothctl. (pede para confirmar o Pin correto). isso é um problema e anula todo o propósito da configuração NoInputNoOutput.

Então posso executar meu programa python que usa Pybluez e a função promote_service. Posso então me conectar a esse serviço a partir do aplicativo de telefone.

Esta é a ordem correta dos eventos? Como posso fazer com que o bluetooth seja autenticado automaticamente? (modificar o código do agente em bluez?)

Obrigado

Responder1

Não sou de forma alguma um especialista neste assunto, prefiro dizer que mal sobrevivi tentando exatamente a mesma coisa por 3 dias. Agora estou desistindo e jogando meu Raspberry Pi na pilha de todos os outros projetos inacabados.

No entanto, acho que meu passeio por este inferno pode ser valioso para você. Tente digitar agent offantes de registrar um novo agente:

bluetoothctl
agent off
agent NoInputNoOutput
discoverable on
pairable on

A execução btmonem um segundo terminal enquanto digita esses comandos deve mostrar um novo agente NoInputNoOutput sendo registrado.

Responder2

tente isto:

bt-agent -c NoInputNoOutput -d

informação relacionada