ubuntu 18.04 LTS蓝牙发现无法正常工作

我已经将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:~$ 

一位名叫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 

KVER ?= $(shell uname -r) obj-m += btusb.o

所有:
make -C / lib / modules / $(KVER)/ build M = $(PWD)模块

清洁:
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 

问题是Atheros发布了一个新的ROME设备使用与旧AR3012设备相同的VID / PID。 代码是[0cf3:3004]。

找不到安装哪个设备的好方法还没有找到。

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

这意味着旧设备正在尝试加载错误的固件。 这可以通过还原此修补程序来解决。

我曾经为旧内核和更新的设备构建DKMS模块来修复它。 现在看起来我们需要一个用于新内核和旧设备的模块。

花了很多时间在线搜索解决方案(也重新安装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 

我希望它有所帮助。

我通过使用UKUU工具将Ubuntu内核升级到最新版本来解决问题。

我的ASUS ROG STRIX X370-I主板也有类似的问题,它有一个Realtek 8822 Wi-Fi /蓝牙芯片。

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