ubuntu 18.04 LTS 蓝牙 [0cf3:3004] 发现不起作用

ubuntu 18.04 LTS 蓝牙 [0cf3:3004] 发现不起作用

我已将 ubuntu 16.04 LTS 升级到 ubuntu 18.04 LTS,从那时起蓝牙就无法发现任何设备。

以下是我执行的步骤:

从设置中打开蓝牙(似乎转向蓝牙选项而不是其他设置时滞后)。

它仍然没有发现任何设备,并且打开和关闭切换需要太多时间来打开设备进行发现,但无论如何它都没有发现设备。

在降级之前,我曾尝试运行实时 ubuntu 18.04 LTS,这是我在快照中得到的结果:

在此处输入图片描述

因此,根据蓝牙切换,它应该被打开,但它仍然说蓝牙已关闭并且没有扫描任何附近的设备。

尝试运行以下一些命令:

ubuntu@ubuntu:~$ bluetoothctl
Agent registered
[bluetooth]# list
[bluetooth]# devices
No default controller available
[bluetooth]# scan on
No default controller available
[bluetooth]# power on
No default controller available
[bluetooth]# 

笔记本电脑:联想 Z50-70


更新

jarvis@jarvis:~$ lspci -knn | grep Net -A3; lsusb
02:00.0 Network controller [0280]: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter [168c:0036] (rev 01)
    Subsystem: Lenovo QCA9565 / AR9565 Wireless Network Adapter [17aa:4026]
    Kernel driver in use: ath9k
    Kernel modules: ath9k
03:00.0 3D controller [0302]: NVIDIA Corporation GM108M [GeForce 840M] [10de:1341] (rev a2)
Bus 001 Device 002: ID 8087:8000 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 004: ID 0cf3:3004 Atheros Communications, Inc. AR3012 Bluetooth 4.0
Bus 002 Device 003: ID 174f:14b2 Syntek 
Bus 002 Device 002: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 002 Device 006: ID 093a:2532 Pixart Imaging, Inc. 
Bus 002 Device 005: ID 0781:5583 SanDisk Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
jarvis@jarvis:~$ dmesg | grep -i blue
[   27.147743] Bluetooth: Core ver 2.22
[   27.147759] Bluetooth: HCI device and connection manager initialized
[   27.147761] Bluetooth: HCI socket layer initialized
[   27.147764] Bluetooth: L2CAP socket layer initialized
[   27.147769] Bluetooth: SCO socket layer initialized
[   27.160218] Bluetooth: hci0: don't support firmware rome 0x31010000
[   31.361588] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   31.361590] Bluetooth: BNEP filters: protocol multicast
[   31.361593] Bluetooth: BNEP socket layer initialized
jarvis@jarvis:~$ 

答案1

一位名叫 Takashi Iwai 的杰出开发人员提出了一个解决方案,我将其纳入了 4.15 内核

sudo apt install git build-essential dkms
git clone https://github.com/jeremyb31/newbtfix-4.15.git
sudo dkms add ./newbtfix-4.15
sudo dkms install btusb/4.0
重启

对于在 6 月 13 日之前尝试过此操作的人,你可能需要

sudo -H gedit /usr/src/btusb-4.0/Makefile
将内容更改为
KVER ?= $(shell uname -r)
obj-m += btusb.o

all: make -C /lib/modules/$(KVER)/build M=$(PWD) modules

clean: make -C /lib/modules/$(KVER)/build M=$(PWD) clean

为了能够使用新内核正确构建

编辑:这个错误已在内核 4.15.0-31 中修复,因此已安装此修复程序的用户可以根据需要删除

sudo dkms remove btusb/4.0 -k $(uname -r)
sudo dkms remove btusb/4.0 --all

答案2

问题在于 Atheros 发布了一款新的 ROME 设备,其 VID/PID 与旧款 AR3012 设备相同。代码为 [0cf3:3004]。

找出尚未找到安装的设备的一个好方法。

内核维护人员在此处更改了新设备的代码 http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/commit/drivers/bluetooth/btusb.c?id=c91729972ac67983a37270d0856f1ee93af54913

这意味着旧设备正在尝试加载错误的固件。可以通过恢复此补丁来修复此问题。

我曾经为较旧的内核和较新的设备构建 DKMS 模块来修复此问题。现在看来我们需要一个适用于新内核和旧设备的模块。

答案3

在花了很多时间在网上寻找解决方案(也重新安装了 18.04)之后 - 在 DELL 9550 笔记本电脑(仅运行 Ubuntu)上,我遇到了此链接

我还使用闪存驱动器升级了 BIOS(从官方 DELL 驱动程序网站链接下载后)

我认为上述链接提供的解决方案确实起到了作用,如下所示(也可能是 BIOS 问题,但不能 100% 确定 - 无论如何都必须这样做):

wget https://memcpy.io/files/2017-10-28/BCM-0a5c-6410.hcd
sudo cp BCM-0a5c-6410.hcd /lib/firmware/brcm/
sudo chmod 0644 /lib/firmware/brcm/BCM-0a5c-6410.hcd
sudo reboot

我希望它有帮助。

答案4

我的华硕 ROG STRIX X370-I 主板刚刚遇到了类似的问题,该主板配备了 Realtek 8822 Wi-Fi/蓝牙芯片。

将内核更新到最新版本解决了我的问题: https://www.kernel.org/

相关内容