rfcomm蓝牙许可被拒绝错误树莓派 [英] rfcomm bluetooth permission denied error raspberry pi

查看:502
本文介绍了rfcomm蓝牙许可被拒绝错误树莓派的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用蓝牙软件狗尝试将信息从ubuntu 15.04发送到运行最新的debian jessie映像的raspberry pi b +.我只是关注 http://people.csail.mit.edu/albert/bluez-intro/教程.我得到了简单的RFCOMM和L2CAP协议.我在运行SDP协议时遇到问题.服务器代码是-

I'm using a bluetooth dongle to try and send information from ubuntu 15.04 to raspberry pi b+ running the latest debian jessie image. I'm just following the http://people.csail.mit.edu/albert/bluez-intro/ tutorial. I got the simple RFCOMM and L2CAP protocols working. I'm having trouble running the SDP protocol. The server code is -

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')

这是我已采取的一些步骤-

Here are some steps I have taken-

Add the user 'pi' to lp group
run piscan on hciconfig hci0
Add --compat option to bluetoothd in bluetooth.service

任何帮助将不胜感激.谢谢!

Any help would be appreciated. Thanks!

推荐答案

以root身份运行脚本可以,但是

Running your script as root kinda works, but it's not a good practice.

根据此线程,您只需要调整权限即可/var/run/sdp文件(使用--compat开关创建的).

According to this thread, you just need to adjust permissions to the /var/run/sdp file (which is created when using the --compat switch).

因此,为了防止链接腐烂,我正在复制dlech的帖子,并将其改编为Raspberry Pi:

So, to prevent link rot I'm reproducing dlech's post and adapting it to Raspberry Pi:

  1. 确保您的pi用户属于bluetooth组:

$ cat /etc/group | grep bluetooth
bluetooth:x:113:pi

1.1.如果不是,请将pi添加到bluetooth组:

1.1. If it's not, add pi to bluetooth group:

$ sudo usermod -G bluetooth -a pi

  • 更改/var/run/sdp文件的组:

  • Change group of the /var/run/sdp file:

    $ sudo chgrp bluetooth /var/run/sdp
    

  • 要使更改在重启后永久存在:

  • To make the change persistent after reboot:

    3.1.创建具有以下内容的文件/etc/systemd/system/var-run-sdp.path:

    3.1. Create file /etc/systemd/system/var-run-sdp.path with the following content:

    [Unit]
    Descrption=Monitor /var/run/sdp
    
    [Install]
    WantedBy=bluetooth.service
    
    [Path]
    PathExists=/var/run/sdp
    Unit=var-run-sdp.service
    

    3.2.还有另一个文件/etc/systemd/system/var-run-sdp.service:

    3.2. And another file, /etc/systemd/system/var-run-sdp.service:

    [Unit]
    Description=Set permission of /var/run/sdp
    
    [Install]
    RequiredBy=var-run-sdp.path
    
    [Service]
    Type=simple
    ExecStart=/bin/chgrp bluetooth /var/run/sdp
    

    3.3.最后,开始一切:

    3.3. Finally, start it all up:

    sudo systemctl daemon-reload
    sudo systemctl enable var-run-sdp.path
    sudo systemctl enable var-run-sdp.service
    sudo systemctl start var-run-sdp.path
    

  • 信用归用户 dlech 最初是弄清楚"的用户.

    Credit goes to user dlech who "figured it out" originally.

    这篇关于rfcomm蓝牙许可被拒绝错误树莓派的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆