Bug 216580
Summary: | Jabra Elite 75t (ear buds):Unable to connect and use (`hci0: Opcode 0x 401 failed: -16`) | ||
---|---|---|---|
Product: | Drivers | Reporter: | Paul Menzel (pmenzel+bugzilla.kernel.org) |
Component: | Bluetooth | Assignee: | linux-bluetooth (linux-bluetooth) |
Status: | NEW --- | ||
Severity: | normal | CC: | luiz.dentz, pmenzel+bugzilla.kernel.org |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 6.0-rc7 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
`journalctl -o short-precise -u bluetooth -b`
sudo btmon -w /dev/shm/20221013-trace.log `sudo btmon -w /dev/shm/20221021-linux-6.1-rc1+-ge35184f32151-with-patch.log` |
Description
Paul Menzel
2022-10-13 15:36:32 UTC
Created attachment 302992 [details]
`journalctl -o short-precise -u bluetooth -b`
Created attachment 302993 [details]
sudo btmon -w /dev/shm/20221013-trace.log
This looks suspicious: < HCI Command: Microsoft SW RF Kill (0x3f|0x003f) plen 0 #844 [hci0] 226.575196 > HCI Event: Command Complete (0x0e) plen 4 > #845 [hci0] 226.576116 Microsoft SW RF Kill (0x3f|0x003f) ncmd 1 Status: Success (0x00) Which comes from: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/tree/drivers/bluetooth/btintel.c#n2600 The problem is that after sending RFKILL we need to reset again in order for the firmware to become operation again as explained bellow: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/tree/drivers/bluetooth/btintel.c#n2361 Perhaps something like the following makes more sense since what the command was meant for is to synchronize the RFKILL of state of the host with the controller: diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c index a657e9a3e96a..f8be70f7924e 100644 --- a/drivers/bluetooth/btintel.c +++ b/drivers/bluetooth/btintel.c @@ -2597,7 +2597,7 @@ static int btintel_shutdown_combined(struct hci_dev *hdev) * goes off. As a workaround, sends HCI_Intel_SW_RFKILL to put the * device in the RFKILL ON state which turns off the BT LED immediately. */ - if (btintel_test_flag(hdev, INTEL_BROKEN_SHUTDOWN_LED)) { + if (hci_dev_test_flag(hdev, HCI_RFKILLED)) { skb = __hci_cmd_sync(hdev, 0xfc3f, 0, NULL, HCI_INIT_TIMEOUT); if (IS_ERR(skb)) { ret = PTR_ERR(skb); Created attachment 303066 [details]
`sudo btmon -w /dev/shm/20221021-linux-6.1-rc1+-ge35184f32151-with-patch.log`
I tested this on a different system, Dell XPS 13 9360, with the Qualcomm Atheros Communications QCA1x4 Bluetooth 4.0 (0cf3:e300), and Debian sid/unstable with KDE Plasma 5.25/5.26 and *bluez* 5.65-1+b1. Please find the `btmon` output attached.
(In reply to Paul Menzel from comment #5) > Created attachment 303066 [details] > `sudo btmon -w /dev/shm/20221021-linux-6.1-rc1+-ge35184f32151-with-patch.log` > > I tested this on a different system, Dell XPS 13 9360, with the Qualcomm > Atheros Communications QCA1x4 Bluetooth 4.0 (0cf3:e300), and Debian > sid/unstable with KDE Plasma 5.25/5.26 and *bluez* 5.65-1+b1. Please find > the `btmon` output attached. Well the patch above is intel specific and it probably does make any difference for a Qualcomm controller and it doesn't seem there is any attempt to connect to anything in this logs. |