我在使用 BlueZ 版本 5.23-1、内核 3.16.0-4 的 Debian Jessie 中连接 Logitech K810 蓝牙键盘时遇到了问题。
键盘在大多数情况下工作正常,但有时根本无法工作,并bluetoothctl
给出控制器不可用的错误。
发生这种情况时,hciconfig 仍然可以识别该设备,并且我得到以下输出:
# hciconfig hci0 up
# hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 40:2C:F4:68:02:CA ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN
RX bytes:21820 acl:1132 sco:0 events:68 errors:0
TX bytes:1182 acl:11 sco:0 commands:53 errors:0
但提示中没有显示任何设备bluetoothctl
,它给了我以下输出:
[bluetooth]# power on
No default controller available
[bluetooth]# scan on
No default controller available
重新启动或有时暂停/恢复可以修复该问题:bluetoothctl
将再次识别控制器和键盘并再次工作。
根据 ,蓝牙始终是硬和软解锁的rfkill
。
我想相关的输出lspci -v
是这样的:
03:00.0 Network controller: Intel Corporation Centrino Wireless-N 1000 [Condor Peak]
Subsystem: Intel Corporation Centrino Wireless-N 1000 BGN
Flags: bus master, fast devsel, latency 0, IRQ 43
Memory at f0400000 (64-bit, non-prefetchable) [size=8K]
Capabilities: <access denied>
Kernel driver in use: iwlwifi
我在 Debian Wheezy 中使用相同的硬件时没有遇到这个问题。
蓝牙控制器有时不可用是什么原因?
答案1
几个月来我一直在为同样的问题苦苦挣扎,以上解决方案都不适合我。
经过大量研究后,我在一个对我有用的旧论坛上找到了这个解决方案
https://bbs.archlinux.org/viewtopic.php?id=271459
rmmod btusb
rmmod btintel
modprobe btintel
modprobe btusb
答案2
我相信答案就是简单地bluetoothctl
运行sudo
。
因此,sudo bluetoothctl
。然后每个命令都可以正常工作power on
,agent on
等等,没有错误。
已确认在 Raspian Stretch 上工作。
答案3
这是一个长期存在的问题,但它并不会平等地影响所有发行版。我的经验仅限于 Raspberry Pi 的 Debian 衍生品 - Raspberry Pi OS(née Raspbian)。特别是,RPiOS 发行版的“Lite”版本受到影响,但“Full”版本则不然。
问题似乎是默认用户(以及我怀疑的所有用户)不包含在bluetooth
RaspOS“Lite”版本中指定的辅助组中,因为它们在“Full”版本中。
A修补因为这很容易:将用户添加到bluetooth
组中
$ sudo usermod -G bluetooth -a pi
或者也许正如@Pablo 在下面所建议的那样:
$ sudo adduser $USER bluetooth
一旦完成(并且在reboot
IIRC 之后),bluetoothctl
该操作就会生效,并且控制器会做出响应。sudo
后来就不需要了。
虽然这个补丁很简单,但永久的解决方案会好得多 - 这是非常令人困惑的,而且至少已经有 7-8 年了。我会提交一份错误报告,但根据我使用 Debian 和 Raspbian 的经验,这进一步浪费时间。
答案4
我有启用双启动的 Lenovo Ideapad Gaming 3(Ubuntu 20.04 和 Windows 10)。尝试了以上所有解决方案后。
- 只需启动进入 Windows。 (蓝牙在 Windows 中也无法工作)
- 从那里更新蓝牙驱动程序。
- 重新启动进入 Windows。 (蓝牙现在可以工作)
- 重新启动回到 Ubuntu。