我试图通过蓝牙发送和接收串行命令。我安装了pyBluez库。问题是,虽然存在rfcomm.conf,但/dev/目录中没有rfcomm0。我重新启动但没有改变。
如果运行以下操作,将获得拒绝权限错误。
sudo echo "This is a test" > /dev/rfcomm0为什么在连接usb蓝牙模块之后,rfcomm不自动添加到/dev?蓝牙模块是兼容的,我可以通过命令行扫描和查找设备。布卢兹和布卢兹已经安装好了。
发布于 2017-12-10 23:05:48
即使蓝牙服务已经启动,/dev/rfcomm0设备也不会自动出现。
至少,蓝牙子系统需要知道蓝牙设备的地址及其上的信道,以便特定的/dev/rfcomm*设备名称可以绑定到特定的蓝牙device+channel组合。
您可以使用rfcomm bind 0 <bdaddr> [channel]为/dev/rfcomm0进行绑定。如果不指定频道号,默认情况下将使用通道1。如果您的rfcomm版本仍然支持/etc/bluetooth/rfcomm.conf文件,并且您有写入它的/dev/rfcomm0的地址和通道信息,那么您可以从命令中省略地址和通道信息--但是仍然需要使用该命令来进行绑定。
较新版本的BlueZ工具似乎不再记录/etc/bluetooth/rfcomm.conf文件。可能您必须始终使用rfcomm bind命令的完整形式来设置绑定。您可能需要将这些命令添加到/etc/rc.local或某些自定义启动脚本中,以使它们在启动时自动执行,因为关联不会在重新启动过程中持续存在。
BlueZ内部的最后一次重大重建似乎使我们失去了一些与RFCOMM相关的特性,比如/etc/bluetooth/rfcomm.conf文件。但是至少rfcomm命令仍然可用,并且可以完成这项工作。
发布于 2015-07-18 16:16:04
为什么这不是自动完成的?首先,蓝牙服务需要启动一个守护进程,如果它不在init列表中,则必须进入终端并手动启动它,直到重新配置init列表才能包含它。
这样做的原因是,在您承诺在计算机上将其全部自动化之前,可以测试您的配置。这背后的理由是基于Unix关于操作系统应该如何工作、用户和组如何分配通信权等概念。
https://unix.stackexchange.com/questions/128531
复制相似问题