Linux

無法連接到 PAN 藍牙接入點

  • May 8, 2019

我目前正在嘗試在兩個板之間通過藍牙實現 PAN 連接。

第一個板是 Raspberry Pi Zero,第二個板是基於 Atmel Sama5d2 的定制板。

主機板分別執行 Linux 4.9.75+ 和 Linux 4.9.30 並使用 BlueZ v5.43 和 BlueZ v5.46。

我可以使用bt-pan腳本連接到我手機的藍牙連接與兩個板。

這是連接到我手機的系留連接的痕跡

# 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. 我將在伺服器端啟用 PAN 後配對

PAN 配置文件由 bt-pan 腳本創建,因此如果在配對完成時 PAN 配置文件不存在,則客戶端不知道遠端設備具有 PAN 配置文件,從而導致錯誤提示上沒有 Connect 方法遠端介面。

  1. 客戶端應在伺服器端受信任

伺服器只接受受信任設備的連接。如果伺服器啟動配對,則客戶端自動被信任,但是,如果配對是由客戶端發起的,則客戶端不在伺服器端的信任設備列表中,因此在連接時不會被接受,從而導致 Input /輸出錯誤。

伺服器可以在啟動配對後信任客戶端,也可以自行啟動配對。

引用自:https://unix.stackexchange.com/questions/424122