There are several command-line tools for managing a wireless network interface in Linux systems. A number of these can be used to simply view the wireless network interface status (whether it is up or down, or if it is connected to any network), such as iw, iwlist, ip, ifconfig and others.
And some are used to connect to a wireless network, and these include: nmcli, is a command-line tool used to create, show, edit, delete, enable, and disable network connections, as well as control and display network device status.
First start by checking the name of your network device using the following command. From the output of this command, the device name/interface is wlp1s0 as shown.
$ iw dev phy#0 Interface wlp1s0 ifindex 3 wdev 0x1 addr 38:b1:db:7c:78:c7 type managed
Next, check the Wi-Fi device connection status using the following command.
iw wlp2s0 link Not connected.
From the output above the device is not connected to any network, run the following command to scan available Wi-Fi networks.
sudo iw wlp2s0 scan command failed: Network is down (-100)
Considering the output of the above command, the network device/interface is DOWN, you can turn it On (UP) with the ip command as shown.
$ sudo ip link set wlp1s0 up
If you get the following error, that means your Wifi is hard blocked on Laptop or Computer.
RTNETLINK answers: Operation not possible due to RF-kill
To remove or unblock you need to run the following command to solve the error.
$ echo "blacklist hp_wmi" | sudo tee /etc/modprobe.d/hp.conf $ sudo rfkill unblock all
Then try to turn ON the network device once more, and it should work this time around.
$ sudo ip link set wlp1s0 up
If you know the ESSID of the Wi-Fi network you wish to connect to, move to the next step, otherwise issue the command below to scan available Wi-Fi networks again.
$ sudo iw wlp1s0 scan
And lastly, connect to the wi-fi network using following command, where Hackernet (Wi-Fi network SSID) and localhost22 (password/pre-shared key).
$ nmcli dev wifi connect Hackernet password localhost22
Once connected, verify your connectivity by doing a ping to an external machine and analyze the output of the ping as shown.
$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=48 time=61.7 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=48 time=61.5 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=48 time=61.6 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=48 time=61.3 ms 64 bytes from 8.8.8.8: icmp_seq=5 ttl=48 time=63.9 ms ^C --- 8.8.8.8 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 61.338/62.047/63.928/0.950 ms
That’s It! I hope this article helped you to setup your Wi-Fi network from the Linux command line. As always, if you found this article useful, share your thoughts in the comment section below.
It is a well-presented tutorial. I am currently running CentOS on a desktop. I noticed that my system shows a WiFi interface wlp3s0, and I was able to scan for WiFi networks that I can connect to.
However, the last step using nmcli to connect to my WiFi network is failing with the error message “Error: No Wi-Fi device found“.
If there is no WiFi device, how was I able to complete all the other steps as you mentioned? I even used the command
sudo iw wlp1s0 scan
which listed all the WiFi networks and their related status information.The desktop originally had WiFi when it was running Windows, but it was removed when Windows 7 became outdated and CentOS v7 was installed.
@Laks,
I’m glad you found the tutorial helpful!
It seems like the issue you’re encountering with nmcli could be related to the network manager not recognizing your WiFi device properly. Even though you can see the WiFi interface wlp3s0 and scan for networks using sudo iw wlp1s0 scan, nmcli might not be detecting it correctly.
Here are a few steps you can try to resolve this issue:
If after running:
your interface is wlp1s0
Why in the holy world are you using:
This is the BEST tutorial, quickest possible way to connect WiFi.THANKS A LOT for putting this together Aaron Kili – you rock !
@Bilal
Oh, great! Many thanks for the wonderful words of encouragement. Do not forget to share this article.
I’ve tried hundreds of other tutorials, and I am so happy this one works!!! Thank you so much, I literally cannot thank you enough for this!!!
@Nuna
Welcome, many thanks for the feedback. We are glad this was helpful to you. You may consider sharing this guide.
Thanks for the simple to use steps. Just connected my fedora 29 scientific. Moving on now
@Kensus
That’s great, thanks for the useful feedback.
Hats off to you Aron Kili. I was unable to login to Linux mint 19 cinnamon, it was all black screen, nothing was there. I connected to wifi after going to Console
(ctrl+alt+f1)
,then reinstalled cinnamon after connecting to wifi. Now i am able to use my laptop. Long live Aron.@Sambit
Ok, that’s great. Many thanks for the feedback.
Just curious: was this an “RPM” based system that these commands were run on? or a “DEB” system? (In case I need to install certain components to get the nmcli to run properly!? Great article!
@Eddie
Our test environment was Ubuntu a DEB system, however, nmcli should come pre-installed on all if not most mainstream Linux distros. Thanks for appreciating this piece of work.