bluetoothctl到hcitool等价的命令

在Linux中,我曾经使用“hidd -connect mmac”来连接BT设备,但现在已经不在Bluez5中。 我可以使用bluetoothctl手动build立连接,但我需要从我的应用程序使用这些命令,使用bluetoothctl将是困难的。

什么是hcitool等效命令做bluetoothctl做什么?

例如,我会inputbluetoothctl:

select <cmac> scan on trust <mmac> pairable on pair <mmac> connect <mmac> 

我可以使用“hcitool扫描”进行扫描,但我还没有想出连接。 我试过使用“hcitool cc mmac”后面跟“hcitool auth mmac”,但没有任何工作。

或者可以hcitool做bluetoothctl做的事情?

我从这样的脚本使用bluetoothctl

 #!/bin/bash bluetoothctl << EOF power on EOF 

并且可以将多个命令指定为每行一个命令。

奇怪的是,这适合我:

 echo "power on" | bluetoothctl 

(我正在使用bluez-5.21-r1 – 不确定这是否取决于版本)

你可以像这样传递命令给bluetoothctl:

 echo -e 'power on\nquit' | bluetoothctl 

你甚至可以使用标签来自动完成:

 echo -e 'power on\nconnect \t \nquit' | bluetoothctl 

我没有把这个作为对伊日答案的评论,所以更加明显。

另一个解决方案(我认为最好的)是使用期望的TCL脚本bluetoothctl。

我用它来自动连接到蓝牙设备使用bluetoothctl,而无需与它进行交互。

例如连接到由其MAC地址标识的设备

 #!/usr/bin/expect -f set address [lindex $argv 0] set prompt "#" log_user 0 spawn bluetoothctl expect $prompt send -- "remove $address\r" expect $prompt send -- "scan on\r" expect "Discovery started" sleep 10 send -- "scan off\r" expect "Discovery stopped" expect $prompt send -- "trust $address\r" expect "trust succeeded" expect $prompt send -- "pair $address\r" expect "Pairing successful" expect "Device $address Connected: no" expect $prompt send -- "connect $address\r" expect "Connection successful" expect $prompt send "quit\r" expect "eof" 

您可以像这样启动这个脚本./myExpectScript <MAC_addr>如果您想查看输出,只需将log_user值设置为1