# Reset Bluetooth You are helping the user completely reset the Bluetooth subsystem to fix persistent issues. ## Task **WARNING:** This will remove all paired Bluetooth devices and require re-pairing. 1. **Ask user to confirm:** - This will unpair all Bluetooth devices - Devices will need to be paired again - Bluetooth service will be restarted 2. **Stop Bluetooth service:** ```bash # Stop Bluetooth sudo systemctl stop bluetooth # Verify stopped systemctl is-active bluetooth ``` 3. **Kill any remaining Bluetooth processes:** ```bash # Kill bluetoothd sudo killall bluetoothd 2>/dev/null # Kill bluetooth-related processes ps aux | grep bluetooth | grep -v grep sudo killall -9 bluez-alsa bluez-obexd 2>/dev/null ``` 4. **Remove Bluetooth pairing cache:** ```bash # Remove paired devices database sudo rm -rf /var/lib/bluetooth/* # Show what was removed echo "Removed all paired device data from /var/lib/bluetooth/" ``` 5. **Clear user Bluetooth cache:** ```bash # Remove user Bluetooth cache rm -rf ~/.cache/bluetooth 2>/dev/null rm -rf ~/.local/share/bluetooth 2>/dev/null echo "Cleared user Bluetooth cache" ``` 6. **Reset Bluetooth modules:** ```bash # Remove Bluetooth kernel modules sudo modprobe -r bnep sudo modprobe -r bluetooth sudo modprobe -r btusb sudo modprobe -r btintel # Intel Bluetooth sudo modprobe -r btrtl # Realtek Bluetooth echo "Bluetooth modules unloaded" sleep 2 ``` 7. **Reload Bluetooth modules:** ```bash # Reload modules sudo modprobe bluetooth sudo modprobe btusb sudo modprobe bnep # Load vendor-specific modules if needed sudo modprobe btintel 2>/dev/null sudo modprobe btrtl 2>/dev/null echo "Bluetooth modules reloaded" ``` 8. **Reset HCI interface:** ```bash # Bring down Bluetooth controller sudo hciconfig hci0 down 2>/dev/null sleep 1 # Bring it back up sudo hciconfig hci0 up 2>/dev/null # Reset the controller sudo hciconfig hci0 reset 2>/dev/null echo "HCI interface reset" ``` 9. **Unblock Bluetooth:** ```bash # Unblock Bluetooth (soft and hard) sudo rfkill unblock bluetooth # Verify not blocked rfkill list bluetooth ``` 10. **Start Bluetooth service:** ```bash # Start and enable Bluetooth sudo systemctl start bluetooth sudo systemctl enable bluetooth # Wait for service to fully start sleep 3 # Check status systemctl status bluetooth --no-pager ``` 11. **Power on Bluetooth controller:** ```bash # Turn on Bluetooth bluetoothctl power on # Set as discoverable (optional) bluetoothctl discoverable on # Set pairable bluetoothctl pairable on # Show controller info bluetoothctl show ``` 12. **Verify Bluetooth is working:** ```bash # Check service echo "Service status: $(systemctl is-active bluetooth)" # Check controller echo "Controller powered: $(bluetoothctl show | grep Powered)" # Check for adapters hciconfig -a # Start scanning to test echo "Starting scan for 10 seconds..." timeout 10 bluetoothctl scan on bluetoothctl devices ``` 13. **Create reset report:** ```bash cat > /tmp/bluetooth-reset-report.txt << EOF Bluetooth Reset Report ====================== Date: $(date) === Service Status === $(systemctl status bluetooth --no-pager) === Controller Info === $(bluetoothctl show) === Hardware Info === $(hciconfig -a) === RF Kill Status === $(rfkill list bluetooth) === Loaded Modules === $(lsmod | grep -E "bluetooth|bnep|btusb") === Kernel Messages (last 20) === $(dmesg | grep -i bluetooth | tail -20) Next Steps: 1. Your Bluetooth has been reset 2. All previous pairings have been removed 3. Put your device in pairing mode 4. Use: bluetoothctl scan on 5. Use: bluetoothctl pair 6. Use: bluetoothctl connect EOF cat /tmp/bluetooth-reset-report.txt ``` ## USB Bluetooth Adapter Reset If using USB Bluetooth adapter: ```bash # Find USB Bluetooth device usb_bt=$(lsusb | grep -i bluetooth | head -1) echo "Found: $usb_bt" # Get bus and device numbers bus=$(echo $usb_bt | awk '{print $2}') dev=$(echo $usb_bt | awk '{print $4}' | tr -d ':') # Reset USB device echo "Resetting USB device: Bus $bus Device $dev" sudo usb_modeswitch -v 0x$(lsusb | grep -i bluetooth | awk '{print $6}' | cut -d: -f1) \ -p 0x$(lsusb | grep -i bluetooth | awk '{print $6}' | cut -d: -f2) \ --reset-usb 2>/dev/null # Alternative: unbind and rebind device_path="/sys/bus/usb/devices/$bus-*" echo "Unbinding and rebinding USB device" echo "$bus-*" | sudo tee /sys/bus/usb/drivers/usb/unbind 2>/dev/null sleep 2 echo "$bus-*" | sudo tee /sys/bus/usb/drivers/usb/bind 2>/dev/null ``` ## Firmware Reload If firmware issues persist: ```bash # Check firmware files ls -l /lib/firmware/ | grep -i bluetooth # Reload firmware (device-specific) # For Intel Bluetooth: sudo rmmod btintel sudo modprobe btintel # For Realtek: sudo rmmod btrtl sudo modprobe btrtl # Check if firmware loaded dmesg | grep -i "bluetooth.*firmware" | tail -5 ``` ## Complete System Reset Nuclear option if nothing else works: ```bash # Stop everything sudo systemctl stop bluetooth sudo killall -9 bluetoothd # Remove all data sudo rm -rf /var/lib/bluetooth/* rm -rf ~/.cache/bluetooth rm -rf ~/.local/share/bluetooth # Remove and reload all modules sudo modprobe -r bnep bluetooth btusb btintel btrtl sleep 3 sudo modprobe bluetooth btusb bnep # Remove config (will regenerate) sudo mv /etc/bluetooth/main.conf /etc/bluetooth/main.conf.backup # Reboot system echo "A system reboot is recommended for complete reset" # sudo reboot ``` ## Post-Reset Pairing Guide user through pairing: ```bash cat << 'EOF' To pair a device after reset: 1. Put device in pairing mode 2. Start Bluetooth scan: bluetoothctl scan on 3. Find your device MAC address in the list 4. Pair the device: bluetoothctl pair XX:XX:XX:XX:XX:XX 5. Trust the device: bluetoothctl trust XX:XX:XX:XX:XX:XX 6. Connect: bluetoothctl connect XX:XX:XX:XX:XX:XX 7. Stop scanning: bluetoothctl scan off For audio devices, you may need to restart PipeWire: systemctl --user restart pipewire wireplumber EOF ``` ## Troubleshooting **Reset didn't work:** ```bash # Try full reboot sudo reboot # Or try removing Bluetooth packages and reinstalling # sudo apt remove bluez bluetooth # sudo apt install bluez bluetooth ``` **Service won't start:** ```bash # Check for errors journalctl -u bluetooth --since "5 minutes ago" --no-pager # Check if masked sudo systemctl unmask bluetooth # Force restart sudo systemctl restart bluetooth ``` **No adapters found:** ```bash # Check hardware detection lsusb | grep -i bluetooth lspci | grep -i bluetooth # Check kernel modules lsmod | grep bluetooth ``` ## Notes - Backup `/var/lib/bluetooth/` before reset if you want to preserve pairings - Some devices may require specific PIN codes during pairing - Audio devices may need additional PipeWire/PulseAudio configuration - Bluetooth 5.0+ devices are backward compatible - LE (Low Energy) devices may require special pairing procedures - System reboot recommended after complete reset - Check `/var/log/syslog` for detailed Bluetooth errors