【发布时间】:2016-04-08 13:41:33
【问题描述】:
我正在使用蓝牙加密狗尝试将信息从 ubuntu 15.04 发送到运行最新 debian jessie 映像的 raspberry pi b+。我只是在关注http://people.csail.mit.edu/albert/bluez-intro/ 教程。我得到了简单的 RFCOMM 和 L2CAP 协议工作。我在运行 SDP 协议时遇到问题。服务器代码是 -
from bluetooth import *
server_sock = BluetoothSocket(RFCOMM)
server_sock.bind(("", PORT_ANY))
server_sock.listen(1)
advertise_service(server_sock, "SampleServer",service_classes=[SERIAL_PORT_CLASS], profiles=[SERIAL_PORT_PROFILE])
client_sock, client_info = server_sock.accept()
print "connection from: ", client_info
client_sock.send("PyBluez server says Hello!")
data = client_sock.recv(1024)
print "received: ", data
client_sock.close()
server_sock.close()
我得到的错误是 -
Traceback (most recent call last):
File "rfcomm-server.py", line 7, in <module>
advertise_service(server_sock, "SampleServer",service_classes=[SERIAL_PORT_CLASS], profiles=[SERIAL_PORT_PROFILE])
File "/usr/lib/python2.7/dist-packages/bluetooth/bluez.py", line 176, in advertise_service
raise BluetoothError (str (e))
bluetooth.btcommon.BluetoothError: (13, 'Permission denied')
这是我采取的一些步骤-
Add the user 'pi' to lp group
run piscan on hciconfig hci0
Add --compat option to bluetoothd in bluetooth.service
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
你试过以root身份运行吗?
-
我应该打自己的头。有时解决方案就是这么简单!
-
如果
pip安装在用户本地,则以 root 身份运行将不起作用。解决这个问题的最简单方法是sudo chmod o+rw /var/run/sdp。从这里开始,相应地改进它。没有嗡嗡声。这是直接的解决方案。