在 Raspberry Pi OS 上使用蓝牙

Jinku Hu 2023年1月30日 2022年5月18日
  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
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

相关文章 - Raspberry Pi