在 Raspberry Pi OS 上使用蓝牙

Jinku Hu 2023年1月30日
  1. 在 Raspberry Pi 中使用 bluetoothctl 命令行控制工具
  2. 在 Raspberry Pi 上管理多个控制器
  3. 使用 bluetoothctl 删除 Raspberry Pi 中已保存的设备
  4. 使用 bluetoothctl 让你的树莓派无法被发现
在 Raspberry Pi OS 上使用蓝牙

本文将介绍 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 命令完成。

它根据控制器的当前状态接受 onoff 参数。在这种情况下,我们需要下一个命令来使 Pi 无法被发现。

discoverable off
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook

相关文章 - Raspberry Pi