| # 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 <DEVICE_MAC> | |
| 6. Use: bluetoothctl connect <DEVICE_MAC> | |
| 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 | |