无法连接到 PAN 蓝牙接入点

无法连接到 PAN 蓝牙接入点

我目前正在尝试通过蓝牙在两个板之间实现 PAN 连接。

第一个板是 Raspberry Pi Zero,第二个板是基于 Atmel Sama5d2 的定制板。
主板分别运行 Linux 4.9.75+ 和 Linux 4.9.30,并使用 BlueZ v5.43 和 BlueZ v5.46。

我可以使用两个板连接到手机的系留蓝牙连接BT-泛脚本。

这是与我手机的有线连接的连接痕迹

# 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

这是我到目前为止所做的(使用 rpi 作为客户端和自定义板作为服务器):

板已配对

服务器端

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

客户端

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

在服务器端设置桥接接口

#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

在服务器端启动 bt-pan 脚本作为服务器

#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

在客户端作为客户端启动 bt-pan 脚本

# 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

据我了解,我的蓝牙设备似乎没有导出Connect接口的方法org.bluez.Network1

有谁知道为什么不支持网络配置文件?
有解决方法来解决此错误吗?

答案1

我终于知道问题出在哪里了。

我所做的有两个问题:

1. 我将在服务器端启用 PAN 后进行配对

PAN 配置文件由 bt-pan 脚本创建,因此如果配对完成时 PAN 配置文件不存在,则客户端不知道远程设备具有 PAN 配置文件,从而导致错误提示远程设备上没有 Connect 方法远程接口。

2. 服务器端应信任客户端

服务器仅接受受信任设备的连接。如果服务器发起配对,则客户端会自动受到信任,但是,如果配对是由客户端发起的,则客户端不在服务器端的受信任设备列表中,因此连接时不会被接受,从而导致输入/输出错误。

服务器可以在启动配对后信任客户端,也可以自行启动配对。

相关内容