蓝牙
![]() 正在制作中 |
Bluetooth 是用于蜂窝电话、计算机和其他电子设备短距离无线互连的标准。BlueZ 是 Linux 的蓝牙协议栈的实现,它由 bluez 软件包提供。
本文介绍了蓝牙控制器和设备的基本安装。
先决条件和基本安装
先决条件

eudev 应该被安装和设置
# setup-devd udev
基本安装
基本安装步骤如下
- 安装 bluez
- 如果您需要像
hcitool
这样的已弃用的工具,可选安装 bluez-deprecated
- 如果您需要像
- 加载
btusb
内核模块 - 添加用户到
lp
组 - 启动并启用 Bluetooth 服务
# apk add bluez # apk add bluez-deprecated # modprobe btusb # adduser $USER lp # rc-service bluetooth start # rc-update add bluetooth default
现在,使用 rfkill
检查蓝牙无线电发射器的状态
$ rfkill list bluetooth
它应该返回类似于以下内容
0: hci0: Bluetooth Soft blocked: no Hard blocked: no
如果设备被列为已阻止,可以使用相同的工具取消阻止
# rfkill unblock bluetooth
前端
有几个前端可用
- bluez 自带
bluetoothctl
前端 - blueman:功能齐全的蓝牙管理器
- bluedevil:KDE 蓝牙管理器
- bluetuith:简单的基于文本的蓝牙管理用户界面
- gnome-bluetooth:GNOME 蓝牙管理器
配对
使用 bluetoothctl
首先启动 bluetoothctl
并按照以下基本步骤操作
$ bluetoothctl
提示符应显示
[bluetooth]#
列出可用的控制器
[bluetooth]# list
显示关于控制器的信息
[bluetooth]# show controller_mac_address
设置默认控制器
[bluetooth]# select controller_mac_address
开启控制器电源
[bluetooth]# power on
启用代理并将其设置为默认
[bluetooth]# agent on [bluetooth]# default-agent
将控制器设置为可被发现(临时 3 分钟)和可配对
[bluetooth]# discoverable on [bluetooth]# pairable on
扫描设备
[bluetooth]# scan on
将设备置于配对模式。这通常涉及按下一个按钮或组合按钮,通常持续几秒钟。
发现设备 MAC 地址
[bluetooth]# devices
与设备配对
[bluetooth]# pair device_mac_address
如果提示,输入 PIN 码
[agent] PIN code: ####
信任设备
[bluetooth]# #trust device_mac_address
连接到设备
[bluetooth]# connect device_mac_address
显示关于设备的信息
[bluetooth]# info device_mac_address
设备现在已配对
[bluetooth]# quit
配置
设置适配器电源状态
如果您希望适配器不自动启用(例如,在您希望节省电池的便携式设备上),请在 /etc/bluetooth/main.conf
的 [Policy]
部分中设置 AutoEnable=false
/etc/bluetooth/main.conf
的内容
电池报告
可以启用实验性功能以报告设备电池电量
/etc/bluetooth/main.conf
的内容
故障排除
由于可用的蓝牙硬件种类繁多,因此在尝试安装、激活或查找蓝牙设备时,您可能会收到错误。
“No default controller available” 错误
在按照这些或其他说明操作后,您运行 bluetoothctl
并遇到以下情况
[bluetooth]# list [bluetooth]# show No default controller available
一种可能的解决方案是您缺少固件驱动程序。
尝试运行以下命令以发现问题的根源
# dmesg | grep -i bluetooth | grep -i firmware
有许多可用的固件软件包可能解决此问题(请参阅 linux-firmware-*)。
另一种可能的解决方案是安装 hidapi 并加载模块
# apk add hidapi # modprobe uhid
也可能需要创建配置以在启动时加载 uhid 和 btusb 内核模块
cat <<EOF > /etc/modules-load.d/uhid.conf #加载 uhid 内核模块: uhid EOF
cat <<EOF > /etc/modules-load.d/btusb.conf #加载 btusb 内核模块: btusb EOF
尝试连接蓝牙 HID 设备时,有时会产生 br-connection-profile-unavailable
错误,但未加载 uhid
内核模块。HID 设备包括键盘和耳机上的音量按钮(有时作为键盘呈现给操作系统)、鼠标、游戏控制器、字母数字显示器等。
当启用用户空间 HID 支持时,具有在用户空间中实现的驱动程序的 USB HID 设备需要 uhid
内核模块。
在此错误发生后使用 modprobe
加载 uhid
并不总是能解决问题。
尝试设置 uhid
在启动时加载,然后重启
# cat <<EOF > /etc/modules-load.d/uhid.conf #加载 uhid 内核模块: uhid EOF # reboot
或者,可以在 /etc/bluetooth/input.conf
中完全禁用用户空间 HID 功能,而支持内核 HIDP 驱动程序
UserspaceHID=false
如果运行 pipewire,您也可以尝试安装 pipewire-spa-bluez,看看是否能解决问题。
无法控制蓝牙扬声器音量 / 蓝牙输出已静音 (Pulseaudio)
可以自动将音频输出和音量控制切换到上次连接的设备。
这可以解决在蓝牙设备之间切换时控制扬声器音量的问题。
在 /etc/pulse/default.pa 的末尾追加以下行
/etc/pulse/default.pa
的内容