Symptoms here: Ryzen 9 7950X, X670E Aorus Master, MediaTek MT7921. WiFi (PCIe) loads fine, Bluetooth (USB) times out with usb 1-9: device descriptor read/64, error -110 — adds 60+ seconds to boot, leaves Bluetooth dead until cold boot.
Root cause: USB devices retain power state through warm reboots. The MT7921's BT half stays in a confused post-firmware-load state, and the kernel can't re-init it cleanly on next boot. Cold boot drains the USB rail and resets the chip, which is why it works.
Fix — systemd service that deauthorizes the USB device before shutdown. Forces a clean state for the next boot.
Create /etc/systemd/system/bt-cleanup.service:
[Unit]
Description=Reset MT7921 Bluetooth USB before shutdown
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'modprobe -r btusb btintel btmtk 2>/dev/null; echo 0 > /sys/bus/usb/devices/1-9/authorized 2>/dev/null; sleep 1; true'
RemainAfterExit=yes
[Install]
WantedBy=halt.target reboot.target shutdown.target
Then:
sudo systemctl daemon-reload
sudo systemctl enable bt-cleanup.service
Find your USB path: Run lsusb -t and look for the MediaTek device. If yours isn't 1-9, replace the path in the service file.
Tested on Ubuntu 24.04, kernel 6.17, BIOS Aorus F42b. Survives warm reboots cleanly, no more 60-second USB enumeration delay, Bluetooth comes up immediately.