我有一个与我的 raspberry pi 配对的设备,并将别名配置为“cardreader”。这会改变我在扫描中看到它的方式,因此我看到的是“cardreader”而不是其型号。到目前为止一切顺利。但现在我想使用它的别名而不是 macid/蓝牙卡 id 来配对/信任/连接到该设备。类似于pair cardreader
而不是pair 43:22:15:15:...
。这样做的实际结果是出现未找到设备的错误。我在网上找到的关于 bluez 的文档很少,几乎没有关于设置别名的讨论。如果我不能这样做,我会求助于编写一些命令来执行此操作,但这将是一种遗憾,因为它似乎是一个如此明显的功能。
答案1
不幸的是,命令似乎bluetoothctl
无法对别名进行操作。更糟糕的是,bluetoothctl
没有提供特定命令来根据设备的别名获取其 MAC 地址。
我能做的最好的事情如下:
ALIAS=<your-device-alias>
bluetoothctl connect `bluetoothctl devices | grep $ALIAS | cut -d ' ' -f 2`
那个部分:
bluetoothctl devices | grep $ALIAS | cut -d ' ' -f 2
根据设备的别名查找其 MAC 地址。然后将结果用作 的参数bluetoothctl connect
。
答案2
我制作了一个简单的脚本,让你可以使用别名连接到配对的设备。遗憾的是它不能处理配对本身——主要是因为我不经常这样做,所以我觉得没有必要去实现它,请随意添加。
bt device1 device2 device3
您可以使用等连接到任意数量的已知设备。
bt
:
#!/bin/bash
# vi: ft=bash
mapfile deviceList < <(bluetoothctl -- devices)
length=$(echo -n "${deviceList[@]}" | wc -l)
declare -A devices
for (( i=0; i < $length; i++ )); do
addr=$( echo ${deviceList[$i]} | cut -d " " -f 2 )
name=$( echo ${deviceList[$i]} | cut -d " " -f 3-)
devices["$name"]="$addr"
done
bluetoothctl -- power on && sleep 1 || exit 1
while [[ "$@" ]]; do
bluetoothctl -- connect "${devices["$1"]}" || echo "Unrecognised device: $1"
shift
sleep 1
done
请注意,由于它每次都会构建设备列表,如果您拥有大量已知设备,它可能会很慢。