在Linux命令行中以编程方式移除所有蓝牙设备

23

我能使用hcitool或我的C程序扫描所有可用的蓝牙设备。

我可以使用一个简单代理的Python脚本通过地址配对设备。

我想知道是否可以使用hcitool、hciconfig或某种蓝牙命令来移除已配对的设备。

我知道探测到的设备信息存储在/var/lib/bluetooth/XX:XX:XX:XX:XX:XX中,其中XX:XX:XX:XX:XX是hci控制器的地址。

这对于测试配对、连接和断开设备非常有用。


您能和我分享一下在OS X上如何使用hcitool进行蓝牙扫描的具体方法吗? - Ruskes
7个回答

17

对于使用Ubuntu 20.04的用户,这里是同样使用bluetoothctl命令的命令

#!/bin/bash 
for device in $(bluetoothctl devices  | grep -o "[[:xdigit:]:]\{8,17\}"); do
    echo "removing bluetooth device: $device | $(bluetoothctl remove $device)"
done

8
如果您安装了bluez-tools软件包,则可以运行以下命令来取消配对蓝牙设备:
bt-device -r xx:xx:xx:xx:xx:xx

其中xx:xx:xx:xx:xx:xx是配对设备的地址。


对我来说完美运行。 - Pitto
如果蓝牙设备尚未安装,此功能将无法正常工作。 - thanos.a

8

蓝牙测试设备删除 XX:XX:XX:XX:XX:XX


(并使用“bluez-list-devices”获取XX:XX:XX:...。) - Stephen Niedzielski
这真的帮助我解决了我的问题。bluez-test-device命令似乎对于以编程方式创建/删除/信任蓝牙非常有用,谢谢。 - Levent Divilioglu
我需要安装什么? - Xbox One

6
如上所述,根据Ashish的回答,您可以使用bluez-test-device来删除已知MAC地址的设备。因此,问题在于解析已添加设备的MAC地址。
使用Python或C或其他任何语言,
1)列出设备;
bluez-test-device list

解析输出并获取所有设备的MAC地址,将它们添加到列表中。

2)断开并移除设备;

bluez-test-device disconnect <MAC ADDRESS>
bluez-test-device remove <MAC ADDRESS>

6

使用bluetoothctl命令行工具执行以下命令:for device in $(bluetoothctl devices | grep -vEi '(o que mais vc quer deixar aqui|samsung|jbl|wireless)' | awk '{print $2}'); do bluetoothctl remove $device; done


这正是我所需要的,我已经到处寻找像这样简单的解决方案。 - George Willcox

3

所有这些答案都没有回答标题“删除所有蓝牙设备”。

我编写了一个小的bash脚本,用于删除在bt-device -l中列出的所有蓝牙设备。

#!/bin/bash 
for device in $(bt-device -l | grep -o "[[:xdigit:]:]\{11,17\}"); do
    echo "removing bluetooth device: $device | $(bt-device -r $device)"
done

如何运行?

  1. 新建一个文件,命名为<fileName>.sh,并复制上面的代码。
  2. 运行chmod +x <fileName>使脚本可执行。
  3. 运行./<fileName>.sh
  4. 庆祝吧!现在所有蓝牙设备都已经被移除了 :)

0
类似于Jesse de gans的回答,这里有一个一行代码的方法来断开连接bt-devicebluetoothctl上的所有设备。
# disconnect all devices using bt-device
for device in `bt-device -l`; do [[ "$device" =~ ([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}) ]] && bt-device -d $(echo $device | sed 's/[()]//g'); done

# disconnect all devices using bluetoothctl
for device in `bluetoothctl paired-devices`; do [[ "$device" =~ ^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$ ]] && bluetoothctl disconnect $device; done

这对于bt-device来说需要做一些额外的工作,因为MAC地址被括在括号()中,所以我们需要使用sed命令去除它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接