Atualizar
Parece possível emparelhar e se comunicar com o módulo sem usando um pin, mas até agora usando apenas gatttool
. Ainda estou aprendendo sobre o BLE, e não está claro se esse é um recurso normal (por exemplo, um modo padrão de baixa segurança) ou se os módulos que estou usando (serial BLE estilo JDY-08 / BT05 / HM-10) pode ser não compatível e simplesmente não usar o pino como definido.
Através da ferramenta de conexão padrão no Ubuntu Mate
Estou executando o Ubuntu Mate em um Lenovo P50. Eu estou explorando um módulo BT05 BLE, mas não consigo me conectar ao dispositivo devido ao que eu acho que pode ser um bug no Ubuntu. Os passos que estou tomando para conectar o dispositivo são:
- No menu bluetooth, selecione "Configurar novo dispositivo".
- eu seleciono o dispositivo da lista
- e prossiga, selecionando "parear dispositivo"
- Uma tela dizendo "Emparelhamento em andamento ..." é exibida.
- Após alguns minutos, a mensagem muda para "Falha ao adicionar dispositivo".
- Em nenhum momento sou solicitado a inserir o código PIN de 6 dígitos necessário para o pareamento.
O pino é personalizado e não pode ser inferido pelo sistema operacional (não é necessário forçar 10 ^ 6 possibilidades), então eu preciso ser capaz de inseri-lo ao conectar ao dispositivo. Esta questão pode estar relacionada. Os comandos encontrado aqui é uma solução possível, mas até hoje não existe nenhum método de comunicação com dispositivos bluetooth através da interface gráfica do usuário.
Via bluetoothctl
bluetoothctl
afirma se conectar (sem usar o pino personalizado). ( esta questão é útil para entender o que o bluetoothctl
está fazendo). No entanto, não parece possível ler / gravar as características quando o dispositivo é emparelhado?
φ bluetoothctl
[bluetooth]# agent on
Agent registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]# scan on
[NEW] Device [address] [name]
[bluetooth]# scan off
[bluetooth]# pair [address]
Attempting to pair with [address]
[CHG] Device [address] Paired: yes
Pairing successful
[name]# info [address]
Device [address]
Name: [name]
Alias: [name]
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Generic Access Profile ([ID1])
UUID: Generic Attribute Profile ([ID2])
UUID: Device Information ([ID3])
UUID: Unknown ([ID4])
Modalias: bluetooth:[number]
[name]# list-attributes
[no attributes]
Com base, por exemplo, em este tutorial, Espero que as características e os atributos fiquem disponíveis após o emparelhamento.
Via hcitool
e gatttool
Eu sou capaz de se conectar aos módulos e acessar as propriedades relevantes usando os comandos hcitool
e gatttool
. Isso também é sem um alfinete.
φ sudo hcitool -i hci0 lescan --duplicates | grep 'earlybird'
[ADDRESS] [NAME]
φ gatttool -i hci0 -b [ADDRESS] -I
[ADDRESS][LE]> connect
Attempting to connect to [ADDRESS]
Connection successful
[ADDRESS][LE]> primary
attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0022 uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x0023, end grp handle: 0xffff uuid: 0000ffe0-0000-1000-8000-00805f9b34fb
[ADDRESS][LE]> included
No included services found for this range
[ADDRESS][LE]> characteristics
handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
...
handle: 0x0024, char properties: 0x1e, char value handle: 0x0025, uuid: 0000ffe1-0000-1000-8000-00805f9b34fb