Ubuntu 16.04 LTSをubuntu 18.04 LTSにアップグレードしましたが、それ以降、bluetoothはデバイスを検出しません。
実行した手順は次のとおりです。
設定からbluetoothをオンにしました(他の設定ではなくbluetoothオプションに向かって移動するのが遅れているようです)。
デバイスの検出はまだ行われておらず、オン/オフの切り替えは、デバイスをオンにして検出するのに時間がかかりすぎますが、とにかくデバイスを検出していません。
ダウングレードする前に、ライブ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]#
ラップトップ:Lenovo 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:~$
岩井隆史という名の素晴らしい開発者が、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
ソリューションのオンライン検索に多くの時間を費やした後(18.04も再インストール)-Dell 9550ラップトップ(Ubuntuのみを実行)で このリンク
また、フラッシュドライブを使用してBIOSをアップグレードしました(公式のDellドライバーのWebサイトリンクからダウンロードした後)
上記のリンクから提供された解決策は、次のような実際のトリックを行ったと思います(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
役に立てば幸いです。
問題は、Atherosが古いAR3012デバイスと同じVID/PIDを使用して新しいROMEデバイスをリリースしたことです。コードは[0cf3:3004]です。
どのデバイスがインストールされているかを見つける良い方法はまだ見つかっていません。
カーネルメンテナーはここで新しいデバイスのコードを変更しました http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/commit/drivers/bluetooth/btusb.c?id=c91729972ac67983a37270d0856f1ee93af5491
これは、古いデバイスが間違ったファームウェアをロードしようとしていることを意味します。これは、このパッチを元に戻すことで修正できます。
以前は、古いカーネルと新しいデバイス用のDKMSモジュールをビルドして修正していました。現在、新しいカーネルと古いデバイス用のモジュールが必要なようです。
UKUU ツールを使用してUbuntuカーネルを最新バージョンにアップグレードすることで問題を解決しました。
Realtek 8822 Wi-Fi/Bluetoothチップを搭載したASUS ROG STRIX X370-Iマザーボードでも同様の問題が発生しました。
カーネルを最新バージョンに更新することで解決しました: https://www.kernel.org/