我在嵌入式 Linux 系统上通过串行蓝牙连接到手机时遇到问题。以下是我尝试建立连接所采取的步骤。 (请注意,我可以使用 bluetoothctl 很好地配对和连接)
操作系统:Linux nut6x 4.1.15-2.0.0-ga+yocto+g651db0b #1 SMP 抢占 2 月 16 日星期四 15:53:27 PST 2017 armv7l armv7l armv7l GNU/Linux
root@embeddedsystem:~# echo 0 > /sys/class/rfkill/rfkill0/state
root@embeddedsystem:~# echo 1 > /sys/class/rfkill/rfkill0/state
root@embeddedsystem:~# hciattach -t 30 -s 115200 /dev/ttymxc2 texas 3000000 flow
Found a Texas Instruments' chip!
Firmware file : /lib/firmware/ti-connectivity/TIInit_7.6.15.bts
Loaded BTS script version 1
texas: changing baud rate to 3000000, flow control to 1
Bluetooth: HCI UART driver ver 2.3
Bluetooth: HCI UART protocol H4 registered
Bluetooth: HCI UART protocol LL registered
Device setup complete
root@embeddedsystem:~# hciconfig hci0 up
root@embeddedsystem:~# hciconfig hci0 sspmode 1 //simple pairing
//Enable controller
root@embeddedsystem:~# bluetoothctl
[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# default-agent
[bluetooth]# quit
root@embeddedsystem:~# rfcomm bind /dev/rfcomm0 AA:AA:AA:AA:AA:AA 22
root@embeddedsystem:~# sdptool add --channel=22 SP //Serial port on channel 22
root@embeddedsystem:~# rfcomm //check to see if channel is ok
rfcomm0: AA:AA:AA:AA:AA:AA channel 22 clean
root@embeddedsystem:~# rfcomm connect /dev/rfcomm0 AA:AA:AA:AA:AA:AA 22
Can't connect RFCOMM socket: Connection refused
这就是我被困住的地方。我不知道为什么当我使用 bluetoothctl 可以毫无问题地连接时连接被拒绝(在我的手机上确认)。我花了一段时间才到达这里,所以我不太确定 bluetoothctl 和 rfcomm 之间有什么区别。经过摸索,我发现您需要使用 rfcomm 来获得串行连接。我想做的就是使用命令行从手机中获取手机联系人。我想我也在问是否可以在不使用 rfcomm 而是通过 bluetoothctl 连接的情况下获取我的手机联系人。
PS 如果有人知道如何通过命令行从我的手机中获取文件而不使用 OBEX,我也会很感激!