When Bluetooth fails on Linux and network interfaces like wlan0 disappear, the issue usually stems from hardware switch conflicts or kernel module errors. This guide diagnoses why the wireless subsystems vanish by checking rfkill states, verifying service dependencies, and reloading necessary drivers to restore connectivity.
Understanding the Hardware Radio Kill Switch
The most common reason for both Bluetooth and Wi-Fi disappearing simultaneously is the activation of a physical or software radio kill switch. Modern laptops often use a single hardware button or keyboard shortcut to toggle all wireless radios. If this switch is engaged, the operating system will not load the drivers for either interface, making them invisible in your network settings.
To verify if this is the cause, you must check the current state of the radio switches using the rfkill utility. Run the command rfkill list in your terminal. Look for entries labeled "Soft blocked: yes" or "Hard blocked: yes." If either is set to yes, the system is preventing the hardware from transmitting. You can unblock these via software by running sudo rfkill unblock all. If the problem persists, check your laptop’s function keys or physical slider to ensure the hardware switch is in the open position.
Checking Core Services and Dependencies
Bluetooth relies heavily on the bluetooth.service daemon provided by BlueZ. If this service is disabled, masked, or failed to start due to a dependency error, Bluetooth will not run. Similarly, while Wi-Fi uses NetworkManager, it often shares underlying kernel resources with Bluetooth. A failure in one subsystem can sometimes cascade into visibility issues for the other.
Start by checking the status of the Bluetooth service with systemctl status bluetooth. If the service is inactive or failed, try restarting it using sudo systemctl restart bluetooth. If it fails to start, examine the logs using journalctl -xeu bluetooth.service for specific error messages. Common errors include missing configuration files or permission issues that prevent the daemon from accessing the hardware.
For Wi-Fi, ensure that NetworkManager is active. Run systemctl status NetworkManager. If it is not running, start it with sudo systemctl enable --now NetworkManager. In some cases, particularly on Ubuntu systems, you may need to reinstall the package to fix corrupted configurations. Refer to our guide on Troubleshooting Package Updates on Linux if you encounter dependency hell during reinstallation.
Verifying Kernel Modules
If the services are running but the interfaces remain missing, the kernel modules responsible for the hardware may have crashed or unloaded. Use the lsmod command to list currently loaded modules. Look for modules related to your Wi-Fi card (often named iwlwifi, ath9k, or brcmfmac) and Bluetooth controllers (such as btusb or btintel).
If these modules are absent, they may have been blacklisted or removed due to an error. You can attempt to reload them manually using sudo modprobe btusb and sudo modprobe iwlwifi (replacing with your specific module name). If the module fails to load, check dmesg | grep -i firmware for missing firmware errors. Missing firmware files in /lib/firmware are a frequent cause of silent driver failures.
Diagnosing Interface Visibility
Once services are confirmed and modules are loaded, verify if the network interfaces appear in the system. The command ip link show or iwconfig should display wlan0 and potentially wlan1 if you have multiple adapters. If they still do not appear, the kernel may not be detecting the hardware at all.
In this scenario, check the PCI bus for devices using lspci | grep -i network. If the Wi-Fi adapter appears here but no interface exists, the driver is likely failing to bind. Reinstalling the driver package or updating the kernel can resolve compatibility issues. For users experiencing broader connectivity problems, such as VM internet issues, see our article on Ubuntu 22.04 VM Internet Connection Issues for related diagnostic strategies.
Permanent Configuration Fixes
After restoring temporary functionality, you should configure the system to maintain stability across reboots. Ensure that Bluetooth is enabled to start automatically by running sudo systemctl enable bluetooth. Additionally, check your BIOS/UEFI settings to ensure that Bluetooth and Wi-Fi are not disabled at the firmware level.
If you frequently connect to Bluetooth peripherals, consider configuring permanent pairing to avoid manual re-pairing after every reboot. Our detailed tutorial on How to Connect Bluetooth Permanently in Linux explains how to manage trusted devices and automate connection profiles for a seamless experience.
Frequently Asked Questions
Why does my Wi-Fi work but Bluetooth does not?
This indicates that the kernel modules for Wi-Fi are loading correctly, but the Bluetooth daemon or its specific USB/PCIe module is failing. Check the bluetooth.service status and ensure the btusb module is present in lsmod.
How do I reset the Bluetooth stack without rebooting?
You can restart the Bluetooth service by running sudo systemctl restart bluetooth. If this fails, unload and reload the Bluetooth kernel modules using sudo rmmod btusb followed by sudo modprobe btusb to force a fresh initialization.
What causes wlan0 to disappear after a kernel update?
Kernel updates often change driver names or require new firmware versions. If the old firmware is removed and the new one is not installed, the driver cannot bind to the hardware. Reinstalling the firmware package for your specific chipset usually resolves this.
Can a hardware fault cause both interfaces to vanish?
Yes, if your laptop has a combined Wi-Fi/Bluetooth card connected via M.2 or PCIe, a loose connection or card failure will remove both interfaces. Check lspci to see if the device is physically detected by the motherboard.
How do I check if my Bluetooth adapter is hard blocked?
Run rfkill list and look for the line corresponding to Bluetooth. If it says "Hard blocked: yes," a physical switch on your device is turned off. You must toggle the physical switch or function key combination to unblock it.