When encountering a "Linux Wi-Fi device not ready" error, the issue typically stems from driver problems, hardware conflicts, or network manager misconfigurations. Here's a structured approach to troubleshooting:
1. Verify Hardware and Driver Status
- Check if the Wi-Fi adapter is recognized: Use
lspci grep Network
orlsusb grep Wireless
to confirm the device is listed. If not, the hardware might be faulty or not properly connected. - Examine driver loading: Run
dmesg grep -i firmware
ordmesg grep -i wifi
to check for any driver-related errors during boot. Missing firmware or driver loading failures are common causes. - Identify the driver in use: Use
lshw -C network
. This command will show the "configuration" section which includes the driver in use, resource and firmware if available.
2. Network Manager and Interface Configuration
- Check NetworkManager status: Use
systemctl status NetworkManager
to ensure the service is running. If not, start it withsudo systemctl start NetworkManager
and enable it to start on boot withsudo systemctl enable NetworkManager
. - Verify interface status: Use
ip link show
to check if the Wi-Fi interface (e.g., wlan0, wlp3s0) is listed and if it's in the "UP" state. If it's down, bring it up withsudo ip link set wlan0 up
(replace wlan0 with your interface name). - Ensure proper interface management: Make sure NetworkManager is controlling the interface. Edit
/etc/NetworkManager/*
and ensuremanaged=true
in the[ifupdown]
section (create the section if it doesn't exist).
3. Driver Issues and Firmware
- Update or Reinstall Drivers: Use your distribution's package manager (e.g.,
apt
,yum
,pacman
) to update or reinstall the Wi-Fi drivers. Search for packages related to your Wi-Fi adapter model. - Firmware Installation: If the
dmesg
output indicates missing firmware, identify the correct firmware package and install it. These packages often have names likefirmware-iwlwifi
(Intel) orlinux-firmware
. - Consider a different driver: Sometimes, the default driver might not be optimal. Research alternative drivers for your Wi-Fi adapter model.
4. Power Management
- Disable power management: Power management features can sometimes interfere with Wi-Fi connectivity. Create or edit
/etc/NetworkManager/conf.d/*
and set* = 2
(disable) in the[connection]
section. Restart NetworkManager after making this change.
5. Check for Hardware Conflicts
- Blacklisting modules: Identify conflicting modules with
lsmod
and blacklist them by creating a file in/etc/modprobe.d/
.
6. Regulatory Domain
- Set the regulatory domain: Sometimes, the regulatory domain is not set correctly, causing the Wi-Fi device to be disabled. Set it using
sudo iw reg set [country code]
(e.g., US for United States). Make this change persistent by addingoptions cfg80211 ieee80211_regdom=[country code]
to/etc/modprobe.d/*
.
If the problem persists, provide detailed information about your Wi-Fi adapter model, Linux distribution, and any relevant error messages for further assistance.