diff mbox series

Bluetooth: Apply initial command workaround for more Intel chips

Message ID 20211202162256.31837-1-tiwai@suse.de (mailing list archive)
State Handled Elsewhere
Headers show
Series Bluetooth: Apply initial command workaround for more Intel chips | expand

Checks

Context Check Description
tedd_an/checkpatch success Checkpatch PASS
tedd_an/gitlint fail Bluetooth: Apply initial command workaround for more Intel chips 7: B1 Line exceeds max length (88>80): "Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")"
tedd_an/buildkernel success Build Kernel PASS
tedd_an/testrunnersetup success Test Runner Setup PASS
tedd_an/testrunnerl2cap-tester success Total: 40, Passed: 40 (100.0%), Failed: 0, Not Run: 0
tedd_an/testrunnerbnep-tester success Total: 1, Passed: 1 (100.0%), Failed: 0, Not Run: 0
tedd_an/testrunnermgmt-tester success Total: 493, Passed: 492 (99.8%), Failed: 0, Not Run: 1
tedd_an/testrunnerrfcomm-tester success Total: 9, Passed: 9 (100.0%), Failed: 0, Not Run: 0
tedd_an/testrunnersco-tester success Total: 12, Passed: 12 (100.0%), Failed: 0, Not Run: 0
tedd_an/testrunnersmp-tester success Total: 8, Passed: 8 (100.0%), Failed: 0, Not Run: 0
tedd_an/testrunneruserchan-tester success Total: 4, Passed: 4 (100.0%), Failed: 0, Not Run: 0

Commit Message

Takashi Iwai Dec. 2, 2021, 4:22 p.m. UTC
It seems that a few more Intel chips require the workaround for the
broken initial command.  At least, per openSUSE Bugzilla reports,
8087:0a2a and 8087:0026 need BTUSB_INTEL_BROKEN_INITIAL_NCMD flag.

Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")
Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
Signed-off-by: Takashi Iwai <tiwai@suse.de>

---
 drivers/bluetooth/btusb.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Paul Menzel Dec. 2, 2021, 4:32 p.m. UTC | #1
Dear Takashi,


Am 02.12.21 um 17:22 schrieb Takashi Iwai:
> It seems that a few more Intel chips require the workaround for the
> broken initial command.  At least, per openSUSE Bugzilla reports,
> 8087:0a2a and 8087:0026 need BTUSB_INTEL_BROKEN_INITIAL_NCMD flag.
> 
> Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")
> Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> 

[…]

I have a Dell Latitude E7250 with

     Bus 001 Device 003: ID 8087:0a2a Intel Corp. Bluetooth wireless 
interface

and Bluetooth seems to work fine minus some Linux warnings [1] and a 
problem transferring greater than some bytes files with the Nokia N9 [2].

Linux 5.16-rc3, Dell Inc. Latitude E7250/0TVD2T, BIOS A19 01/23/2018:

```
$ sudo dmesg | grep -i bluet
[    8.173417] calling  bt_init+0x0/0xb3 [bluetooth] @ 301
[    8.173439] Bluetooth: Core ver 2.22
[    8.173463] NET: Registered PF_BLUETOOTH protocol family
[    8.173464] Bluetooth: HCI device and connection manager initialized
[    8.173467] Bluetooth: HCI socket layer initialized
[    8.173470] Bluetooth: L2CAP socket layer initialized
[    8.173473] Bluetooth: SCO socket layer initialized
[    8.173475] initcall bt_init+0x0/0xb3 [bluetooth] returned 0 after 35 
usecs
[    8.216875] Bluetooth: hci0: Legacy ROM 2.5 revision 1.0 build 3 week 
17 2014
[    8.233515] bluetooth hci0: firmware: direct-loading firmware 
intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
[    8.233520] Bluetooth: hci0: Intel Bluetooth firmware file: 
intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
[    8.540884] Bluetooth: hci0: unexpected event for opcode 0xfc2f
[    8.558942] Bluetooth: hci0: Intel BT fw patch 0x32 completed & activated
```


Kind regards,

Paul


[1]: https://bugzilla.kernel.org/show_bug.cgi?id=215189
[2]: 
https://lore.kernel.org/linux-bluetooth/cf71bdea-ec22-e4c9-016c-69e94a130607@molgen.mpg.de/T/#t
Takashi Iwai Dec. 2, 2021, 4:47 p.m. UTC | #2
On Thu, 02 Dec 2021 17:32:14 +0100,
Paul Menzel wrote:
> 
> Dear Takashi,
> 
> 
> Am 02.12.21 um 17:22 schrieb Takashi Iwai:
> > It seems that a few more Intel chips require the workaround for the
> > broken initial command.  At least, per openSUSE Bugzilla reports,
> > 8087:0a2a and 8087:0026 need BTUSB_INTEL_BROKEN_INITIAL_NCMD flag.
> >
> > Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")
> > Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> >
> 
> […]
> 
> I have a Dell Latitude E7250 with
> 
>     Bus 001 Device 003: ID 8087:0a2a Intel Corp. Bluetooth wireless
> interface
> 
> and Bluetooth seems to work fine minus some Linux warnings [1] and a
> problem transferring greater than some bytes files with the Nokia N9
> [2].
> 
> Linux 5.16-rc3, Dell Inc. Latitude E7250/0TVD2T, BIOS A19 01/23/2018:
> 
> ```
> $ sudo dmesg | grep -i bluet
> [    8.173417] calling  bt_init+0x0/0xb3 [bluetooth] @ 301
> [    8.173439] Bluetooth: Core ver 2.22
> [    8.173463] NET: Registered PF_BLUETOOTH protocol family
> [    8.173464] Bluetooth: HCI device and connection manager initialized
> [    8.173467] Bluetooth: HCI socket layer initialized
> [    8.173470] Bluetooth: L2CAP socket layer initialized
> [    8.173473] Bluetooth: SCO socket layer initialized
> [    8.173475] initcall bt_init+0x0/0xb3 [bluetooth] returned 0 after
> 35 usecs
> [    8.216875] Bluetooth: hci0: Legacy ROM 2.5 revision 1.0 build 3
> week 17 2014
> [    8.233515] bluetooth hci0: firmware: direct-loading firmware
> intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
> [    8.233520] Bluetooth: hci0: Intel Bluetooth firmware file:
> intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
> [    8.540884] Bluetooth: hci0: unexpected event for opcode 0xfc2f
> [    8.558942] Bluetooth: hci0: Intel BT fw patch 0x32 completed & activated
> ```

Thanks, so this seems depending on the hardware, maybe a subtle
difference matters.  As far as I read the code changes, the workaround
was applied in the past unconditionally, so it must be fairly safe
even if the chip works as is.

Or, for avoiding the unnecessarily application of the workaround,
should it be changed as a fallback after the failure at the first
try...?


Takashi
Paul Menzel Dec. 2, 2021, 4:58 p.m. UTC | #3
Dear Takashi,


Am 02.12.21 um 17:47 schrieb Takashi Iwai:
> On Thu, 02 Dec 2021 17:32:14 +0100, Paul Menzel wrote:

>> Am 02.12.21 um 17:22 schrieb Takashi Iwai:
>>> It seems that a few more Intel chips require the workaround for the
>>> broken initial command.  At least, per openSUSE Bugzilla reports,
>>> 8087:0a2a and 8087:0026 need BTUSB_INTEL_BROKEN_INITIAL_NCMD flag.
>>>
>>> Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")
>>> Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
>>> Signed-off-by: Takashi Iwai <tiwai@suse.de>
>>>
>>
>> […]
>>
>> I have a Dell Latitude E7250 with
>>
>>      Bus 001 Device 003: ID 8087:0a2a Intel Corp. Bluetooth wireless interface
>>
>> and Bluetooth seems to work fine minus some Linux warnings [1] and a
>> problem transferring greater than some bytes files with the Nokia N9
>> [2].
>>
>> Linux 5.16-rc3, Dell Inc. Latitude E7250/0TVD2T, BIOS A19 01/23/2018:
>>
>> ```
>> $ sudo dmesg | grep -i bluet
>> [    8.173417] calling  bt_init+0x0/0xb3 [bluetooth] @ 301
>> [    8.173439] Bluetooth: Core ver 2.22
>> [    8.173463] NET: Registered PF_BLUETOOTH protocol family
>> [    8.173464] Bluetooth: HCI device and connection manager initialized
>> [    8.173467] Bluetooth: HCI socket layer initialized
>> [    8.173470] Bluetooth: L2CAP socket layer initialized
>> [    8.173473] Bluetooth: SCO socket layer initialized
>> [    8.173475] initcall bt_init+0x0/0xb3 [bluetooth] returned 0 after 35 usecs
>> [    8.216875] Bluetooth: hci0: Legacy ROM 2.5 revision 1.0 build 3 week 17 2014
>> [    8.233515] bluetooth hci0: firmware: direct-loading firmware intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
>> [    8.233520] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
>> [    8.540884] Bluetooth: hci0: unexpected event for opcode 0xfc2f
>> [    8.558942] Bluetooth: hci0: Intel BT fw patch 0x32 completed & activated
>> ```
> 
> Thanks, so this seems depending on the hardware, maybe a subtle
> difference matters.  As far as I read the code changes, the workaround
> was applied in the past unconditionally, so it must be fairly safe
> even if the chip works as is.

Maybe add that to the commit message?

> Or, for avoiding the unnecessarily application of the workaround,
> should it be changed as a fallback after the failure at the first
> try...?

Reading through the openSUSE Bugzilla issue, the failure is:

     Bluetooth: hci0: Reading Intel version command failed (-110)
     Bluetooth: hci0: command 0xfc05 tx timeout

I couldn’t find the report for 8087:0a2a in the issue. Can you check, 
what firmware is used?

If the functionality of 5.14 is restored by your patch, then it should 
work I guess. I didn’t use Bluetooth for file transfers in the past and 
only for connecting to external speakers.


Kind regards,

Paul
Takashi Iwai Dec. 3, 2021, 7:24 a.m. UTC | #4
On Thu, 02 Dec 2021 17:58:01 +0100,
Paul Menzel wrote:
> 
> Dear Takashi,
> 
> 
> Am 02.12.21 um 17:47 schrieb Takashi Iwai:
> > On Thu, 02 Dec 2021 17:32:14 +0100, Paul Menzel wrote:
> 
> >> Am 02.12.21 um 17:22 schrieb Takashi Iwai:
> >>> It seems that a few more Intel chips require the workaround for the
> >>> broken initial command.  At least, per openSUSE Bugzilla reports,
> >>> 8087:0a2a and 8087:0026 need BTUSB_INTEL_BROKEN_INITIAL_NCMD flag.
> >>>
> >>> Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")
> >>> Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
> >>> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> >>>
> >>
> >> […]
> >>
> >> I have a Dell Latitude E7250 with
> >>
> >>      Bus 001 Device 003: ID 8087:0a2a Intel Corp. Bluetooth wireless interface
> >>
> >> and Bluetooth seems to work fine minus some Linux warnings [1] and a
> >> problem transferring greater than some bytes files with the Nokia N9
> >> [2].
> >>
> >> Linux 5.16-rc3, Dell Inc. Latitude E7250/0TVD2T, BIOS A19 01/23/2018:
> >>
> >> ```
> >> $ sudo dmesg | grep -i bluet
> >> [    8.173417] calling  bt_init+0x0/0xb3 [bluetooth] @ 301
> >> [    8.173439] Bluetooth: Core ver 2.22
> >> [    8.173463] NET: Registered PF_BLUETOOTH protocol family
> >> [    8.173464] Bluetooth: HCI device and connection manager initialized
> >> [    8.173467] Bluetooth: HCI socket layer initialized
> >> [    8.173470] Bluetooth: L2CAP socket layer initialized
> >> [    8.173473] Bluetooth: SCO socket layer initialized
> >> [    8.173475] initcall bt_init+0x0/0xb3 [bluetooth] returned 0 after 35 usecs
> >> [    8.216875] Bluetooth: hci0: Legacy ROM 2.5 revision 1.0 build 3 week 17 2014
> >> [    8.233515] bluetooth hci0: firmware: direct-loading firmware intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
> >> [    8.233520] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
> >> [    8.540884] Bluetooth: hci0: unexpected event for opcode 0xfc2f
> >> [    8.558942] Bluetooth: hci0: Intel BT fw patch 0x32 completed & activated
> >> ```
> >
> > Thanks, so this seems depending on the hardware, maybe a subtle
> > difference matters.  As far as I read the code changes, the workaround
> > was applied in the past unconditionally, so it must be fairly safe
> > even if the chip works as is.
> 
> Maybe add that to the commit message?

Maybe, if the upstream agrees with that.  More comments needed from
Intel, as it's a kind of black magic.

> > Or, for avoiding the unnecessarily application of the workaround,
> > should it be changed as a fallback after the failure at the first
> > try...?
> 
> Reading through the openSUSE Bugzilla issue, the failure is:
> 
>     Bluetooth: hci0: Reading Intel version command failed (-110)
>     Bluetooth: hci0: command 0xfc05 tx timeout
> 
> I couldn’t find the report for 8087:0a2a in the issue.

There two different machines in the report.

> Can you check,
> what firmware is used?

It's the place before loading the firmware, so the firmware version
doesn't matter.


thanks,

Takashi
Marcel Holtmann Dec. 3, 2021, 9:18 p.m. UTC | #5
Hi Takashi,

>>>>> It seems that a few more Intel chips require the workaround for the
>>>>> broken initial command.  At least, per openSUSE Bugzilla reports,
>>>>> 8087:0a2a and 8087:0026 need BTUSB_INTEL_BROKEN_INITIAL_NCMD flag.
>>>>> 
>>>>> Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")
>>>>> Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
>>>>> Signed-off-by: Takashi Iwai <tiwai@suse.de>
>>>>> 
>>>> 
>>>> […]
>>>> 
>>>> I have a Dell Latitude E7250 with
>>>> 
>>>>     Bus 001 Device 003: ID 8087:0a2a Intel Corp. Bluetooth wireless interface
>>>> 
>>>> and Bluetooth seems to work fine minus some Linux warnings [1] and a
>>>> problem transferring greater than some bytes files with the Nokia N9
>>>> [2].
>>>> 
>>>> Linux 5.16-rc3, Dell Inc. Latitude E7250/0TVD2T, BIOS A19 01/23/2018:
>>>> 
>>>> ```
>>>> $ sudo dmesg | grep -i bluet
>>>> [    8.173417] calling  bt_init+0x0/0xb3 [bluetooth] @ 301
>>>> [    8.173439] Bluetooth: Core ver 2.22
>>>> [    8.173463] NET: Registered PF_BLUETOOTH protocol family
>>>> [    8.173464] Bluetooth: HCI device and connection manager initialized
>>>> [    8.173467] Bluetooth: HCI socket layer initialized
>>>> [    8.173470] Bluetooth: L2CAP socket layer initialized
>>>> [    8.173473] Bluetooth: SCO socket layer initialized
>>>> [    8.173475] initcall bt_init+0x0/0xb3 [bluetooth] returned 0 after 35 usecs
>>>> [    8.216875] Bluetooth: hci0: Legacy ROM 2.5 revision 1.0 build 3 week 17 2014
>>>> [    8.233515] bluetooth hci0: firmware: direct-loading firmware intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
>>>> [    8.233520] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
>>>> [    8.540884] Bluetooth: hci0: unexpected event for opcode 0xfc2f
>>>> [    8.558942] Bluetooth: hci0: Intel BT fw patch 0x32 completed & activated
>>>> ```
>>> 
>>> Thanks, so this seems depending on the hardware, maybe a subtle
>>> difference matters.  As far as I read the code changes, the workaround
>>> was applied in the past unconditionally, so it must be fairly safe
>>> even if the chip works as is.
>> 
>> Maybe add that to the commit message?
> 
> Maybe, if the upstream agrees with that.  More comments needed from
> Intel, as it's a kind of black magic.
> 
>>> Or, for avoiding the unnecessarily application of the workaround,
>>> should it be changed as a fallback after the failure at the first
>>> try...?
>> 
>> Reading through the openSUSE Bugzilla issue, the failure is:
>> 
>>    Bluetooth: hci0: Reading Intel version command failed (-110)
>>    Bluetooth: hci0: command 0xfc05 tx timeout
>> 
>> I couldn’t find the report for 8087:0a2a in the issue.
> 
> There two different machines in the report.
> 
>> Can you check,
>> what firmware is used?
> 
> It's the place before loading the firmware, so the firmware version
> doesn't matter.

I want to apply this quirk to as little devices as possible. It is one of these quirks we have to hardcode per USB VID:PID since we can’t auto-detect which boot loader is faulty.

So before I blacklist them, we better get a good understand of which they are. Can you include a btmon trace for that part. You most likely have to blacklist btusb.ko, start btmon and then load btusb.ko manually. One with and one without the quirk. And add that to the commit message.

We then try to find that module internally. It must be some SKU that we didn’t have in our test rack.

Regards

Marcel
Takashi Iwai Dec. 4, 2021, 11:20 a.m. UTC | #6
On Fri, 03 Dec 2021 22:18:06 +0100,
Marcel Holtmann wrote:
> 
> Hi Takashi,
> 
> >>>>> It seems that a few more Intel chips require the workaround for the
> >>>>> broken initial command.  At least, per openSUSE Bugzilla reports,
> >>>>> 8087:0a2a and 8087:0026 need BTUSB_INTEL_BROKEN_INITIAL_NCMD flag.
> >>>>> 
> >>>>> Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")
> >>>>> Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
> >>>>> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> >>>>> 
> >>>> 
> >>>> […]
> >>>> 
> >>>> I have a Dell Latitude E7250 with
> >>>> 
> >>>>     Bus 001 Device 003: ID 8087:0a2a Intel Corp. Bluetooth wireless interface
> >>>> 
> >>>> and Bluetooth seems to work fine minus some Linux warnings [1] and a
> >>>> problem transferring greater than some bytes files with the Nokia N9
> >>>> [2].
> >>>> 
> >>>> Linux 5.16-rc3, Dell Inc. Latitude E7250/0TVD2T, BIOS A19 01/23/2018:
> >>>> 
> >>>> ```
> >>>> $ sudo dmesg | grep -i bluet
> >>>> [    8.173417] calling  bt_init+0x0/0xb3 [bluetooth] @ 301
> >>>> [    8.173439] Bluetooth: Core ver 2.22
> >>>> [    8.173463] NET: Registered PF_BLUETOOTH protocol family
> >>>> [    8.173464] Bluetooth: HCI device and connection manager initialized
> >>>> [    8.173467] Bluetooth: HCI socket layer initialized
> >>>> [    8.173470] Bluetooth: L2CAP socket layer initialized
> >>>> [    8.173473] Bluetooth: SCO socket layer initialized
> >>>> [    8.173475] initcall bt_init+0x0/0xb3 [bluetooth] returned 0 after 35 usecs
> >>>> [    8.216875] Bluetooth: hci0: Legacy ROM 2.5 revision 1.0 build 3 week 17 2014
> >>>> [    8.233515] bluetooth hci0: firmware: direct-loading firmware intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
> >>>> [    8.233520] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
> >>>> [    8.540884] Bluetooth: hci0: unexpected event for opcode 0xfc2f
> >>>> [    8.558942] Bluetooth: hci0: Intel BT fw patch 0x32 completed & activated
> >>>> ```
> >>> 
> >>> Thanks, so this seems depending on the hardware, maybe a subtle
> >>> difference matters.  As far as I read the code changes, the workaround
> >>> was applied in the past unconditionally, so it must be fairly safe
> >>> even if the chip works as is.
> >> 
> >> Maybe add that to the commit message?
> > 
> > Maybe, if the upstream agrees with that.  More comments needed from
> > Intel, as it's a kind of black magic.
> > 
> >>> Or, for avoiding the unnecessarily application of the workaround,
> >>> should it be changed as a fallback after the failure at the first
> >>> try...?
> >> 
> >> Reading through the openSUSE Bugzilla issue, the failure is:
> >> 
> >>    Bluetooth: hci0: Reading Intel version command failed (-110)
> >>    Bluetooth: hci0: command 0xfc05 tx timeout
> >> 
> >> I couldn’t find the report for 8087:0a2a in the issue.
> > 
> > There two different machines in the report.
> > 
> >> Can you check,
> >> what firmware is used?
> > 
> > It's the place before loading the firmware, so the firmware version
> > doesn't matter.
> 
> I want to apply this quirk to as little devices as possible. It is one of these quirks we have to hardcode per USB VID:PID since we can’t auto-detect which boot loader is faulty.
> 
> So before I blacklist them, we better get a good understand of which they are. Can you include a btmon trace for that part. You most likely have to blacklist btusb.ko, start btmon and then load btusb.ko manually. One with and one without the quirk. And add that to the commit message.

One of the reporters uploaded the logs to the kernel.org bugzilla
  https://bugzilla.kernel.org/show_bug.cgi?id=215167

(I forgot to add this URL to the patch description, although this
 could be reached from openSUSE Bugzila entry.)

Let me know (or better to access to bugzilla above by yourself) if
anything else is required.


thanks,

Takashi
Fernando Ramos Dec. 5, 2021, 10:33 a.m. UTC | #7
On 21/12/02 05:47PM, Takashi Iwai wrote:
> Thanks, so this seems depending on the hardware, maybe a subtle
> difference matters.  As far as I read the code changes, the workaround
> was applied in the past unconditionally, so it must be fairly safe
> even if the chip works as is.
> 
> Or, for avoiding the unnecessarily application of the workaround,
> should it be changed as a fallback after the failure at the first
> try...?

I don't know if this helps, but I started experiencing this same issue ("hci0:
command 0xfc05 tx timeout") yesterday after a kernel upgrade.

My controller is a different one:

    8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter
    ^^^^^^^^^

I tried with different (older) versions of the v5.15.x kernel but none worked.

Now, this is the interesting (?) part: today, when I switched on the computer
to keep testing, the bluetooth was *already* working once again.

I have reviewed my bash history to try to figure out what is it that I did, and
the only thing I see is that yesterday, before going to sleep, I did a full
poweroff instead of a reset (which is what I used yesterday to try different
kernels).

This does not make any sense... but then I found this [1] post from someone else
who experienced the same.

Is there any reasonable explanation for this? Could this be the reason why you
seem to have different results with the same controller (8087:0a2a)?

[1] https://bbs.archlinux.org/viewtopic.php?pid=2006188#p2006188
Marcel Holtmann Dec. 7, 2021, 4:14 p.m. UTC | #8
Hi Fernando,

>> Thanks, so this seems depending on the hardware, maybe a subtle
>> difference matters.  As far as I read the code changes, the workaround
>> was applied in the past unconditionally, so it must be fairly safe
>> even if the chip works as is.
>> 
>> Or, for avoiding the unnecessarily application of the workaround,
>> should it be changed as a fallback after the failure at the first
>> try...?
> 
> I don't know if this helps, but I started experiencing this same issue ("hci0:
> command 0xfc05 tx timeout") yesterday after a kernel upgrade.
> 
> My controller is a different one:
> 
>    8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter
>    ^^^^^^^^^
> 
> I tried with different (older) versions of the v5.15.x kernel but none worked.
> 
> Now, this is the interesting (?) part: today, when I switched on the computer
> to keep testing, the bluetooth was *already* working once again.
> 
> I have reviewed my bash history to try to figure out what is it that I did, and
> the only thing I see is that yesterday, before going to sleep, I did a full
> poweroff instead of a reset (which is what I used yesterday to try different
> kernels).
> 
> This does not make any sense... but then I found this [1] post from someone else
> who experienced the same.
> 
> Is there any reasonable explanation for this? Could this be the reason why you
> seem to have different results with the same controller (8087:0a2a)?

we trying to figure out what went wrong here. This should be really only an issue on the really early Intel hardware like Wilkens Peak. However it seems it slipped into later parts now as well. We are investigating what happened and see if this can be fixed via a firmware update or if we really have to mark this hardware as having a broken boot loader.

Regards

Marcel
Takashi Iwai Dec. 10, 2021, 1:23 p.m. UTC | #9
On Tue, 07 Dec 2021 17:14:02 +0100,
Marcel Holtmann wrote:
> 
> Hi Fernando,
> 
> >> Thanks, so this seems depending on the hardware, maybe a subtle
> >> difference matters.  As far as I read the code changes, the workaround
> >> was applied in the past unconditionally, so it must be fairly safe
> >> even if the chip works as is.
> >> 
> >> Or, for avoiding the unnecessarily application of the workaround,
> >> should it be changed as a fallback after the failure at the first
> >> try...?
> > 
> > I don't know if this helps, but I started experiencing this same issue ("hci0:
> > command 0xfc05 tx timeout") yesterday after a kernel upgrade.
> > 
> > My controller is a different one:
> > 
> >    8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter
> >    ^^^^^^^^^
> > 
> > I tried with different (older) versions of the v5.15.x kernel but none worked.
> > 
> > Now, this is the interesting (?) part: today, when I switched on the computer
> > to keep testing, the bluetooth was *already* working once again.
> > 
> > I have reviewed my bash history to try to figure out what is it that I did, and
> > the only thing I see is that yesterday, before going to sleep, I did a full
> > poweroff instead of a reset (which is what I used yesterday to try different
> > kernels).
> > 
> > This does not make any sense... but then I found this [1] post from someone else
> > who experienced the same.
> > 
> > Is there any reasonable explanation for this? Could this be the reason why you
> > seem to have different results with the same controller (8087:0a2a)?
> 
> we trying to figure out what went wrong here. This should be really only an issue on the really early Intel hardware like Wilkens Peak. However it seems it slipped into later parts now as well. We are investigating what happened and see if this can be fixed via a firmware update or if we really have to mark this hardware as having a broken boot loader.

The upstream bugzilla indicates that 8087:0aa7 seems hitting the same
problem:
  https://bugzilla.kernel.org/show_bug.cgi?id=215167

OTOH, on openSUSE Bugzilla, there has been a report that applying the
workaround for 8087:0026 may cause another issue about the reset
error, so the entry for 8087:0026 should be dropped.


Takashi
Thorsten Leemhuis Dec. 28, 2021, 12:43 p.m. UTC | #10
Hi, this is your Linux kernel regression tracker speaking.

Hey bluetooth maintainers, what's the status here? It looks like the
issue was discussed quite a bit, but then nothing happened anymore. Or
am I missing something?

Other users seem to still run into the issue, see for example this report:
https://lore.kernel.org/all/b0f6f66b-28aa-9d43-0aab-e6887ee0fda8@logobject.ch/

For the rest of the mail:

[TLDR: I'm adding this regression to regzbot, the Linux kernel
regression tracking bot; most text you find below is compiled from a few
templates paragraphs some of you might have seen already.]

On 02.12.21 17:22, Takashi Iwai wrote:
> It seems that a few more Intel chips require the workaround for the
> broken initial command.  At least, per openSUSE Bugzilla reports,
> 8087:0a2a and 8087:0026 need BTUSB_INTEL_BROKEN_INITIAL_NCMD flag.
> 
> Fixes: 83f2dafe2a62 ("Bluetooth: btintel: Refactoring setup routine for legacy ROM sku")
> Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> 
> ---
>  drivers/bluetooth/btusb.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 75c83768c257..b26989b2df23 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -359,14 +359,16 @@ static const struct usb_device_id blacklist_table[] = {
>  
>  	/* Intel Bluetooth devices */
>  	{ USB_DEVICE(0x8087, 0x0025), .driver_info = BTUSB_INTEL_COMBINED },
> -	{ USB_DEVICE(0x8087, 0x0026), .driver_info = BTUSB_INTEL_COMBINED },
> +	{ USB_DEVICE(0x8087, 0x0026), .driver_info = BTUSB_INTEL_COMBINED |
> +						     BTUSB_INTEL_BROKEN_INITIAL_NCMD },
>  	{ USB_DEVICE(0x8087, 0x0029), .driver_info = BTUSB_INTEL_COMBINED },
>  	{ USB_DEVICE(0x8087, 0x0032), .driver_info = BTUSB_INTEL_COMBINED },
>  	{ USB_DEVICE(0x8087, 0x0033), .driver_info = BTUSB_INTEL_COMBINED },
>  	{ USB_DEVICE(0x8087, 0x07da), .driver_info = BTUSB_CSR },
>  	{ USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL_COMBINED |
>  						     BTUSB_INTEL_BROKEN_INITIAL_NCMD },
> -	{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED },
> +	{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED |
> +						     BTUSB_INTEL_BROKEN_INITIAL_NCMD },
>  	{ USB_DEVICE(0x8087, 0x0a2b), .driver_info = BTUSB_INTEL_COMBINED },
>  	{ USB_DEVICE(0x8087, 0x0aa7), .driver_info = BTUSB_INTEL_COMBINED },
>  	{ USB_DEVICE(0x8087, 0x0aaa), .driver_info = BTUSB_INTEL_COMBINED },

Adding the regression mailing list to the list of recipients, as it
should be in the loop for all regressions, as explained here:
https://www.kernel.org/doc/html/latest/admin-guide/reporting-issues.html

To be sure this issue doesn't fall through the cracks unnoticed, I'm
adding it to regzbot, my Linux kernel regression tracking bot:

#regzbot ^introduced 83f2dafe2a62
#regzbot title bluetooth: more Intel chips require the workaround for
the broken initial command
#regzbot link: https://bugzilla.kernel.org/show_bug.cgi?id=215167
#regzbot link: https://bugzilla.opensuse.org/show_bug.cgi?id=1193124
#regzbot ignore-activity

Reminder: when fixing the issue, please add a 'Link:' tag with the URL
to the report (the parent of this mail) using the kernel.org redirector,
as explained in 'Documentation/process/submitting-patches.rst'. Regzbot
then will automatically mark the regression as resolved once the fix
lands in the appropriate tree. For more details about regzbot see footer.

Sending this to everyone that got the initial report, to make all aware
of the tracking. I also hope that messages like this motivate people to
directly get at least the regression mailing list and ideally even
regzbot involved when dealing with regressions, as messages like this
wouldn't be needed then.

Don't worry, I'll send further messages wrt to this regression just to
the lists (with a tag in the subject so people can filter them away), as
long as they are intended just for regzbot. With a bit of luck no such
messages will be needed anyway.

Ciao, Thorsten (wearing his 'Linux kernel regression tracker' hat)

P.S.: As a Linux kernel regression tracker I'm getting a lot of reports
on my table. I can only look briefly into most of them. Unfortunately
therefore I sometimes will get things wrong or miss something important.
I hope that's not the case here; if you think it is, don't hesitate to
tell me about it in a public reply, that's in everyone's interest.

BTW, I have no personal interest in this issue, which is tracked using
regzbot, my Linux kernel regression tracking bot
(https://linux-regtracking.leemhuis.info/regzbot/). I'm only posting
this mail to get things rolling again and hence don't need to be CC on
all further activities wrt to this regression.

---
Additional information about regzbot:

If you want to know more about regzbot, check out its web-interface, the
getting start guide, and/or the references documentation:

https://linux-regtracking.leemhuis.info/regzbot/
https://gitlab.com/knurd42/regzbot/-/blob/main/docs/getting_started.md
https://gitlab.com/knurd42/regzbot/-/blob/main/docs/reference.md

The last two documents will explain how you can interact with regzbot
yourself if your want to.

Hint for reporters: when reporting a regression it's in your interest to
tell #regzbot about it in the report, as that will ensure the regression
gets on the radar of regzbot and the regression tracker. That's in your
interest, as they will make sure the report won't fall through the
cracks unnoticed.

Hint for developers: you normally don't need to care about regzbot once
it's involved. Fix the issue as you normally would, just remember to
include a 'Link:' tag to the report in the commit message, as explained
in Documentation/process/submitting-patches.rst
That aspect was recently was made more explicit in commit 1f57bd42b77c:
https://git.kernel.org/linus/1f57bd42b77c
Paul Menzel Jan. 16, 2022, 2:06 p.m. UTC | #11
Dear Takashi,


Am 10.12.21 um 14:23 schrieb Takashi Iwai:
> On Tue, 07 Dec 2021 17:14:02 +0100, Marcel Holtmann wrote:

>>>> Thanks, so this seems depending on the hardware, maybe a subtle
>>>> difference matters.  As far as I read the code changes, the workaround
>>>> was applied in the past unconditionally, so it must be fairly safe
>>>> even if the chip works as is.
>>>>
>>>> Or, for avoiding the unnecessarily application of the workaround,
>>>> should it be changed as a fallback after the failure at the first
>>>> try...?
>>>
>>> I don't know if this helps, but I started experiencing this same issue ("hci0:
>>> command 0xfc05 tx timeout") yesterday after a kernel upgrade.
>>>
>>> My controller is a different one:
>>>
>>>     8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter
>>>     ^^^^^^^^^
>>>
>>> I tried with different (older) versions of the v5.15.x kernel but none worked.
>>>
>>> Now, this is the interesting (?) part: today, when I switched on the computer
>>> to keep testing, the bluetooth was *already* working once again.
>>>
>>> I have reviewed my bash history to try to figure out what is it that I did, and
>>> the only thing I see is that yesterday, before going to sleep, I did a full
>>> poweroff instead of a reset (which is what I used yesterday to try different
>>> kernels).
>>>
>>> This does not make any sense... but then I found this [1] post from someone else
>>> who experienced the same.
>>>
>>> Is there any reasonable explanation for this? Could this be the reason why you
>>> seem to have different results with the same controller (8087:0a2a)?
>>
>> we trying to figure out what went wrong here. This should be really only an
>> issue on the really early Intel hardware like Wilkens Peak. However it seems
>> it slipped into later parts now as well. We are investigating what happened >> and see if this can be fixed via a firmware update or if we really 
have to
>> mark this hardware as having a broken boot loader.
> 
> The upstream bugzilla indicates that 8087:0aa7 seems hitting the same
> problem:
>    https://bugzilla.kernel.org/show_bug.cgi?id=215167
> 
> OTOH, on openSUSE Bugzilla, there has been a report that applying the
> workaround for 8087:0026 may cause another issue about the reset
> error, so the entry for 8087:0026 should be dropped.

Can you confirm that commit 95655456e7ce (Bluetooth: btintel: Fix broken 
LED quirk for legacy ROM devices) [1] merged in the current Linux 5.17 
cycle this week fixed the issue?


Kind regards,

Paul


[1]: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=95655456e7cee858a23793f67025765b4c4c227b
Thorsten Leemhuis Jan. 20, 2022, 2:26 p.m. UTC | #12
Hi, this is your Linux kernel regression tracker speaking.

Top-posting for once, to make this easy accessible to everyone.

Could the bluetooth maintainers please provide a status update? I wonder
if it's time to bring this regression to Linus attention, as it seems to
be an issue that hits quite a few users -- and at the same takes quite a
long time to get fixed for a issue where a patch with a workaround was
already proposed one and a half months ago.

Ciao, Thorsten

On 16.01.22 15:06, Paul Menzel wrote:
> 
> Dear Takashi,
> 
> 
> Am 10.12.21 um 14:23 schrieb Takashi Iwai:
>> On Tue, 07 Dec 2021 17:14:02 +0100, Marcel Holtmann wrote:
> 
>>>>> Thanks, so this seems depending on the hardware, maybe a subtle
>>>>> difference matters.  As far as I read the code changes, the workaround
>>>>> was applied in the past unconditionally, so it must be fairly safe
>>>>> even if the chip works as is.
>>>>>
>>>>> Or, for avoiding the unnecessarily application of the workaround,
>>>>> should it be changed as a fallback after the failure at the first
>>>>> try...?
>>>>
>>>> I don't know if this helps, but I started experiencing this same
>>>> issue ("hci0:
>>>> command 0xfc05 tx timeout") yesterday after a kernel upgrade.
>>>>
>>>> My controller is a different one:
>>>>
>>>>     8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter
>>>>     ^^^^^^^^^
>>>>
>>>> I tried with different (older) versions of the v5.15.x kernel but
>>>> none worked.
>>>>
>>>> Now, this is the interesting (?) part: today, when I switched on the
>>>> computer
>>>> to keep testing, the bluetooth was *already* working once again.
>>>>
>>>> I have reviewed my bash history to try to figure out what is it that
>>>> I did, and
>>>> the only thing I see is that yesterday, before going to sleep, I did
>>>> a full
>>>> poweroff instead of a reset (which is what I used yesterday to try
>>>> different
>>>> kernels).
>>>>
>>>> This does not make any sense... but then I found this [1] post from
>>>> someone else
>>>> who experienced the same.
>>>>
>>>> Is there any reasonable explanation for this? Could this be the
>>>> reason why you
>>>> seem to have different results with the same controller (8087:0a2a)?
>>>
>>> we trying to figure out what went wrong here. This should be really
>>> only an
>>> issue on the really early Intel hardware like Wilkens Peak. However
>>> it seems
>>> it slipped into later parts now as well. We are investigating what
>>> happened >> and see if this can be fixed via a firmware update or if
>>> we really 
> have to
>>> mark this hardware as having a broken boot loader.
>>
>> The upstream bugzilla indicates that 8087:0aa7 seems hitting the same
>> problem:
>>    https://bugzilla.kernel.org/show_bug.cgi?id=215167
>>
>> OTOH, on openSUSE Bugzilla, there has been a report that applying the
>> workaround for 8087:0026 may cause another issue about the reset
>> error, so the entry for 8087:0026 should be dropped.
> 
> Can you confirm that commit 95655456e7ce (Bluetooth: btintel: Fix broken
> LED quirk for legacy ROM devices) [1] merged in the current Linux 5.17
> cycle this week fixed the issue?
> 
> 
> Kind regards,
> 
> Paul
> 
> 
> [1]:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=95655456e7cee858a23793f67025765b4c4c227b
>
Takashi Iwai Jan. 20, 2022, 2:32 p.m. UTC | #13
On Sun, 16 Jan 2022 15:06:26 +0100,
Paul Menzel wrote:
> 
> 
> Dear Takashi,
> 
> 
> Am 10.12.21 um 14:23 schrieb Takashi Iwai:
> > On Tue, 07 Dec 2021 17:14:02 +0100, Marcel Holtmann wrote:
> 
> >>>> Thanks, so this seems depending on the hardware, maybe a subtle
> >>>> difference matters.  As far as I read the code changes, the workaround
> >>>> was applied in the past unconditionally, so it must be fairly safe
> >>>> even if the chip works as is.
> >>>>
> >>>> Or, for avoiding the unnecessarily application of the workaround,
> >>>> should it be changed as a fallback after the failure at the first
> >>>> try...?
> >>>
> >>> I don't know if this helps, but I started experiencing this same issue ("hci0:
> >>> command 0xfc05 tx timeout") yesterday after a kernel upgrade.
> >>>
> >>> My controller is a different one:
> >>>
> >>>     8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter
> >>>     ^^^^^^^^^
> >>>
> >>> I tried with different (older) versions of the v5.15.x kernel but none worked.
> >>>
> >>> Now, this is the interesting (?) part: today, when I switched on the computer
> >>> to keep testing, the bluetooth was *already* working once again.
> >>>
> >>> I have reviewed my bash history to try to figure out what is it that I did, and
> >>> the only thing I see is that yesterday, before going to sleep, I did a full
> >>> poweroff instead of a reset (which is what I used yesterday to try different
> >>> kernels).
> >>>
> >>> This does not make any sense... but then I found this [1] post from someone else
> >>> who experienced the same.
> >>>
> >>> Is there any reasonable explanation for this? Could this be the reason why you
> >>> seem to have different results with the same controller (8087:0a2a)?
> >>
> >> we trying to figure out what went wrong here. This should be really only an
> >> issue on the really early Intel hardware like Wilkens Peak. However it seems
> >> it slipped into later parts now as well. We are investigating what
> >> happened >> and see if this can be fixed via a firmware update or
> >> if we really 
> have to
> >> mark this hardware as having a broken boot loader.
> >
> > The upstream bugzilla indicates that 8087:0aa7 seems hitting the same
> > problem:
> >    https://bugzilla.kernel.org/show_bug.cgi?id=215167
> >
> > OTOH, on openSUSE Bugzilla, there has been a report that applying the
> > workaround for 8087:0026 may cause another issue about the reset
> > error, so the entry for 8087:0026 should be dropped.
> 
> Can you confirm that commit 95655456e7ce (Bluetooth: btintel: Fix
> broken LED quirk for legacy ROM devices) [1] merged in the current
> Linux 5.17 cycle this week fixed the issue?

I myself have no such devices, so cannot confirm by myself.

The openSUSE Tumbleweed kernel is already updated with the upstream
fix (in 5.16.1), so user will notice whether any regression happens or
not.  Let's see.


Takashi
Marcel Holtmann Jan. 20, 2022, 3:07 p.m. UTC | #14
Hi Thorsten,

> Could the bluetooth maintainers please provide a status update? I wonder
> if it's time to bring this regression to Linus attention, as it seems to
> be an issue that hits quite a few users -- and at the same takes quite a
> long time to get fixed for a issue where a patch with a workaround was
> already proposed one and a half months ago.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=95655456e7cee858a23793f67025765b4c4c227b

Regards

Marcel
Thorsten Leemhuis Jan. 20, 2022, 3:13 p.m. UTC | #15
On 20.01.22 16:07, Marcel Holtmann wrote:
> 
>> Could the bluetooth maintainers please provide a status update? I wonder
>> if it's time to bring this regression to Linus attention, as it seems to
>> be an issue that hits quite a few users -- and at the same takes quite a
>> long time to get fixed for a issue where a patch with a workaround was
>> already proposed one and a half months ago.
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=95655456e7cee858a23793f67025765b4c4c227b

Ahh, okay, many thx for the update, it wasn't clear enough to me that
this should fix the issue. Would have been nice if the commit would have
had "Link:" tags to all reports about the issue (as explained in
Documentation/process/submitting-patches.rst and
Documentation/process/5.Posting.rst ), as that would have avoided confusion.

Anyway, to close this:

#regzbot introduced: ffcba827c0a1d
#regzbot fixed-by: 95655456e7cee858a23793f67025765b4c4c227b

Ciao, Thorsten
diff mbox series

Patch

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 75c83768c257..b26989b2df23 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -359,14 +359,16 @@  static const struct usb_device_id blacklist_table[] = {
 
 	/* Intel Bluetooth devices */
 	{ USB_DEVICE(0x8087, 0x0025), .driver_info = BTUSB_INTEL_COMBINED },
-	{ USB_DEVICE(0x8087, 0x0026), .driver_info = BTUSB_INTEL_COMBINED },
+	{ USB_DEVICE(0x8087, 0x0026), .driver_info = BTUSB_INTEL_COMBINED |
+						     BTUSB_INTEL_BROKEN_INITIAL_NCMD },
 	{ USB_DEVICE(0x8087, 0x0029), .driver_info = BTUSB_INTEL_COMBINED },
 	{ USB_DEVICE(0x8087, 0x0032), .driver_info = BTUSB_INTEL_COMBINED },
 	{ USB_DEVICE(0x8087, 0x0033), .driver_info = BTUSB_INTEL_COMBINED },
 	{ USB_DEVICE(0x8087, 0x07da), .driver_info = BTUSB_CSR },
 	{ USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL_COMBINED |
 						     BTUSB_INTEL_BROKEN_INITIAL_NCMD },
-	{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED },
+	{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED |
+						     BTUSB_INTEL_BROKEN_INITIAL_NCMD },
 	{ USB_DEVICE(0x8087, 0x0a2b), .driver_info = BTUSB_INTEL_COMBINED },
 	{ USB_DEVICE(0x8087, 0x0aa7), .driver_info = BTUSB_INTEL_COMBINED },
 	{ USB_DEVICE(0x8087, 0x0aaa), .driver_info = BTUSB_INTEL_COMBINED },