我有一个Raspberry Pi 2运行Raspbian内核4.1.15和Bluez版本5.23。
我希望能够将设备(如Android手机)连接到rapsberry,rapsberry应该接受连接而无需用户交互。
使用bluetoothct我可以让设备被发现,将它与另一台设备配对,但我还没有找到像蓝牙代理一样设置引脚的方法
bluetooth-agent PIN
蓝牙代理在我的系统上不再可用,有没有办法可以用bluetoothctl做到这一点?
答案 0 :(得分:12)
这要归功于kaylum:
public class ColorGenerator {
public static ColorGenerator DEFAULT;
public static ColorGenerator MATERIAL;
static {
DEFAULT = create(Arrays.asList(
//your list of default tints
));
MATERIAL = create(Arrays.asList(
//your list of material colors
));
}
private final List<Integer> mColors;
private final Random mRandom;
public static ColorGenerator create(List<Integer> colorList) {
return new ColorGenerator(colorList);
}
private ColorGenerator(List<Integer> colorList) {
mColors = colorList;
mRandom = new Random(System.currentTimeMillis());
}
public int getRandomColor() {
return mColors.get(mRandom.nextInt(mColors.size()));
}
public int getColor(Object key) {
return mColors.get(Math.abs(key.hashCode()) % mColors.size());
}
}
然后我将树莓与手机配对。
$bluetoothctl
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# discoverable on
Changing discoverable on succeeded
[bluetooth]# pairable on
Changing pairable on succeeded
[bluetooth]# agent NoInputNoOutput
Agent registered
[bluetooth]# default-agent
Default agent request successful
答案 1 :(得分:7)
我遇到了同样的问题。如果您在agent
之后按两次标签,则会看到可用座席列表; KeyboardOnly
在没有通知的情况下正常工作:
[bluetooth]# agent on # accidentally used wrong agent
Agent registered
[bluetooth]# agent
DisplayOnly DisplayYesNo KeyboardDisplay KeyboardOnly NoInputNoOutput off on
[bluetooth]# agent KeyboardOnly
Agent is already registered # can't use two agents at one
[bluetooth]# agent off # unregister agent
Agent unregistered
[bluetooth]# agent KeyboardOnly # register proper agent
Agent registered
[bluetooth]# pair XX:XX:XX:04:F5:7C
Attempting to pair with XX:XX:XX:04:F5:7C
[CHG] Device XX:XX:XX:04:F5:7C Connected: yes
Request passkey
[agent] Enter passkey (number in 0-999999): 722504
[MoarBacon]# pair XX:XX:XX:04:F5:7C
Attempting to pair with XX:XX:XX:04:F5:7C
[CHG] Device XX:XX:XX:04:F5:7C Paired: yes
Pairing successful
答案 2 :(得分:2)
我已经安装了bluez-5.43。这是在树莓派上自动执行配对过程的方法。
(1)首先测试这样的一行,以确保蓝牙代理有效:
bluez-5.43/test/simple-agent -c NoInputNoOutput
(2)要自动配对,请将此代码放入一个外壳文件(我命名为mine pairbot.sh):
if [ "$(id -un)" != "pi" ]; then
exec sudo -u pi $0 "$@"
fi
export XAUTHORITY=/home/pi/.Xauthority
export DISPLAY=:0
lxterminal --command="/bin/bash -c '/home/pi/bluez-5.43/test/simple-agent -c NoInputNoOutput &; read'"
(3)转到crontab:
sudo cronetab -e
(4)在底部添加:
@reboot sleep 20 && /home/pi/pairbot.sh > /home/pi/blelog.txt 2>&1
(5)重新启动并测试它是否有效。
对于其他面临相同问题的人,我的建议是查看您的bluez文件夹(或者如果您没有安装最新版本的bluez),然后搜索对“简单代理”说“测试”的文件夹查找文件路径。从这里,您应该能够构建上面显示的命令行(1)。希望它也对您有用。
答案 3 :(得分:0)
首先,您必须针对引脚请求配置sspmode 0: hciconfig hci0 sspmode 0
并使用bt-agent复制(您也可以作为守护进程运行):
bt-agent -c NoInputNoOutput -p /root/bluethooth.cfg
编辑文件配置,您可以输入mac地址和图钉: 例如:
XX:XX:XX:XX:XX:XX 1234
或者,如果您希望将所有设备的图钉固定为相同的图钉密码,例如1234,请编辑文件,如下所示: * 1234
这对我有用!
答案 4 :(得分:0)
https://github.com/nokia/rcm-bluez/blob/master/client/bluez-5.43/test/simple-agent
https://raw.githubusercontent.com/pauloborges/bluez/master/test/bluezutils.py
@Ion Flare想法非常适合用于树莓派的设置自动配对蓝牙。我的回答中只有一点点调整:我遇到了import bluezutils
的错误,因此为了绕过这个错误,我只想说下载上面的文件simple-agent
和bluezutils.py
。放在相同的位置,对我来说是/ home / pi。并运行提到的命令@Ion Flare
python simple-agent -c NoInputNoOutput
在用例中,我更改了一个简单代理文件以接受每个连接和服务,以使事情变得简单。
答案 5 :(得分:0)
这对我有用:
蓝牙控制 代理关闭 打开 可在 可配对 代理无输入无输出 默认代理 一对 退出