对于使用 PyBluez 的蓝牙连接,即使配对后套接字连接也未被接受

For bluetooth connection using PyBluez, socket connection is not getting accepted even after pairing

我有一个使用 Rasbian OS 启动的 Raspberry pi 模型 B,并插入了一个蓝牙加密狗。从我的 PC 搜索时,我能够发现我的 pi,并且能够使用 Blueman GUI 进行配对。这是我用于配对过程的 python 程序:

from bluetooth import *

server_sock=BluetoothSocket(L2CAP)
server_sock.bind(("", 17))

with open(sys.path[0] + "/sdp_record.xml", "r") as fh:
        service_record = fh.read()
self.bus = dbus.SystemBus()
self.manager = dbus.Interface(self.bus.get_object("org.bluez", "/"),"org.bluez.Manager")
adapter_path = self.manager.DefaultAdapter()
self.service = dbus.Interface(self.bus.get_object("org.bluez",adapter_path),
                                                       "org.bluez.Service")
service_handle = service.AddRecord(service_record)
print "Service record added"
server_sock.listen(1)

print("Waiting for connection on L2CAP")

try:
    client_sock, client_info = server_sock.accept()
    print("Accepted connection from ", client_info)

    while True:
        data = client_sock.recv(1024)
        if len(data) == 0:
                break
        print("received [%s]" % data)
except IOError:
    pass
except KeyboardInterrupt:
    print "Stopping..."
    stop_advertising(server_sock)
    sys.exit()  

print("disconnected")

client_sock.close()
server_sock.close()
print("all done")

我已经有一个工作的 SDP 记录,正在读取它并将其添加到 SDP 服务器。 起初当我发布这个问题时我得到了这个错误:

Traceback (most recent call last):
  File "pytest.py", line 4, in <module>
    server_sock.bind(("", 17))
  File "/usr/lib/python2.7/dist-packages/bluetooth/bluez.py", line 140, in bind
    return self._sock.bind (addrport)
_bluetooth.error: (13, 'Permission denied')

这是因为蓝牙需要root权限。我 运行 python 代码使用 sudo python code.py 并且此错误已解决。非常感谢回答的人。

现在我遇到的问题是,即使配对后套接字连接也未被接受。对于配对,我 运行 一个终端中的代码,当它是 waiting for connection on L2CAP 时,我打开另一个控制台并使用命令 sudo bluez-simple-agent hci0 computers_macaddress 将 pi 与我的计算机配对,进入后配对pi 和计算机中的一个 pin。但是配对后,代码还在等待连接:

Service record added
Waiting for connection on L2CAP

它似乎在 server_sock.accept() 函数处循环。

谁能给个解决办法?

我也遇到了同样的问题。问题出在 pi 的运行能力上。 USB端口通常只提供500 mA, 5 V。 Raspberry pi 需要大约 4.75 to 5.25V 的电压源和 700 to 1000 mA 范围内的电流以获得最佳性能。 Raspberry Pi 需要多少电流 (mA) 取决于您连接的是什么。尝试更换电源,通过 1000 mA 5v 适配器获取电源。 让我知道它是否有效。