在 Raspberry Pi OS 上使用蓝牙
-
在 Raspberry Pi 中使用
bluetoothctl
命令行控制工具 - 在 Raspberry Pi 上管理多个控制器
-
使用
bluetoothctl
删除 Raspberry Pi 中已保存的设备 -
使用
bluetoothctl
让你的树莓派无法被发现
本文将介绍 Raspberry Pi OS 上用于蓝牙连接的命令行界面。
在 Raspberry Pi 中使用 bluetoothctl
命令行控制工具
bluetoothctl
是一个方便的命令行实用程序,用于连接 Raspberry Pi OS 中的蓝牙功能。
该实用程序通常在当前的 Pi OS 版本中提供,但如果由于某种原因你的系统找不到该命令,请尝试安装它:
sudo apt install bluez bluez-utils
如果你已成功执行 bluetoothctl
命令,应该会出现代理已注册
这样的消息并显示 [bluetooth]#
提示:
Agent registered
[bluetooth]#
此时,我们可以在提示符下执行 scan on
命令,开始扫描可达设备。
scan on
成功执行应产生类似于以下几行的输出,并将控制权转移到 bluetoothctl
命令提示符。
Discovery started
[CHG] Controller B8:27:EB:ff:ff:ff Discovering: yes
[bluetooth]#
此外,它将列出可用的蓝牙设备以及相应的 MAC 地址和名称。看到所需的设备后,你可以运行以下命令来启动配对:
pair ff:ff:ff:ff:ff:ff
如果你已经信任给定的设备,Raspberry Pi 可能会自动连接它。但是,你也可以使用以下命令强制连接:
connect ff:ff:ff:ff:ff:ff
请注意,我们在上述示例中使用了通用 MAC 地址,但你应该使用要配对的设备地址来替换它。
可以使用 disconnect
命令终止连接,并将相应的地址作为参数传递。
在 Raspberry Pi 上管理多个控制器
如果你有其他 USB 蓝牙适配器连接到 Pi,你应该在执行之前的命令之前选择其中一个。
控制器(控制蓝牙无线电通信的硬件)具有唯一的 MAC 地址,可以使用 bluetoothctl
命令提示符下的 list
命令检索。
一旦你确定了当前蓝牙连接的控制器,使用相应的 MAC 地址作为参数运行 select
命令。
请注意,下一个命令将列出系统中所有可用的控制器:
list
在此之后,你可以根据需要继续执行其他命令。通常,内置的 Raspberry Pi 控制器地址以 B8:27:EB
开头。
bluetoothctl
提供了使用 help
命令列出的其他几个命令。
请注意,如果你想从默认 shell 执行,这些命令必须在 bluetoothctl
命令提示符下执行或附加到 bluetoothctl
命令本身。
list
// ALTERNATIVELY
bluetoothctl list
使用 bluetoothctl
删除 Raspberry Pi 中已保存的设备
使用 Pi 控制器配对或信任的蓝牙设备在 bluetoothctl
命令提示符中与 paired-devices
命令一起列出。
如果要从列表中删除特定设备,请使用相应的 MAC 地址执行 remove
命令,如下所示:
remove ff:ff:ff:ff:ff:ff
使用 bluetoothctl
让你的树莓派无法被发现
有时,你可能希望停止广播 Pi 控制器蓝牙广告信息。后者可以通过 discoverable
命令完成。
它根据控制器的当前状态接受 on
或 off
参数。在这种情况下,我们需要下一个命令来使 Pi 无法被发现。
discoverable off
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn