LinuxカーネルでQCA6390 Bluetoothファームウェアを有効にする方法は?

LinuxカーネルでQCA6390 Bluetoothファームウェアを有効にする方法は?

コンテキスト

XPS 9310に必要なBluetoothファームウェアをロードするためにカーネルをインポートできません。私のモデルにはQCA6390を使用するAX500接続チップがあります。

両方のユーザーUbuntuそしてアーチBluetoothはこのモデルで動作することが報告されていますが、NixOSで動作するために必要な正しいカーネル設定を見つけるのに問題があります。

私の設定

boot.kernelPatches次のカーネル構成パラメーターを有効にし、nix構成に次のパッチを追加しました。

    # Extra config required for Bluetooth.
    {
      name = "enable-qca6390-bluetooth";
      patch = null;
      extraConfig = ''
        BT_QCA m
        BT_HCIBTUSB m
        BT_HCIBTUSB_AUTOSUSPEND y
        BT_HCIUART m
        BT_HCIUART_QCA y
      '';
    }

次のように関連モジュールをロードします。

  boot.kernelModules = [ "bluetooth" "btqca" "btusb" "hci_qca" "hci_uart" ];

私が持っていることは言うまでもありません:

  hardware.bluetooth.enable = true;

私も持っています:

  hardware.enableRedistributableFirmware = true;

これは作るfirmwareLinuxNonfreeパッケージはファームウェアを追加します。Linuxファームウェア買戻契約も含まれます。必要なQCAファームウェア

質問

dmesg2人の独立したUbuntuユーザーの出力にファームウェアがロードされていることがわかります。ここそしてここ、どちらもBluetoothが機能していることを報告します。しかし、私はそれが私の中にロードされるのを観察することはできません。

参考までに、以下はdmesgBluetoothを使用しているユーザーの出力です。

[ 2.349008] Bluetooth: Core ver 2.22
[ 2.349019] Bluetooth: HCI device and connection manager initialized
[ 2.349023] Bluetooth: HCI socket layer initialized
[ 2.349024] Bluetooth: L2CAP socket layer initialized
[ 2.349028] Bluetooth: SCO socket layer initialized
[ 2.394642] Bluetooth: HCI UART driver ver 2.3
[ 2.394644] Bluetooth: HCI UART protocol H4 registered
[ 2.394645] Bluetooth: HCI UART protocol BCSP registered
[ 2.394654] Bluetooth: HCI UART protocol LL registered
[ 2.394655] Bluetooth: HCI UART protocol ATH3K registered
[ 2.394660] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 2.394702] Bluetooth: HCI UART protocol Intel registered
[ 2.394734] Bluetooth: HCI UART protocol Broadcom registered
[ 2.394742] Bluetooth: HCI UART protocol QCA registered
[ 2.394743] Bluetooth: HCI UART protocol AG6XX registered
[ 2.394748] Bluetooth: HCI UART protocol Marvell registered
[ 2.416321] Bluetooth: hci0: setting up ROME/QCA6390
[ 2.420348] Bluetooth: hci0: Frame reassembly failed (-84)
[ 2.444937] Modules linked in: snd_pcm qrtr ns snd_seq_midi snd_seq_midi_event ath11k_pci(+) mhi snd_rawmidi ath11k hci_uart qmi_helpers btqca i915(+) snd_seq btrtl uvcvideo mac80211 snd_seq_device btbcm btintel snd_timer videobuf2_vmalloc dell_wmi drm_kms_helper input_leds videobuf2_memops dell_smbios videobuf2_v4l2 cec dcdbas snd efi_pstore serio_raw rc_core videobuf2_common hid_sensor_als i2c_algo_bit hid_sensor_trigger ucsi_acpi(+) cfg80211 fb_sys_fops industrialio_triggered_buffer processor_thermal_device typec_ucsi dell_wmi_descriptor kfifo_buf hid_sensor_iio_common intel_rapl_common soundcore industrialio wmi_bmof videodev mei_me libarc4 syscopyarea cros_ec_ishtp 8250_dw mc hid_multitouch sysfillrect mei cros_ec sysimgblt intel_soc_dts_iosf typec mac_hid bluetooth ecdh_generic ecc int3403_thermal int340x_thermal_zone acpi_pad intel_hid acpi_tad int3400_thermal acpi_thermal_rel sparse_keymap sch_fq_codel parport_pc ppdev drm lp parport ip_tables x_tables autofs4 hid_sensor_hub
[ 2.756645] Bluetooth: hci0: QCA Product ID :0x00000010
[ 2.756647] Bluetooth: hci0: QCA SOC Version :0x400a0200
[ 2.756647] Bluetooth: hci0: QCA ROM Version :0x00000200
[ 2.756648] Bluetooth: hci0: QCA Patch Version:0x00000d2b
[ 2.756650] Bluetooth: hci0: QCA controller version 0x02000200
[ 2.756651] Bluetooth: hci0: QCA Downloading qca/htbtfw20.tlv
[ 3.584055] Bluetooth: hci0: QCA Downloading qca/htnv20.bin
[ 3.777754] Bluetooth: hci0: QCA setup on UART is completed
[ 3.998318] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 3.998319] Bluetooth: BNEP filters: protocol multicast
[ 3.998321] Bluetooth: BNEP socket layer initialized
[ 14.108234] Bluetooth: RFCOMM TTY layer initialized
[ 14.108238] Bluetooth: RFCOMM socket layer initialized
[ 14.108242] Bluetooth: RFCOMM ver 1.11

dmesg | grep -i blueマイコンピュータの出力は次のとおりです。

[    4.363188] Bluetooth: Core ver 2.22
[    4.363199] Bluetooth: HCI device and connection manager initialized
[    4.363201] Bluetooth: HCI socket layer initialized
[    4.363203] Bluetooth: L2CAP socket layer initialized
[    4.363205] Bluetooth: SCO socket layer initialized
[    4.379230] Bluetooth: HCI UART driver ver 2.3
[    4.379231] Bluetooth: HCI UART protocol H4 registered
[    4.379232] Bluetooth: HCI UART protocol BCSP registered
[    4.379238] Bluetooth: HCI UART protocol LL registered
[    4.379256] Bluetooth: HCI UART protocol Intel registered
[    4.379260] Bluetooth: HCI UART protocol QCA registered
[   20.090546] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   20.090553] Bluetooth: BNEP socket layer initialized

ご覧のとおり、私のBluetooth設定ではこの手順や次のいずれも行いませんhci0

[ 2.416321] Bluetooth: hci0: setting up ROME/QCA6390

予想どおり、GNOME設定GUIでBluetoothを有効にすることはできず、bluetoothctl何も表示されません。

$ bluetoothctl list

$ bluetoothctl devices
No default controller available

質問

私が理解したように、ファームウェアはアクティブなときに自動的にロードされなければならずBT_QCA、両方とも前述のnix設定の結果でなければなりません。

この仮定は正しいですか?

hci0上記の行を実行するために必要な必要な手順がありませんか?

進行方法の提案やアイデアをいただきありがとうございます!

システムメッセージ

$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 5.10.2, NixOS, 21.03pre259798.84917aa00bf (Okapi)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.3.10`
 - channels(root): `"nixos-21.03pre259798.84917aa00bf, home-manager-20.09"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
$ lsmod | grep -i bt
btusb                  57344  0
btrtl                  24576  1 btusb
btbcm                  20480  1 btusb
btintel                28672  2 hci_uart,btusb
btqca                  20480  1 hci_uart
bluetooth             589824  13 btrtl,btqca,btintel,hci_uart,btbcm,bnep,btusb
usbcore               270336  5 xhci_hcd,usbhid,uvcvideo,btusb,xhci_pci
$ lspci
00:00.0 Host bridge: Intel Corporation 11th Gen Core Processor Host Bridge/DRAM Registers (rev 01)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics (rev 01)
00:04.0 Signal processing controller: Intel Corporation Device 9a03 (rev 01)
00:06.0 PCI bridge: Intel Corporation 11th Gen Core Processor PCIe Controller (rev 01)
00:07.0 PCI bridge: Intel Corporation Tiger Lake-LP Thunderbolt PCI Express Root Port #0 (rev 01)
00:07.2 PCI bridge: Intel Corporation Tiger Lake-LP Thunderbolt PCI Express Root Port #2 (rev 01)
00:0a.0 Signal processing controller: Intel Corporation Device 9a0d (rev 01)
00:0d.0 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt USB Controller (rev 01)
00:0d.2 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt NHI #0 (rev 01)
00:0d.3 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt NHI #1 (rev 01)
00:12.0 Serial controller: Intel Corporation Tiger Lake-LP Integrated Sensor Hub (rev 20)
00:14.0 USB controller: Intel Corporation Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller (rev 20)
00:14.2 RAM memory: Intel Corporation Tiger Lake-LP Shared SRAM (rev 20)
00:15.0 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #0 (rev 20)
00:15.1 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #1 (rev 20)
00:16.0 Communication controller: Intel Corporation Tiger Lake-LP Management Engine Interface (rev 20)
00:19.0 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #4 (rev 20)
00:19.1 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #5 (rev 20)
00:1c.0 PCI bridge: Intel Corporation Device a0b8 (rev 20)
00:1d.0 PCI bridge: Intel Corporation Device a0b3 (rev 20)
00:1e.0 Communication controller: Intel Corporation Tiger Lake-LP Serial IO UART Controller #0 (rev 20)
00:1f.0 ISA bridge: Intel Corporation Tiger Lake-LP LPC Controller (rev 20)
00:1f.3 Multimedia audio controller: Intel Corporation Tiger Lake-LP Smart Sound Technology Audio Controller (rev 20)
00:1f.4 SMBus: Intel Corporation Tiger Lake-LP SMBus Controller (rev 20)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP SPI Controller (rev 20)
01:00.0 Non-Volatile memory controller: Toshiba Corporation Device 011a
56:00.0 Unassigned class [ff00]: Qualcomm Device 1101
57:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5260 PCI Express Card Reader (rev 01)
$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 0c45:672a Microdia Integrated_Webcam_HD
Bus 003 Device 002: ID 27c6:533c Shenzhen Goodix Technology Co.,Ltd. FingerPrint
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

追加リファレンス

参照用に使用される場合、デフォルトのカーネル構成へのリンクは次のとおりです。ニックOSダーバンそしてアーチ

これは私のWIPです。交渉NixOSにXPS 9310サポートを追加することを目的として、このタスクが含まれる予定です。

これは私の以前の投稿私はこの問題の助けを得るためにNixOSフォーラムに連絡しましたが、執筆時点では答えを受けませんでした。


解決済み

私たちは nixos/nixos-hardware github リポジトリでこの問題を解決し、必要なカーネル設定パッチを nixpkgs 自体にアップロードしました。nixos-hardwareリポジトリのモジュールの使用ここXPS 9310でnixosを簡単に起動して実行できます。

答え1

BIOSを見てください。メインメニューをクリックしてくださいConnection。という部分があります。チェックボックスが選択されていることをWireless Device Enable確認してください。Bluetooth時には考える必要もないことです¯\_(ツ)_/¯

同じBluetoothハードウェア(Qualcomm QCA6390 / AX500-DBS)を使用するDell XPS 15 9500があります。

私はあなたが説明するのと同じ症状を持ち、「確かに」BIOSを介してBTを無効にしませんでした。私が確認して確認するまでは。驚いたことに、私はそれを無効にしました。

BIOSでBTを無効にした後、dmesg | grep -i blue出力があなたの出力と一致することがわかりました(正確に!)。たとえば、次の2つの主要なログ行がありません。

Bluetooth: hci0: QCA Downloading qca/htbtfw20.tlv
Bluetooth: hci0: QCA Downloading qca/htnv20.bin

bluetoothctl devices表示中ですNo default controller available。これが私がここであなたの質問を見つけた方法です。

答え2

過去1年間に問題が解決した後、同じ問題を解決するのに時間がかかりました。すべてが大丈夫に見えますが、表示されません。 dmesgのファームウェアダウンロードラインもありません。

最後の回避策は、BIOSに入ってBluetoothを無効にし、電源を入れて再起動し、BIOSに入ってBluetoothを再び有効にすることです。 ˙_(ツ)_/˙

関連情報