Não é possível conectar-se ao ponto de acesso do bluetooth PAN

3

Atualmente, estou tentando implementar uma conexão PAN via bluetooth entre duas pastas.

A primeira placa é uma Raspberry Pi Zero e a segunda uma custom baseada no Atmel Sama5d2.
As placas estão executando respectivamente o Linux 4.9.75+ e o Linux 4.9.30 e usando o BlueZ v5.43 e o BlueZ v5.46.

Consigo me conectar à conexão Bluetooth do meu telefone com as duas placas usando bt-pan script.

Aqui está o traçado de uma conexão com a conexão vinculada do meu telefone

# bt-pan --debug client 60:45:CB:2F:C6:4C --wait
DEBUG:root:Using local device (addr: B8:27:EB:20:54:45): /org/bluez/hci0
DEBUG:root:Using remote device (addr: 60:45:CB:2F:C6:4C): /org/bluez/hci0/dev_60_45_CB_2F_C6_4C
DEBUG:root:Connected to network (dev_remote: /org/bluez/hci0/dev_60_45_CB_2F_C6_4C, addr: 60:45:CB:2F:C6:4C) uuid 'nap' with iface: bnep0

Aqui está o que eu fiz até agora (usando rpi como cliente e quadro personalizado como servidor):

As pastas estão emparelhadas

Lado do servidor

[bluetooth]# paired-devices
Device B8:27:EB:20:54:45 raspberrypi[/code]

Lado do cliente

[bluetooth]# paired-devices
Device 00:16:A4:0A:15:13 BlueZ 5.46

Configurar interface de ponte no lado do servidor

#brctl addbr bnep0
#brctl setfd bnep0 0
#brctl stp bnep0 off
#ip addr add 10.5.0.5/255.255.0.0 dev bnep0
#ip link set bnep0 up

Inicie o script bt-pan como servidor no lado do servidor

#bt-pan --debug server bnep0
DEBUG:root:Using local device (addr: 00:16:A4:0A:15:13): /org/bluez/hci0
DEBUG:root:Registered uuid 'nap' with bridge/dev: bnep0 / 00:16:A4:0A:15:13

Inicie o script bt-pan como cliente no lado do cliente

# bt-pan --debug client 00:16:A4:0A:15:13 --wait
DEBUG:root:Using local device (addr: B8:27:EB:20:54:45): /org/bluez/hci0
DEBUG:root:Using remote device (addr: 00:16:A4:0A:15:13): /org/bluez/hci0/dev_00_16_A4_0A_15_13
Traceback (most recent call last):
  File "/usr/bin/bt-pan", line 238, in <module>
    if __name__ == '__main__': sys.exit(main())
  File "/usr/bin/bt-pan", line 210, in main
    try: iface = net.Connect(opts.uuid)
  File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 145, in __call__
    **keywords)
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 651, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method "Connect" with signature "s" on interface "org.bluez.Network1" doesn't exist

Pelo que entendi, parece que meu dispositivo Bluetooth não exporta o método Connect para a interface org.bluez.Network1

Alguém sabe por que o perfil de rede não é suportado?
Existe uma solução alternativa para resolver esse erro?

    
por Arkaik 14.02.2018 / 13:57

1 resposta

3

Eu finalmente descobri qual era o problema.

Houve duas questões sobre o que fiz:

1. Vou emparelhar DEPOIS de ativar o PAN no lado do servidor

O perfil PAN é criado pelo script bt-pan, portanto, se o perfil PAN não existia quando o pareamento foi concluído, o cliente não está ciente de que o dispositivo remoto tem um perfil PAN resultando em um erro dizendo que não há Connect método na interface remota.

2. Cliente deve ser confiável no lado do servidor

O servidor aceita apenas a conexão de dispositivos confiáveis. Se o servidor iniciou o emparelhamento, o cliente é automaticamente confiável, no entanto, se o emparelhamento foi iniciado pelo cliente, o cliente não está na lista de dispositivos confiáveis no lado do servidor, portanto não será aceito na conexão, resultando em uma Entrada / Erro de saída.

O servidor pode confiar no cliente depois de iniciar o emparelhamento ou pode iniciar o emparelhamento em si.

    
por 06.06.2018 / 11:37