Bluetooth controller fails to initialise on Dell XPS 13 (9310)

I’m seeing the exact same thing. The whole issue just felt to me like a race condition between the Bluetooth adapter (QCA6390) and the kernel during adapter boot up. I tried adding some delay in the kernel at adapter startup and it seems to be much more reliable for me now!

If you are willing to test my fix and can patch and compile your own kernel, here’s a patch (made against 5.13.2-1-MANJARO):

diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 0a0056912d51..00faeaca84c6 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -1657,6 +1657,16 @@ static int qca_power_on(struct hci_dev *hdev)
 			gpiod_set_value_cansleep(qcadev->bt_en, 1);
 			/* Controller needs time to bootup. */
 			msleep(150);
+		} else if (soc_type == QCA_QCA6390) {
+			/* The QCA6390 may come integrated with WiFi.
+			 * If so, they share a power supply and the QCA6390
+			 * may still need time to boot up. We can't easily
+			 * detect if this is the case, so wait a bit on startup
+			 * just in case the WiFi was powered on recently
+			 */
+			bt_dev_dbg(hdev, "waiting on QCA6390 to stabilize...");
+			msleep(250);
+			bt_dev_dbg(hdev, "continuing");
 		}
 	}
 

I’ll try to follow up with a prebuilt package with this change later today for those who are willing to test, but who don’t want to go through compiling.