Linux operating systems come with a various set of tools allowing you to manipulate the Wireless Extensions and monitor wireless networks. Here is a list of Linux tools used for wireless network monitoring tools that can be used from your laptop or desktop system to find out wifi network speed, bit rate, signal quality/strength, and more.

Linux Commands: To Find Out Wireless Network Speed and Other Info

This page shows how to find the speed of the network interface using various commands on Linux. To see the speed of WLAN interface, one can use iwconfig/iw command, cat command, and 3rd party apps. One can use GUI tools too.

1. Find out your Linux wireless card chipset information

Type the following commands to list installed wireless card using combination of lspci command and grep command/egrep command, enter:
$ lspci
$ lspci | grep -i broadcom
$ lspci | grep -i wireless
$ lspci | egrep -i --color 'wifi|wlan|wireless'

Sample outputs:

0c:00.0 Network controller: Intel Corporation Ultimate N WiFi Link 5300

Here is outputs from broadcom based wifi card:

01:00.0 Network controller: Broadcom Inc. and subsidiaries BCM43228 802.11a/b/g/n

Another outputs:

04:00.0 Network controller: Intel Corporation Wireless 7260 (rev bb)

Please note down the 0c:00.0 or 04:00.0 or 01:00.0 number. You can use those to find out device name or driver name.

2. Find out Linux wireless card driver information

Type the following command to get information about wireless card driver, enter:
$ lspci -vv -s 0c:00.0
Sample outputs:

0c:00.0 Network controller: Intel Corporation Ultimate N WiFi Link 5300
	Subsystem: Intel Corporation Device 1121
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR-
	Kernel driver in use: iwlwifi

Another option is to pass the -k option to lspci:
$ lspci -k | more
One can use the lshw command to list network devices including Wi-Fi device on Linux:
sudo lshw -C network
Sample outputs:

       description: Wireless interface
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:52:00.0
       logical name: wlp82s0
       version: 1a
       serial: 06:d5:95:ff:1c:c7
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwlwifi driverversion=5.3.0-18-generic firmware=48.4fa0041f.0 ip= latency=0 link=yes multicast=yes wireless=IEEE 802.11
       resources: irq:18 memory:ee100000-ee103fff

3. Disabling wireless networking ( Wi-Fi )

You may want to disable Wi-Fi on all laptops as it poses a serious security risk to sensitive or classified systems and networks. You can easily disable Wi-Fi under Linux using the techniques described here.

4. How to configure a wireless network interface on Linux

iwconfig command is similar to ifconfig command, but is dedicated to the Linux wireless interfaces. It is used to manipulate the basic wireless parameters such as ssid, mode, channel, bit rates, encryption key, power and much more. To display information about wlan0 wireless interface, enter:
iwconfig Interface-Name-Here
iwconfig wlan0

Sample outputs:

wlan0     IEEE 802.11abgn  ESSID:"nixcraft5g"
          Mode:Managed  Frequency:5.18 GHz  Access Point: 74:44:44:44:57:FC
          Bit Rate=6 Mb/s   Tx-Power=15 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=41/70  Signal level=-69 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:28   Missed beacon:0

In the above output iwconfig command shows lots of information:

  1. The name of the MAC protocol used
  2. ESSID (Network Name)
  3. The NWID
  4. The frequency (or channel)
  5. The sensitivity
  6. The mode of operation
  7. Access Point address
  8. The bit-rate
  9. The RTS threshold
  10. The fragmentation threshold
  11. The encryption key
  12. The power management settings

On modern system you may need to use the iw command. If you are using NetworkManager, try the nmcli CLI for controlling NetworkManager including wifi info. To see all connection NetworkManager has:
$ nmcli connection show
Sample outputs:

NAME                              UUID                                  TYPE             DEVICE 
nixcraft                          18916b35-9d58-42bc-bdc6-fc065940c701  802-11-wireless  wlp4s0 
enp0s25                           6f15bbcc-fe42-4d54-b0ff-4f4ab0fd5d7e  802-3-ethernet   --     

To see details for “nixcraft” wifi connection, run:
$ nmcli connection show "nixcraft"
Sample outputs:

 Linux Commands: To Find Out Wireless Network Speed, Signal Strength And Other Information

Shows details for My Home WiFi connection profile named “nixcraft”

To see details for wlp4s0 (wifi) interface; only GENERAL and WIFI-PROPERTIES sections will be shown:
$ nmcli -f GENERAL,WIFI-PROPERTIES dev show wlp4s0
Sample outputs:

GENERAL.DEVICE:                         wlp4s0
GENERAL.TYPE:                           wifi
GENERAL.NM-TYPE:                        NMDeviceWifi
GENERAL.VENDOR:                         Intel Corporation
GENERAL.PRODUCT:                        Wireless 7260 (Dual Band Wireless-AC 7260)
GENERAL.DRIVER:                         iwlwifi
GENERAL.DRIVER-VERSION:                 3.10.0-514.21.2.el7.x86_64
GENERAL.FIRMWARE-VERSION:               17.352738.0
GENERAL.HWADDR:                         7C:5C:F8:8E:33:A2
GENERAL.MTU:                            0
GENERAL.STATE:                          100 (connected)
GENERAL.REASON:                         0 (No reason given)
GENERAL.UDI:                            /sys/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/net/wlp4s0
GENERAL.IP-IFACE:                       wlp4s0
GENERAL.IS-SOFTWARE:                    no
GENERAL.NM-MANAGED:                     yes
GENERAL.AUTOCONNECT:                    yes
GENERAL.PHYS-PORT-ID:                   --
GENERAL.CONNECTION:                     5G8cc3c8680204b65fb24eeab142d4da
GENERAL.CON-UUID:                       18916b35-9d58-42bc-bdc6-fc065940c701
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/0
GENERAL.METERED:                        no (guessed)
WIFI-PROPERTIES.WEP:                    yes
WIFI-PROPERTIES.WPA:                    yes
WIFI-PROPERTIES.WPA2:                   yes
WIFI-PROPERTIES.TKIP:                   yes
WIFI-PROPERTIES.CCMP:                   yes
WIFI-PROPERTIES.AP:                     yes
WIFI-PROPERTIES.ADHOC:                  yes
WIFI-PROPERTIES.2GHZ:                   yes
WIFI-PROPERTIES.5GHZ:                   yes

How do I find out wifi link quality on Linux?

You can get overall quality of the link. This may be based on the level of contention or interference, the bit or frame error rate, how good the received signal is, some timing synchronisation, or other hardware metric.
# iwconfig wlan0 | grep -i --color quality
Sample outputs:

Link Quality=41/70  Signal level=-69 dBm

41/70 is is an aggregate value, and depends totally on the driver and hardware. Or use the following command to lists available Wi-Fi access points known to NetworkManager including its speed, security, signal, and more:
$ nmcli dev wifi
Sample outputs:

*  SSID                              MODE   CHAN  RATE       SIGNAL  BARS  SECURITY 
*  nixcraft                          Infra  149   54 Mbit/s  42      ▂▄__  WPA2     
   tfarcxin                          Infra  7     54 Mbit/s  37      ▂▄__  WPA2    

How do I find out wifi signal level?

To find out received signal strength (RSSI – how strong the received signal is). This may be arbitrary units or dBm, iwconfig uses driver meta information to interpret the raw value given by /proc/net/wireless and display the proper unit or maximum value (using 8 bit arithmetic). In Ad-Hoc mode, this may be undefined and you should use the iwspy command.
# iwconfig wlan0 | grep -i --color signal
Sample outputs:

Link Quality=41/70  Signal level=-69 dBm

Some parameters are only displayed in short/abbreviated form (such as encryption). You need to use the iwlist command to get all the details.

5. See link quality continuously on screen

You can use /proc/net/wireless file. The iwconfig will also display its content as described above.

cat /proc/net/wireless

Better use the watch (gnuwatch, bsdwatch) command to run cat command repeatedly, displaying wireless signal on screen:

watch -n 1 cat /proc/net/wireless

Sample outputs:

Linux watch wireless signal

Fig.01: Linux watch wireless signal with /proc file system

Note: Again values will depend on the driver and the hardware specifics, so you need to refer to your driver documentation for proper interpretation of those values.

6. Using Gnome NetworkManager

Gnome Network Manger

Fig:02: Gnome Network Manger

Gnome and many other Linux desktop operating system can use NetworkManager to keep an active network connection available at all times. he point of NetworkManager is to make networking configuration and setup as painless and automatic as possible. This package contains a systray applet for GNOME’s notification area but it also works for other desktop environments which provide a systray like KDE or XFCE. It displays the available networks and allows to easily switch between them. For encrypted networks it will prompt the user for the key/passphrase and it can optionally store them in the gnome-keyring. Here is a screenshot of Gnome 3 wifi settings showing WiFi speed and other info:
Wifi settings displaying speed under Gnome 3 desktop

Wifi settings displaying speed under Gnome 3 desktop

Please note that NetworkManager is configured through graphical interfaces, which are available for both GNOME and KDE.

7. Say hello to wavemon

wavemon is a ncurses-based monitoring application for wireless network devices. It displays continuously updated information about signal levels as well as wireless-specific and general network information. Currently, wavemon can be used for monitoring devices supported by the wireless extensions, included in kernels version 2.4 and higher.

Install wavemon

Type the following apt-get command/apt command on a Debian/Ubuntu Linux:
$ sudo apt install wavemon

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 49.5 kB of archives.
After this operation, 121 kB of additional disk space will be used.
Get:1 eoan/universe amd64 wavemon amd64 0.8.2-1 [49.5 kB]
Fetched 49.5 kB in 1s (45.8 kB/s)  
Selecting previously unselected package wavemon.
(Reading database ... 215741 files and directories currently installed.)
Preparing to unpack .../wavemon_0.8.2-1_amd64.deb ...
Unpacking wavemon (0.8.2-1) ...
Setting up wavemon (0.8.2-1) ...
Processing triggers for man-db (2.8.7-3) ...

Type the following zypper command on a OpenSUSE/Suse Linux:
$ sudo zypper install wavemon
Type the following yum command on a RHEL/CentOS/Scientific/Oracle Linux (first enable EPEL repo. See how to enable EPEL on RHEL 8 and CentOS 8):
$ sudo yum install wavemon
Run the following dnf command on a Fedora Linux:
$ sudo dnf install wavemon
Execute the following pacman command on an Arch Linux:
$ sudo pacman -S wavemon
For Alpine Linux, run apk command as follows:
# apk add wavemon

How do I use wavemon?

Just type the following command to see the details:
$ wavemon

wavemon - a wireless network monitor application

Fig.03: wavemon - a wireless network monitor application for Linux

8. Other options

You can use the following tools too:

  1. Wicd which stands for Wireless Interface Connection Daemon, is an open source software utility to manage both wireless and wired networks for Linux.
  2. iwevent command displays Wireless Events received through the RTNetlink socket. Each line displays the specific Wireless Event which describes what has happened on the specified wireless interface. Sample outputs from iwevents:
    Waiting for Wireless Events from interfaces...
    07:11:57.124553   wlan0    Set Mode:Managed
    07:11:57.124621   wlan0    Set ESSID:off/any
    07:12:00.391527   wlan0    Scan request completed
    07:12:10.428741   wlan0    Scan request completed
    07:12:10.432618   wlan0    Set Mode:Managed
    07:12:10.432642   wlan0    Set ESSID:off/any
    07:12:10.432651   wlan0    Set Frequency:5.18 GHz (Channel 36)
    07:12:10.432722   wlan0    Set ESSID:"nixcraft5g"
    07:12:10.647943   wlan0    Association Response IEs:01088C129824B048606C2D1A7E081BFFFFFF00010000000000C20101000000000000000000003D16240D0000000000000000000000000000000000000000DD0
    07:12:10.648019   wlan0    New Access Point/Cell address:74:44:44:44:57:FC
    07:12:22.310182   wlan0    Scan request completed
  3. iwgetid command report ESSID, NWID or AP/Cell Address of wireless network. iwgetid is easier to integrate in various scripts. A sample output from iwgetid command:
    wlan0     ESSID:"nixcraft5g"
  4. iwlist command Get more detailed wireless information from a wireless interface. A typical usage is as follows:
    Usage: iwlist [interface] scanning [essid NNN] [last]
                  [interface] frequency
                  [interface] channel
                  [interface] bitrate
                  [interface] rate
                  [interface] encryption
                  [interface] keys
                  [interface] power
                  [interface] txpower
                  [interface] retry
                  [interface] ap
                  [interface] accesspoints
                  [interface] peers
                  [interface] event
                  [interface] auth
                  [interface] wpakeys
                  [interface] genie
                  [interface] modulation

See also:

  • man pages iwlist, iw, iwconfig, iwgetid, iwevent, iwlist
  • See Linux wireless wiki here

Have a favorite wireless tool for Linux? Let’s hear about it in the comments.

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 32 comments so far... add one
CategoryList of Unix and Linux commands
Disk space analyzersdf ncdu pydf
File Managementcat tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
32 comments… add one
  • kamal kakkar Jun 6, 2012 @ 7:36

    Very helpful

  • Eugene Jun 6, 2012 @ 8:13

    Good tutorial !

  • GoodTimes Jun 6, 2012 @ 8:46

    Thanks, you do good job-)

  • DanielSweden Jun 6, 2012 @ 9:06

    thank you so much for this

  • David Legg Jun 6, 2012 @ 9:50

    Well, you learn something new every day!
    I never knew about the watch command.

  • opensuse Jun 6, 2012 @ 10:06

    very good

  • zafer Jun 6, 2012 @ 10:35

    Wonderful…. It forum is one of the best.

  • Pierre B. Jun 6, 2012 @ 11:35

    Thanks for the info ! i was just after this kind of stuff !

  • Mpak Jun 6, 2012 @ 22:31

    iwconfig is too oldskul. 🙂
    use iw

  • Leaman Crews Jun 7, 2012 @ 0:50

    Very helpful indeed! I specifically learned about wavemon for the first time — what a great little piece of software!

  • cyclop Jun 7, 2012 @ 6:50

    Thanks 4 tutorial…

  • Anup Jun 7, 2012 @ 8:44

    Wireless Extenssion (WEXT) is almost absolute with latest kernels moving wireless subsystem to nl80211 interface. iw is going to be the tool onwards 🙂

  • Joel W Pauling Jun 7, 2012 @ 9:28

    iwconfig is deprecated… please use iw

  • Pothi Kalimuthu Jun 8, 2012 @ 5:19

    Great list of tips. +1 for iw.

  • Jalal Hajigholamali Jun 8, 2012 @ 16:28

    thank you so much for this article

  • Brian Masinick Jun 12, 2012 @ 0:03

    Thanks for the many tips and tools concerning wireless networking. There is only one tool among the list that I’ve not had very good success with, and that is NetworkManager. If anything at all needs to change, it seems to have difficulty with those changes. Two network management tools have fairly consistently worked for me: wicd and a command-based network manager called ceni. These two tools allow me to set up a typical environment for wired and wireless networks, but when something changes, I find these tools easily allow me to remove or alter my configuration, set something else up, and have it work. As long as I know the correct interfaces and their access characteristics, the drivers and networks are functioning properly, these tools work.

    I have found the Debian Wifi Wiki:, which has links to many Wifi drivers, is very helpful for setting up wireless. Much of the information can be applied to other systems. The Arch Wiki is another good source for information about wireless and Wifi:

    Both the Debian and Arch sites liberally reference other sources of information, so if you start at one of these two Wiki sites, you have an excellent chance of locating the information you are looking for.

  • Abhishek Prakash Jun 28, 2012 @ 20:13

    Very helpful for newbees

  • Andreas Sep 15, 2012 @ 14:30

    Great article!!! I tried wavemon and I really like it. It is a nice tool and I didn’t know about it before I read your article. Thanx

  • Nabil Jan 23, 2013 @ 20:15

    I went with wavemon, and bu the way, if the F1 shortcut is not working for you use “i” instead.

  • ILIV Feb 9, 2013 @ 7:55

    Hey, what I think is really missing is a command that shows what PHY mode is currently used: B, G or N. I mean with N you can manually set 54Mbit/s, and in some cases in G you can have more than 54Mbit/s, so these numbers alone can be misleading.

  • francisco Apr 2, 2013 @ 15:23

    thanks a lot!

  • Knaesel May 23, 2013 @ 12:21

    Really helpful, thx!

  • Alec Sep 25, 2013 @ 7:37

    Very helpful, thanks!
    learned new wavemon and /proc/net/wireless!

  • Sriram Jun 5, 2014 @ 7:26

    Really useful. Thanks for sharing this !!

  • ahmed Mar 23, 2015 @ 5:21

    now i work in Linux system. I have two zolertia nodes and I want to know the signal strength or the signal quality between this nodes,, are there any command can help me ??

    thank you very much

  • Peter Mar 31, 2016 @ 17:26

    very good and intresting.

  • Bobby May 16, 2016 @ 20:55

    Thanks for this list.

  • amar yadav May 19, 2016 @ 14:48

    how can check the signal strength in the boss system

  • freifunker freiburg Jun 10, 2016 @ 13:54

    you might add or check for a tool called horst
    that is especially usefull if you want to debug mesh networks
    on debian : apt-get install horst should do the trick, or more usefull on your openwrt router (with at least 8mb of flash) : opkg update ; opkg install horst

  • Neal Jul 11, 2016 @ 10:05

    I just wanted to know, for example your PC is connected to a wireless dongle which is connected to a cellular network. If the link quality and signal strength are tested then does it test the quality of the link and signal between the wifi dongle and the PC or the link quality and strength between the cellular network and the wifi dongle. Please reply 🙂

  • Thomas May 30, 2017 @ 3:08

    1st command for listing devices should also add the one for USB devices (most likely on desktop computers):

    lspci | egrep -i –color ‘wifi|wlan|wireless’

  • anon Sep 20, 2020 @ 20:36

    Just wanted to say thanks. This article is very well written and was very helpful to me.

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum