Connecting to Wi-Fi on Linux can seem like a daunting task, especially if you're used to Windows or macOS. Unlike proprietary systems, where drivers and utilities are often installed automatically, Linux sometimes requires manual configuration. However, this doesn't mean the process has to be long or complicated. In this article, we'll cover all the possible ways to enable Wi-Fi—from simple clicks in the graphical interface to terminal commands for experienced users.
The main problem newbies face is missing drivers for their Wi-Fi adapter or a blocked network interface. In some distributions (for example, Ubuntu or Linux Mint) the network may be disabled by default due to security policy. Other complications are related to hardware components: not all adapters are supported out of the box, especially in older or rare laptop models. But don't worry: even if your Wi-Fi isn't detected by the system, a solution almost always exists.
We will consider:
- 🔍 How to check if the Wi-Fi adapter is enabled in the system
- 🖥️ Enable via graphical user interface (GUI) in popular distributions
- 💻 Terminal commands for network management
- 🔧 Installing missing drivers
- ⚡ Solving common errors (e.g. "no available networks")
1. Checking the status of the Wi-Fi adapter
Before attempting to connect to the network, make sure your Wi-Fi adapter is recognized by the system. To do this, open the terminal (Ctrl+Alt+T) and enter the command:
ip a
Or more detailed:
iwconfig
In the output, look for interfaces with names like wlan0, wlp3s0 or wlo1If there are none, this means that:
- 🔌 The adapter is physically disconnected (for example, by pressing a button on the laptop case)
- 🚫 The driver for the device is not installed
- 🔄 The interface is blocked programmatically (via
rfkill)
If the adapter is listed, but the status is indicated next to it DOWN, it needs to be activated. If there's no adapter at all, skip to the section on drivers.
2. Enabling Wi-Fi via the graphical interface (GUI)
In most modern distributions (for example, Ubuntu 22.04+, Linux Mint 21, Fedora 38) network management is implemented through a utility NetworkManagerIts icon is usually located in the upper-right corner of the taskbar (the network icon ⚡ or 🔗). Click it and follow these steps:
- If Wi-Fi is disabled, you will see an item
Turn on Wi-Fi(orEnable Wi-Fi). Click on it. - Wait for the system to scan for available networks. The list will appear in 5-10 seconds.
- Select your network from the list and enter the password (if required).
- Confirm the connection. The status will change to
Connected.
If the NetworkManager icon is missing from the panel, the service may not be running. Check its status with the following command:
systemctl status NetworkManager
If the service is not active, start it:
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
The adapter is defined in iwconfig|NetworkManager service is running|Wi-Fi is not blocked in rfkill|The network password is correct-->
3. Managing Wi-Fi via the terminal
If a graphical interface is not available (for example, on server versions of Linux) or you prefer to work in the console, use the following commands.
To enable the Wi-Fi adapter:
sudo ip link set wlan0 up
Replace wlan0 to your interface (you can find out its name through ip a).
To scan for available networks:
sudo iwlist wlan0 scan | grep ESSID
To connect to a network (for example, MyWiFi with a password 12345678), create a configuration file:
sudo nano /etc/wpa_supplicant.conf
Add to it:
network={ssid="MyWiFi"
psk="12345678"
}
Then connect:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
sudo dhclient wlan0
If the connection is successful, you will receive an IP address. You can check it with the command:
ip a show wlan0
4. Unlock Wi-Fi via rfkill
Sometimes the Wi-Fi adapter is blocked at the system level. This can happen after an update, a reboot, or due to a hardware button on the laptop. You can check for blocking using the command:
rfkill list
In the output, look for lines with Wireless LAN and status Soft blocked: yes or Hard blocked: yes:
- Soft blocked - software blocking (can be removed by command)
- Hard blocked - hardware lock (you need to press a physical button or switch on the case)
To remove the software lock:
sudo rfkill unblock wifi
If the adapter still won't turn on, check if it's blocked by the BIOS/UEFI. Go to the BIOS settings (usually by pressing F2, Del or Esc when loading) and find parameters like Wireless LAN, Wi-Fi Radio or Network Stack. Make sure they are enabled (Enabled).
What to do if rfkill doesn't show the Wi-Fi adapter?
If in the output rfkill list there is no line with Wireless LAN, this could mean:
1. The adapter driver is not loaded (check lsmod | grep iwlwifi for Intel or lsmod | grep rtl for Realtek).
2. The adapter is disabled in BIOS.
3. The device is physically damaged.
In the first case, install the driver (see the next section).
5. Installing drivers for the Wi-Fi adapter
If your Wi-Fi adapter isn't detected by the system, it's likely missing a driver. In Linux, there are two types of drivers:
- 🔄 Open source — included in the kernel, installed automatically
- 🔒 Proprietary — require manual installation (most often for adapters) Broadcom, Realtek RTL88xx)
You can find out the adapter model using the command:
lspci -knn | grep -iA3 net
Or for USB adapters:
lsusb
Below is a table of popular adapters and commands for installing drivers:
| Manufacturer | Adapter model | Driver installation command |
|---|---|---|
| Intel | AX200, AX210, 8265 | Typically supported by the kernel. Update your system: sudo apt update && sudo apt upgrade |
| Broadcom | BCM43xx | sudo apt install firmware-b43-installer or sudo apt install bcmwl-kernel-source |
| Realtek | RTL8188EU, RTL8821CE | sudo apt install rtl8821ce-dkms (for new kernels) |
| Qualcomm Atheros | AR9485, QCA9377 | Supported by the kernel. If you encounter problems: sudo apt install firmware-atheros |
After installing the driver, reboot the system or load the kernel module manually:
sudo modprobe -r [module_name] && sudo modprobe [module_name]
For example, for Broadcom:
sudo modprobe -r b43 && sudo modprobe b43
6. Solving typical problems
Even if the adapter is enabled and the driver is installed, the connection may not work. Let's look at the most common errors and their solutions.
🔴 Error: "No networks available" or empty Wi-Fi list
Possible causes and solutions:
- 📡 The router is hiding the SSID. Connect manually through the terminal by entering the network name:
nmcli dev wifi connect "MyHiddenWiFi" password "12345678"
sudo airmon-ng stop wlan0mon
sudo iw reg set RU
🔴 Error: "Authentication failed"
This means that the password was entered incorrectly or the router uses a non-standard encryption type (for example, WPA3-Enterprise). Try:
- 🔑 Make sure your password is entered correctly (case-sensitive!)
- 🔄 Restart your router and try connecting again
- 📋 If the network is corporate, request a certificate from the administrator
🔴 Error: "Connected, but no internet access"
Check:
- 🌐 Does the device receive an IP address:
ip a show wlan0 - 🔗 Is the router pingable?
ping 192.168.1.1(replace IP with your router's address) - 📡 Is DNS working?
ping 8.8.8.8(If yes, but the websites don't open, enter the DNS manually)
If you can ping your router but there's no internet, try resetting your network settings:
sudo systemctl restart NetworkManager
sudo nano /etc/resolv.conf
Add the following lines:
nameserver 8.8.8.8
nameserver 1.1.1.1
Save and restart the network.-->
7. Alternative connection methods
If standard methods don't work, try alternative options.
🔄 Usage wpa_supplicant without NetworkManager
This method is useful if NetworkManager is conflicting with the system. First, disable it:
sudo systemctl stop NetworkManager
Then create a config for wpa_supplicant (as in the section about the terminal) and connect:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
sudo dhclient wlan0
🔌 Connecting via USB adapter
If the built-in Wi-Fi isn't working, use an external USB adapter. Most adapters are chip-based. Realtek RTL8188 or Atheros AR9271 supported by Linux without additional drivers. Connect the device, check its availability in lsusb, and repeat the steps from the previous sections for the new interface (usually wlx<MAC-adpec>).
📶 Sharing Wi-Fi from your phone (USB tethering)
If you urgently need to get online and Wi-Fi isn't working, connect your phone via USB and enable tethering. In Linux, the phone will be detected as a network device (usb0 or eth1). The connection will be configured automatically through NetworkManager.
FAQ: Frequently Asked Questions about Wi-Fi on Linux
🔹 Why did Wi-Fi stop working after updating the kernel?
When updating the kernel, proprietary drivers may be lost (for example, for Broadcom or Realtek). Reinstall them:
sudo apt install --reinstall [driver_package_name]
Then reboot the system or load the module manually (sudo modprobe [module]).
🔹 How to enable Wi-Fi on Linux without a password (open network)?
To connect to an open network in the terminal, use:
nmcli dev wifi connect "FreeWiFi"
Or through wpa_supplicant (in the config, specify only ssid, without psk):
network={ssid="FreeWiFi"
key_mgmt=NONE
}
🔹 Is it possible to connect to Wi-Fi 6 (802.11ax) on Linux?
Yes, but it requires:
- Adapter with support
802.11ax(For example, Intel AX200/AX210) - Linux kernel version 5.4+ (for full support)
- Driver
iwlwifi(for Intel) or proprietary driver (for some other chips)
Check your current kernel version: uname -r. Update it if necessary.
🔹 How do I save my Wi-Fi password so I don't have to enter it every time?
If you are connecting via nmcli or NetworkManager, the password is saved automatically. For wpa_supplicant add the following line to the config:
update_config=1
Example:
network={ssid="MyWiFi"
psk="12345678"
update_config=1
}
Now, the next time you connect, the password will be taken from the file.
🔹 Why is Wi-Fi slow on Linux?
The reasons may be different:
- 📶 Interference on the router channel. Check the channel load:
sudo iwlist wlan0 scan | grep Frequencyand change the channel in the router settings. - 🔌 The driver is running in compatibility mode. For Intel check:
iwconfig wlan0 | grep "Bit Rate"If the speed is below 300 Mbps, update the driver. - 🖥️ Bandwidth limitation. Check your router's QoS settings.
For Realtek RTL88xx adapters, disabling power saving often helps: sudo iw dev wlan0 set power_save off.
If none of these methods help, check the adapter's hardware (for example, by connecting a known-good USB Wi-Fi adapter) or contact your distribution's support team. In most cases, installing the correct driver or resetting the network settings resolves the issue.
⚠️ Attention: Network interface and driver settings may vary depending on the Linux distribution and kernel version. For critical systems (e.g., servers), it is recommended to create a backup copy of the configuration files before making changes (/etc/network/interfaces,/etc/wpa_supplicant.conf).