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

Ok, I think I found a much simpler temporary solution while I attempt a permanent fix. You can delay the loading of the module hci_uart which seems to fix the problem.

Step 1: Prevent automatic loading of module

$ echo "blacklist hci_uart" | sudo tee /etc/modprobe.d/blacklist_bt.conf

Step 2: Create service to load after 10 second delay

$ cat << EOF | sudo tee /etc/systemd/system/load_bt.service
[Unit]
Description=QCA6390 Workaround

[Service]
ExecStartPre=/bin/sleep 10
ExecStart=/usr/bin/modprobe hci_uart

[Install]
WantedBy=multi-user.target
EOF

Step 3: Register the new service with systemd

$ sudo systemctl enable load_bt.service

Step 4: Reboot

These steps prevent the loading of the Bluetooth driver immediately. Instead, a new service waits 10 seconds then manually loads module. This doesn’t require any modifications to the kernel and should work on any recent version (say 5.10+). What you should see is that the Bluetooth is working within 15 seconds of the graphical interface appearing.

Please let me know if this fix helps. I’m actively trying to debug why this fails and seeing the error messages from others is very helpful.

How to undo

Run sudo systemctl disable load_bt.service and then delete the two files created above.

$ sudo systemctl disable load_bt.service
$ sudo rm /etc/systemd/system/load_bt.service
$ sudo rm /etc/modprobe.d/blacklist_bt.conf
1 Like