【发布时间】:2013-10-09 14:16:39
【问题描述】:
我正在尝试与运行 Ubuntu Linux 的 Beaglebone Black 中的汽车 OBDII 蓝牙设备配对,但运气不佳。
最初我可以使用 bluez-simple-agent 设置 hci0,尽管它从未要求我输入 PIN。此设备的 PIN 应该是“1234”。现在,当我运行 bluez-simple-agent 时,我得到了这个:
ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo bluez-simple-agent hci0 00:0D:18:A0:4E:35
Creating device failed: org.bluez.Error.AlreadyExists: Already Exists
如果它工作正常就好了,但是当我尝试使用 rfcomm 进行绑定时,我反复收到“无法连接 RFCOMM 套接字:无效交换”(重新启动设备后的第一次)然后“不能此后每次都连接 RFCOMM 套接字:连接被拒绝。
这是我的 /etc/bluetooth/rfcomm.conf 文件:
rfcomm0 {
# Automatically bind the device at startup
bind no;
# Bluetooth address of the device
device 00:0D:18:A0:4E:35;
# RFCOMM channel for the connection
channel 16;
# Description of the connection
comment "OBDII";
}
并且运行“rfcomm bind 0”确实成功地在 /dev/rfcomm0 创建了一个设备:
rfcomm0: 00:0D:18:A0:4E:35 channel 16 clean
但是,尝试从 /dev/rfcomm0 读取数据时,我得到了这个:
ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo cat /dev/rfcomm0
cat: /dev/rfcomm0: Invalid exchange
ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo cat /dev/rfcomm0
cat: /dev/rfcomm0: Connection refused
ubuntu@ubuntu-armhf:/etc/bluetooth$
然后,rfcomm 返回:
ubuntu@ubuntu-armhf:/etc/bluetooth$ rfcomm
rfcomm0: 00:0D:18:A0:4E:35 channel 16 closed
根据“sdptool 记录”的结果,我认为我使用了正确的通道 (16)
ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo sdptool records 00:0D:18:A0:4E:35
...
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 16
Profile Descriptor List:
"Serial Port" (0x1101)
Version: 0x0100
任何帮助都将不胜感激,因为我现在完全没有想法。
参考:
- rfcomm
- Manually Using BluetoothRFCOMM
- How to Set Up Bluetooth 蓝牙串口连接
- The device
【问题讨论】:
-
关于发现错误为“创建设备失败:org.bluez.Error.AlreadyExists:已经存在”,因为设备已经创建,请尝试使用这些 dbus 命令删除该设备 1. dbus-send --system --type=method_call --print-reply --dest=org.bluez "/org/bluez/bluetooth_PID/hci0"org.bluez.Adapter.GetProperties 2. dbus-send --system --type=method_call --print-reply --dest=org.bluez "/org/bluez/3858/hci0" org.bluez.Adapter.RemoveDevice objpath:"/org/bluez/3858/hci0/dev_00_0D_18_A0_4E_35" ,在此之后尝试再次配对代理实用程序。
标签: ubuntu bluetooth bluez beagleboneblack elm327