Scanning for wifi networks will show you the ssids of all the wifi networks in your neighbourhood that your wifi adapter can detect or connect to. By default the gui network manager apps do this in kde and gnome desktop environments.
However you can also scan the wifi networks from the command prompt. In this article we take a look at some simple commands that can be used to list out all the wifi networks that can be seen by the wifi adapter.
1. iwlist
The iwlist command when run with root privileges can scan and list out the wifi networks. Using grep we can extract the specific piece of information we are interested in. Here is a minimal example:
$ sudo iwlist wlp0s20f3 scan | grep -i 'frequency\|ssid\|signal'
Frequency:2.442 GHz (Channel 7)
Quality=36/70 Signal level=-74 dBm
ESSID:"AirtelFiber"
Frequency:2.412 GHz (Channel 1)
Quality=43/70 Signal level=-67 dBm
ESSID:"TP-Link_6018"
Frequency:2.422 GHz (Channel 3)
Quality=33/70 Signal level=-77 dBm
ESSID:"Himadri"
Frequency:2.432 GHz (Channel 5)
Quality=31/70 Signal level=-79 dBm
ESSID:"dlink-15A3"
Frequency:2.437 GHz (Channel 6)
Quality=30/70 Signal level=-80 dBm
ESSID:"OnePlus 5"
Frequency:2.447 GHz (Channel 8)
Quality=33/70 Signal level=-77 dBm
ESSID:"Krishna"
Frequency:2.457 GHz (Channel 10)
Quality=29/70 Signal level=-81 dBm
ESSID:"JioFiber-01"
Frequency:2.462 GHz (Channel 11)
Quality=25/70 Signal level=-85 dBm
ESSID:"Ayush22"
Frequency:5.18 GHz (Channel 36)
Quality=22/70 Signal level=-88 dBm
ESSID:"Ayush22_5G"
Frequency:5.22 GHz (Channel 44)
Quality=24/70 Signal level=-86 dBm
ESSID:"Himadri_5G"
Frequency:2.417 GHz (Channel 2)
Quality=33/70 Signal level=-77 dBm
ESSID:"deep wifi"
Frequency:2.452 GHz (Channel 9)
Quality=23/70 Signal level=-87 dBm
ESSID:"Subash_ext"
Frequency:2.462 GHz (Channel 11)
Quality=22/70 Signal level=-88 dBm
ESSID:"angshu"
Frequency:5.745 GHz
Quality=26/70 Signal level=-84 dBm
ESSID:"AirtelFiber_5GHz"
$
You need to specify the interface name of your wifi adapter. If you don't already know that use the iwconfig command to find it.
Note that it is important to run the command with root privileges. Without root the command will run but the output will not be accurate and keep changing everytime.
We can see the ssid, signal level, frequency band and channel number of each wifi network. This is useful information!
2. iw command
The next command is iw and it can scan the wifi networks as well.
$ sudo iw dev wlp0s20f3 scan | grep -i 'ssid\|signal\|^bss'
BSS 98:35:ed:d4:e1:48(on wlp0s20f3) -- associated
signal: -66.00 dBm
SSID: AirtelFiber
BSS ac:84:c6:f4:60:18(on wlp0s20f3)
signal: -62.00 dBm
SSID: TP-Link_6018
BSS b6:a7:c6:53:cf:00(on wlp0s20f3)
signal: -79.00 dBm
SSID:
BSS b4:a7:c6:53:cf:00(on wlp0s20f3)
signal: -80.00 dBm
SSID: Himadri
HESSID: 00:00:00:00:00:00
BSS b4:b0:24:3f:29:44(on wlp0s20f3)
signal: -79.00 dBm
SSID: deep wifi
BSS 8c:a3:99:d3:79:f3(on wlp0s20f3)
signal: -83.00 dBm
SSID: JioFiber-01
BSS 98:35:ed:d4:e1:4c(on wlp0s20f3)
signal: -82.00 dBm
SSID: AirtelFiber_5GHz
BSS b4:a7:c6:53:cf:01(on wlp0s20f3)
signal: -85.00 dBm
SSID: Himadri_5G
BSS b6:a7:c6:53:cf:01(on wlp0s20f3)
signal: -84.00 dBm
SSID:
BSS 8c:a3:99:2f:a9:fd(on wlp0s20f3)
signal: -84.00 dBm
SSID: Ayush22_5G
BSS 0c:80:63:76:5f:90(on wlp0s20f3)
signal: -79.00 dBm
SSID: Krishna
BSS 7a:22:e5:f1:83:6d(on wlp0s20f3)
signal: -83.00 dBm
SSID: OnePlus 5
$
The output has lots of information quite similar to the iwlist command.
3. nmcli command
The nmcli command is actually a tool to control NetworkManager from the terminal. And it can used to query the interface for available wifi networks. Here is a quick example.
Note that we need not provide the interface name of the wifi adapter with nmcli.
$ nmcli dev wifi list
IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY
AC:84:C6:F4:60:18 TP-Link_6018 Infra 1 270 Mbit/s 64 ▂▄▆_ WPA2
* 98:35:ED:D4:E1:48 AirtelFiber Infra 7 130 Mbit/s 53 ▂▄__ WPA2
B4:B0:24:3F:29:44 deep wifi Infra 2 270 Mbit/s 39 ▂▄__ WPA2
B4:A7:C6:53:CF:00 Himadri Infra 3 130 Mbit/s 39 ▂▄__ WPA2
60:63:4C:84:15:AA dlink-15A3 Infra 5 270 Mbit/s 35 ▂▄__ WPA1 WPA2
8C:A3:99:D3:79:F3 JioFiber-01 Infra 10 130 Mbit/s 34 ▂▄__ WPA2
0C:80:63:76:5F:90 Krishna Infra 8 405 Mbit/s 32 ▂▄__ WPA2
8C:A3:99:2F:A9:FC Ayush22 Infra 11 130 Mbit/s 29 ▂___ WPA2
8A:D8:1B:26:FC:02 -- Infra 9 195 Mbit/s 27 ▂___ WPA2
8C:A3:99:2F:A9:FD Ayush22_5G Infra 36 270 Mbit/s 27 ▂___ WPA2
B6:A7:C6:53:CF:01 -- Infra 44 270 Mbit/s 27 ▂___ WPA2
98:35:ED:D4:E1:4C AirtelFiber_5GHz Infra 149 270 Mbit/s 27 ▂___ WPA2
10:62:EB:1D:D2:F5 Debnath_Adv2 Infra 1 270 Mbit/s 25 ▂___ WPA1 WPA2
7A:22:E5:F1:83:6D OnePlus 5 Infra 6 130 Mbit/s 25 ▂___ WPA2
B4:A7:C6:53:CF:01 Himadri_5G Infra 44 270 Mbit/s 24 ▂___ WPA2
84:D8:1B:26:FC:02 Subash_ext Infra 9 195 Mbit/s 22 ▂___ WPA1 WPA2
84:D8:1B:14:9F:D0 Joydip Infra 10 270 Mbit/s 22 ▂___ WPA2
60:E3:27:7B:2B:D4 angshu Infra 11 135 Mbit/s 20 ▂___ WPA2
$
The nmcli command generates a fancy colorful output with a nice looking signal strength bar graph. The output is quite well formatted also.
Conclusion
That was a quick list of commands to query wifi networks from the command shell. If you want to learn more about wifi commands in linux check out our previous articles.
Top 3 Commands to check Wifi Information on Ubuntu / Linux - iwconfig, iwlist, nmcli
How to check what Wifi Standard is being used in Linux
How to check supported Wifi Standards on Linux
How to check USB Wifi Adapter details on Linux - iw, lsusb, iwlist, iwconfig