Sid*_*ter 10 python bluetooth bluez pybluez
我在python中尝试蓝牙编程.它一直工作到昨天.今天早上有停电,由于某种原因,蓝牙模块被禁用,无法打开.所以,我做了一个sudo hciconfig hci0 reset,然后打开它.从那时起,最简单的程序无法执行.就拿这一次的例子.它卡在advertise_service中bluetooth模块中并抛出以下错误(仅供参考:virtualenv在这里不是问题.系统范围的python也做同样的事情).
Traceback (most recent call last):
File "bt.py", line 17, in <module>
advertise_service( server_sock, "SampleServer", service_id = uuid, service_classes = [ uuid, SERIAL_PORT_CLASS ], profiles = [ SERIAL_PORT_PROFILE ])
File "/home/machinename/.virtualenvs/py27/local/lib/python2.7/site-packages/bluetooth/bluez.py", line 242, in advertise_service
raise BluetoothError (str (e))
bluetooth.btcommon.BluetoothError: (2, 'No such file or directory')
Run Code Online (Sandbox Code Playgroud)
有时在编译和重新安装Bluez驱动程序时出现了不同的错误:
Traceback (most recent call last):
File "build/bdist.linux-x86_64/egg/bluetooth/bluez.py", line 268, in advertise_service
bluetooth.btcommon.BluetoothError: error no advertisable device.
Run Code Online (Sandbox Code Playgroud)
但所有这些在这台机器之前就像一个魅力; 事实上,当我写这篇文章的时候,所有的程序都可以和我的其他ubuntu(14.04LTS)机器一起工作.我检查了源代码,并追溯到一个_bluetooth.so文件 - 这是一个编译的代码,因此我无法弄清楚该做什么.
任何指针都将受到高度赞赏.
Sid*_*ter 20
此错误是由于BlueZ 5和SDP的不兼容问题引起的 bluetoothd
确保运行时出现sdptool browse local以下错误:
Failed to connect to SDP server on FF:FF:FF:00:00:00: No such file or directory
Run Code Online (Sandbox Code Playgroud)
事实证明,罪魁祸首是bluetoothd蓝牙守护进程.bluetoothd由于某些愚蠢的原因,使用SDP 需要弃用功能,因此要解决此问题,必须在兼容模式下使用bluetoothd -C(或bluetooth --compat)启动守护程序.
查找位置bluetooth.service:
systemctl status bluetooth.service
Run Code Online (Sandbox Code Playgroud)
然后编辑bluetooth.service并查找
ExecStart=/usr/libexec/bluetooth/bluetoothd
Run Code Online (Sandbox Code Playgroud)
追加--compat到此行的末尾,保存,然后运行
service bluetooth start
Run Code Online (Sandbox Code Playgroud)
如果一切顺利,您应该能够成功运行
sudo sdptool browse local
Run Code Online (Sandbox Code Playgroud)
最后,重置适配器:
sudo hciconfig -a hci0 reset
Run Code Online (Sandbox Code Playgroud)
事情应该现在正常
只是为了让人们知道,我相信最新的BlueZ版本在我的系统中被破坏了.我下载,编译并安装了5.35版本,但没有任何工作.我拨打了5.34,仍然一样.我还注意到蓝牙适配器在启用它后3-4分钟自动关闭,
sudo hciconfig hci0 up # hci0 is the bt adapter
Run Code Online (Sandbox Code Playgroud)
我用一个USB蓝牙加密狗测试.它没有像内置适配器那样自动下降,但问题仍然存在.然后我apt-get以前重新安装bluez,
apt-get install --reinstall bluez
Run Code Online (Sandbox Code Playgroud)
突然间,一切都恢复了正常.
| 归档时间: |
|
| 查看次数: |
7461 次 |
| 最近记录: |