在 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