能够使用以下方法成功连接我的蓝牙键盘和鼠标:
hcitool scan
sudo hidd --connect AA:BB:CC:DD:EE:FF
但如果我重新启动或打开/关闭设备,我必须通过命令行重新连接。有什么方法可以自动完成此操作吗?
注意:我曾尝试通过 bluez-simple-agent 连接,但从未成功。HIDD 连接是我能够使用的唯一方法。我运行的是 Ubuntu 14.04
答案1
我建议要么做一个初始化启动脚本或者通过内置的“启动应用程序”程序添加它。由于您使用的是 sudo 命令,我相信您需要编辑 sudoers允许该命令而不要求输入密码。 这链接有一些额外的信息。
我们可以编写一个程序来轻松地完成此操作,以便它可以作为应用程序运行吗?
//resetbt.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x;
int attempts = 0;
while(attempts < 20)
{
x = system("hcitool scan");
usleep("500000"); //added a little wait state
printf("%d", x);
if(x != -1 && x == THE_CORRECT_VALUE_OF_X_FOR_SUCCESS_OF_FIRST_COMMAND) //the printf echos a number, check for when its working and when its not. Change the value to be the one it returns when its working
{
system("sudo hidd --connect AA:BB:CC:DD:EE:FF");
exit(EXIT_SUCCESS);
}
attempts++;
}
}
使用 gcc 编译:
gcc resetbt.c -o reset.bin
答案2
我通过再次尝试 bluez 解决了这个问题。原来它最初不起作用的原因是我以错误的顺序运行命令。在 Ubuntu 14.04 上,我在终端中运行:
hcitool dev //Get HCI number
//Press Connect on Device
hcitool scan //Get MAC Address
bluez-simple-agent hci0 MAC_ADDRESS
bluez-test-input connect MAC_ADDRESS
bluez-test-device trusted MAC_ADDRESS yes
我想我在连接之前就已经在运行受信任的程序了,而且无论出于什么原因,我必须先连接我的机器,然后才能信任它。
答案3
旧帖,但我搜索了整个网络以寻找可接受的解决方案。这里就是……快速又简单
创建设备配置文件(/etc/bluetooth/hcid.conf 或 /etc/bluetooth/input.conf)
# nano /etc/bluetooth/hcid.conf
device XX:XX:XX:XX:XX:XX {
name "Wireless Keyboard";
auth enable;
encrypt enable;
}
运行并将此行添加到您的 /etc/rc.local
# hidd --server
现在 hidd 接受来自从属设备的连接。