Linux
無法連接到 PAN 藍牙接入點
我目前正在嘗試在兩個板之間通過藍牙實現 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
有誰知道為什麼不支持網路配置文件?
有解決此錯誤的解決方法嗎?
我終於發現了問題所在。
關於我所做的事情有兩個問題:
- 我將在伺服器端啟用 PAN 後配對
PAN 配置文件由 bt-pan 腳本創建,因此如果在配對完成時 PAN 配置文件不存在,則客戶端不知道遠端設備具有 PAN 配置文件,從而導致錯誤提示上沒有 Connect 方法遠端介面。
- 客戶端應在伺服器端受信任
伺服器只接受受信任設備的連接。如果伺服器啟動配對,則客戶端自動被信任,但是,如果配對是由客戶端發起的,則客戶端不在伺服器端的信任設備列表中,因此在連接時不會被接受,從而導致 Input /輸出錯誤。
伺服器可以在啟動配對後信任客戶端,也可以自行啟動配對。