QCA6390 bluetooth doesn't work after warm boot or disable/reenable
Wren Turkal
wt at penguintechs.org
Tue Apr 9 13:09:48 PDT 2024
On 4/9/24 1:03 PM, Luiz Augusto von Dentz wrote:
> Hi Wren,
>
> On Tue, Apr 9, 2024 at 3:53 PM Wren Turkal <wt at penguintechs.org> wrote:
>>
>> On 4/8/24 12:49 PM, Wren Turkal wrote:
>>> +Marcel Holtmann <marcel at holtmann.org>
>>> +Luiz Augusto von Dentz <luiz.dentz at gmail.com>
>>>
>>> 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?
>
> 5.19 seems a little too old, imo, or has it been broken for that long,
> did you at least tried with bluetooth-next? Try contacting the people
> who actually wrote the driver.
I tried adding the folks on the To: line who were involved in writing
the driver. Having had much luck yet.
This is the actual message I am getting to while trying to build the
kernel. I turned off the CONFIG_DEBUG_INFO_BTF option to try to get a
build. That seems to have worked.
Is there some secret method of getting more debug messages from the kernel.
Also, is there some way to get access to the qualcomm docs for this
hardware? I am not some official kernel dev. Do you know anyone that
could help with that?
FAILED: load BTF from vmlinux: Invalid argument
>
>>>>>
>>>>> 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!
>
>
>
--
You're more amazing than you think!
More information about the ath11k
mailing list