Re: QCA6390 bluetooth doesn't work after warm boot or disable/reenable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/9/24 12:53 PM, Wren Turkal wrote:
On 4/8/24 12:49 PM, Wren Turkal wrote:
+Marcel Holtmann <marcel@xxxxxxxxxxxx>
+Luiz Augusto von Dentz <luiz.dentz@xxxxxxxxx>

Added maintainers identified from the get_maintainer.pl script in the kernel repo. Hoping to get some ideas for next steps.

More contextual info below:

On 4/6/24 1:27 PM, Wren Turkal wrote:
+Kalle Valo since you have the same laptop

On 4/6/24 1:16 PM, Wren Turkal wrote:
Sorry for the double send on the original message. I am still hoping to get some help. I have added additional info below.

On 4/4/24 12:14 PM, Wren Turkal wrote:
Hey there ath11k/bluetooth folks,

I am having a pretty major problem with QCA6930 for some time (maybe a year or two). I have this bluetooth device:

72:00.0 Unassigned class [ff00]: Qualcomm Technologies, Inc QCA6390 Wireless Network Adapter

This device appears to be driven by the ath11k module and others. I hope I am pinging the right lists.

I am using Fedora Rawhide. Fully updated yesterday. My uname reports this:

Linux braindead.localdomain 6.9.0-0.rc2.20240402git026e680b0a08.24.fc41.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr  2 17:51:18 UTC 2024 x86_64 GNU/Linux

Updated today. Here's the new uname:

Linux braindead.localdomain 6.9.0-0.rc2.20240405git8cb4a9a82b21.27.fc41.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr  5 16:48:07 UTC 2024 x86_64 GNU/Linux

I looked at the current mainline kernel code. I found the following.

I found that there was a patch authored by Zijun Hu that was supposed to address a warm reboot issue on QCA6390 here: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/bluetooth/hci_qca.c?h=v6.9-rc3&id=7e7bbddd029b644f00f0ffbfbc485ed71977d0d5

The same code path from the above patch is now slightly different because another patch authored by Krzysztof Kozlowski, namely: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/bluetooth/hci_qca.c?h=v6.9-rc3&id=272970be3dabd24cbe50e393ffee8f04aec3b9a8

I also see a few fixed over time in the btqca.c file. I wonder if any of these are related.

Unfortunately, none of these changes were made recently.

Does anyone have an suggestions for next steps?

I am trying to build kernels as old as 5.19 to start a bisect. I have been unsuccessful due to compiler warnings (presumably from newer version of gcc than were used at the time those kernels were released. Is there any secret sauce to getting these older kernels to build with newer gccs?

Specifically, I am getting this message when trying to build bzImage:
ld: warning: vmlinux has a LOAD segment with RWX permissions

Is there any way to allow the build despite that issue so that I can just see if the kernel version can drive the bluetooth hardware correctly?


I also noticed a new version of bluez. Here is the RPM package version: bluez-5.73-3.fc41.x86_64

My main bluetooth device is  a Logitech MX 3 Mac mouse that uses bluetooth. When bluetooth fails, so does the mouse. I have power cycle my laptop when that happens. I'd love to help find a fix for this.

The problem is that I cannot disable and re-enable the bluetooth on my system. Bluetooth also doesn't work after a warm boot. I have to power cycle my laptop to recover bluetooth funcitonality. I have tried the following:

* logging into KDE Plasma (bluetooth stops working)
* logging into GNOME (works on cold boot, fails on warm boot)

I did notice that the mouse seems to work in Plasma until a few sec after I see the background image appears. I suspect that Plasma is disabling and reenabling the bluetooth where Gnome does not do that.

After logging into GNOME during a cold boot, I have also done "systemctl restart bluetooth.service". I get these journal logs during the stop;

➜  bt_kernel_bug cat journal-stop-bluetooth-service.log
Apr 04 10:14:41 braindead.localdomain NetworkManager[1120]: <info> [1712250881.7060] device (F0:5C:77:F2:60:FC): state change: disconnected -> unmanaged (reason 'removed', sys-iface-state: 'removed') Apr 04 10:14:41 braindead.localdomain systemd[1]: Starting systemd-rfkill.service - Load/Save RF Kill Switch Status... Apr 04 10:14:41 braindead.localdomain systemd[1]: Started systemd-rfkill.service - Load/Save RF Kill Switch Status. Apr 04 10:14:41 braindead.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-rfkill comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' Apr 04 10:14:46 braindead.localdomain systemd[1]: systemd-rfkill.service: Deactivated successfully. Apr 04 10:14:46 braindead.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-rfkill comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

I get these journal logs during start:

Apr 04 10:15:05 braindead.localdomain kernel: Bluetooth: hci0: setting up ROME/QCA6390 Apr 04 10:15:05 braindead.localdomain systemd[1]: Starting systemd-rfkill.service - Load/Save RF Kill Switch Status... Apr 04 10:15:05 braindead.localdomain systemd[1]: Started systemd-rfkill.service - Load/Save RF Kill Switch Status. Apr 04 10:15:05 braindead.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-rfkill comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' Apr 04 10:15:05 braindead.localdomain kernel: Bluetooth: hci0: QCA Product ID   :0x00000010 Apr 04 10:15:05 braindead.localdomain kernel: Bluetooth: hci0: QCA SOC Version  :0x400a0200 Apr 04 10:15:05 braindead.localdomain kernel: Bluetooth: hci0: QCA ROM Version  :0x00000200 Apr 04 10:15:05 braindead.localdomain kernel: Bluetooth: hci0: QCA Patch Version:0x00003ac0 Apr 04 10:15:05 braindead.localdomain kernel: Bluetooth: hci0: QCA controller version 0x02000200 Apr 04 10:15:05 braindead.localdomain kernel: Bluetooth: hci0: QCA Downloading qca/htbtfw20.tlv Apr 04 10:15:06 braindead.localdomain kernel: Bluetooth: hci0: QCA Failed to send TLV segment (-110) Apr 04 10:15:06 braindead.localdomain kernel: Bluetooth: hci0: QCA Failed to download patch (-110) Apr 04 10:15:06 braindead.localdomain kernel: Bluetooth: hci0: Retry BT power ON:0 Apr 04 10:15:08 braindead.localdomain kernel: Bluetooth: hci0: command 0xfc00 tx timeout Apr 04 10:15:08 braindead.localdomain kernel: Bluetooth: hci0: Reading QCA version information failed (-110) Apr 04 10:15:08 braindead.localdomain kernel: Bluetooth: hci0: Retry BT power ON:1 Apr 04 10:15:10 braindead.localdomain systemd[1]: systemd-rfkill.service: Deactivated successfully. Apr 04 10:15:10 braindead.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-rfkill comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' Apr 04 10:15:10 braindead.localdomain kernel: Bluetooth: hci0: command 0xfc00 tx timeout Apr 04 10:15:10 braindead.localdomain kernel: Bluetooth: hci0: Reading QCA version information failed (-110) Apr 04 10:15:10 braindead.localdomain kernel: Bluetooth: hci0: Retry BT power ON:2 Apr 04 10:15:13 braindead.localdomain bluetoothd[986]: Failed to set mode: Authentication Failed (0x05) Apr 04 10:15:13 braindead.localdomain kernel: Bluetooth: hci0: command 0xfc00 tx timeout Apr 04 10:15:13 braindead.localdomain kernel: Bluetooth: hci0: Reading QCA version information failed (-110) Apr 04 10:15:15 braindead.localdomain chronyd[1065]: Selected source 204.17.205.8 (2.fedora.pool.ntp.org) Apr 04 10:15:22 braindead.localdomain systemd[1687]: Created slice background.slice - User Background Tasks Slice. Apr 04 10:15:22 braindead.localdomain systemd[1687]: Starting systemd-tmpfiles-clean.service - Cleanup of User's Temporary Files and Directories... Apr 04 10:15:22 braindead.localdomain systemd[1687]: Finished systemd-tmpfiles-clean.service - Cleanup of User's Temporary Files and Directories.
Apr 04 10:15:38 braindead.localdomain audit: BPF prog-id=86 op=LOAD
Apr 04 10:15:38 braindead.localdomain systemd[1]: Starting plocate-updatedb.service - Update the plocate database... Apr 04 10:15:41 braindead.localdomain systemd[1687]: Started vte-spawn-21527424-cb2d-479f-af17-22251e2b37a0.scope - VTE child process 5144 launched by gnome-terminal-server process 4668. Apr 04 10:15:53 braindead.localdomain systemd[1]: plocate-updatedb.service: Deactivated successfully. Apr 04 10:15:53 braindead.localdomain systemd[1]: Finished plocate-updatedb.service - Update the plocate database. Apr 04 10:15:53 braindead.localdomain systemd[1]: plocate-updatedb.service: Consumed 6.802s CPU time. Apr 04 10:15:53 braindead.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=plocate-updatedb comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' Apr 04 10:15:53 braindead.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=plocate-updatedb comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Apr 04 10:15:54 braindead.localdomain audit: BPF prog-id=86 op=UNLOAD
Apr 04 10:16:13 braindead.localdomain baloo_file_extractor[5251]: kf.idletime: Could not find any system poller plugin Apr 04 10:16:13 braindead.localdomain baloo_file_extractor[5251]: qt.core.qobject.connect: QObject::connect(KAbstractIdleTimePoller, KIdleTime): invalid nullptr parameter Apr 04 10:16:13 braindead.localdomain baloo_file_extractor[5251]: qt.core.qobject.connect: QObject::connect(KAbstractIdleTimePoller, KIdleTime): invalid nullptr parameter

There's a bunch of errors in those logs starting with these two seemingly important lines:

Apr 04 10:15:06 braindead.localdomain kernel: Bluetooth: hci0: QCA Failed to send TLV segment (-110) Apr 04 10:15:06 braindead.localdomain kernel: Bluetooth: hci0: QCA Failed to download patch (-110)

Logs are mostly unchanges when restarting the bluetooth service after a cold boot with the bluetooth originally working.

FWIW, I get similar logs after logging into KDE Plasma. I also get similar logs after a warm boot.

This appears to be some kind of bug in the initialization of the hardware. Is there any additional information I can provide to help troubleshoot this problem.

I will also say that the bluetooth appears to work throught a suspend/resume cycle as long as I don't restart the bluetooth service.

Oh, and my laptop is a Dell 9310 if that helps.

Kalle, I noticed that you reported having a Dell 9310 in 2021 in a message on this very mailing list. Do you happen to still have that laptop? If so, so you still test on that laptop at all? I am curious if it is having the same issue I am experiencing?

Is there any other info I could collect that might be useful?

I'm pretty new to troubleshooting a problem like this and would be happy to have any advice anyone might want to share.

Thanks,
wt





--
You're more amazing than you think!




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux