Linux 终端中蓝牙未激活错误

Linux 终端中蓝牙未激活错误

我正在尝试从 Linux 终端中的蓝牙设备获取数据,但遇到了问题。当我运行这个命令时:

sudo systemctl status bluetooth.service

我收到此错误:

Loaded: loaded (/lib/systemd/system/bluetooth.service; enabl>
    Drop-In: /run/systemd/system/service.d
             └─zzz-lxc-service.conf
     Active: inactive (dead)
       Docs: man:bluetoothd(8)

我已经尝试了几个修复从其他论坛,但没有一个工作。我尝试跑步

sudo modprobe btusb

但出现此错误:

modprobe: FATAL: Module btusb not found in directory /lib/modules/5.15.108-18910-gab0e1cb584e1

这是我运行的 Linux 版本:Debian GNU/Linux 11 (bullseye) 内核:Linux 5.15.108-18910-gab0e1cb584e1 架构:arm64

我正在尝试运行一个从蓝牙设备获取数据的 python 脚本。我正在使用 Bleak 包并收到此错误:

bleak.exc.BleakDBusError: [org.freedesktop.DBus.Error.TimedOut] Failed to activate service 'org.bluez': timed out (service_start_timeout=25000ms)

内容systemctl cat bluetooth.service

Description=Bluetooth service
Documentation=man:bluetoothd(8)
ConditionPathIsDirectory=/sys/class/bluetooth

[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/libexec/bluetooth/bluetoothd
NotifyAccess=main
#WatchdogSec=10
#Restart=on-failure
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
LimitNPROC=1
ProtectHome=true
ProtectSystem=full

[Install]
WantedBy=bluetooth.target
Alias=dbus-org.bluez.service

# /run/systemd/system/service.d/zzz-lxc-service.conf
[Service]
ProtectProc=default
ProtectControlGroups=no
ProtectKernelTunables=no
NoNewPrivileges=no

感谢任何帮助!

答案1

您的内核版本5.15.108-18910-gab0e1cb584e1不是标准 Debian 内核。

谷歌搜索该内核版本字符串表明这可能是 Chromebook...并且 的存在zzz-lxc-service.conf表明您不是在直接的 Linux 操作系统上运行,而是可能在 ChromeOS 的 Linux 容器中运行。它似乎确实缺少btusb内核模块,而该模块是大多数常见 USB 蓝牙适配器的驱动程序。

如果这是在 ChromeOS 上托管的,那么我有一些坏消息。根据在 ChromeOS 下运行自定义容器文档中,在 ChromeOS 下运行的 Linux 容器无法使用蓝牙访问:

我可以访问硬件(例如USB/蓝牙/串行)吗?

某些设备(包括 Android 设备和串行设备)的 USB 支持可通过 ChromeOS 设置获得。无法直接蓝牙访问但您可以将 Web 蓝牙 API 与在 Crostini 中运行的 Web 服务器一起使用。

这可以解释为什么您的内核配置不包含该btusb模块:如果您无论如何都无法在容器内使用它,那么将其构建到旨在在容器内使用的设置中是没有意义的。

相关内容