Re: [BUG] rtw88_8723de: Wi-Fi and Bluetooth fail after warm reboot

Lovekesh Solanki <[email protected]> Thu, 6 Aug 2026 16:18:20 +0530
Newsgroups org.kernel.vger.linux-wireless,org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb
Message-ID <anRcsdWWWX7zyfj5@eggarch>
On Sun, Aug 02, 2026 at 11:40:51PM -0600, Snake Pilot wrote:
> Bluetooth: hci0: diag: hci_dev_shtudown: HCI_UP=1 HCI_UNREGISTER=0
> Bluetooth: hci0: diag: calling vendor shutdown callback
> Bluetooth: hci0: diag: btrtl_shutdown_realtek: sending HCI_OP_RESET
> Bluetooth: hci0: diag: btrtl_shutdown_realtek: HCI_OP_RESET completed OK
> Bluetooth: hci0: diag: vendor shutdown returned 0
I'm thinking if reset itself is the problem, since it does not run on
unloading manually but it does on shutdown.

> I did not find the btusb shutdown or rtw_pci_shutdown/D3hot diagnostic
> messages in the persisted previous-boot journal. The journal appears to end
> before the final device shutdown stage, so their absence from the journal
> does not necessarily mean that the callbacks were not invoked.
Yeah it seems it runs after journal is gone.

I suppose we should test by skipping HCI_OP_RESET if that improves the
issue.

Could you apply the attached patch only and start with a cold boot then
do a warm reboot and send the previous and current journal just like you
did before?

Thanks,
Lovekesh
skip-hci-reset.patch (text/plain, 904 B)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 184e95c1625e..e7dd19b20cc8 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -3889,6 +3889,12 @@ static int btusb_shutdown_qca(struct hci_dev *hdev)
 	return 0;
 }

+static int btusb_shutdown_rtl8723de(struct hci_dev *hdev)
+{
+	bt_dev_info(hdev, "skipping HCI_OP_RESET......");
+	return 0;
+}
+
 static ssize_t force_poll_sync_read(struct file *file, char __user *user_buf,
 				    size_t count, loff_t *ppos)
 {
@@ -4338,6 +4344,9 @@ static int btusb_probe(struct usb_interface *intf,
 		set_bit(BTUSB_USE_ALT3_FOR_WBS, &data->flags);
 	}

+	if (id->idVendor == 0x0bda && id->idProduct == 0xb009)
+		hdev->shutdown = btusb_shutdown_rtl8723de;
+
 	if (id->driver_info & BTUSB_ACTIONS_SEMI) {
 		/* Support is advertised, but not implemented */
 		hci_set_quirk(hdev, HCI_QUIRK_BROKEN_ERR_DATA_REPORTING);