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 | grep -i broadcom
$ lspci | grep -i wireless
$ lspci | egrep -i --color 'wifi|wlan|wireless'
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
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
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
*-network 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=192.168.2.232 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:
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:
- The name of the MAC protocol used
- ESSID (Network Name)
- The NWID
- The frequency (or channel)
- The sensitivity
- The mode of operation
- Access Point address
- The bit-rate
- The RTS threshold
- The fragmentation threshold
- The encryption key
- 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
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"
$ nmcli -f GENERAL,WIFI-PROPERTIES dev show wlp4s0
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.FIRMWARE-MISSING: no GENERAL.NM-PLUGIN-MISSING: no 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
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
* 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
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.
Better use the watch (gnuwatch, bsdwatch) command to run cat command repeatedly, displaying wireless signal on screen:
watch -n 1 cat /proc/net/wireless
6. Using Gnome NetworkManagerGnome 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:
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.
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: wavemon 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 http://archive.ubuntu.com/ubuntu 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:
8. Other options
You can use the following tools too:
- Wicd which stands for Wireless Interface Connection Daemon, is an open source software utility to manage both wireless and wired networks for Linux.
- 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
- 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:
- 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
- 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:
|Category||List of Unix and Linux commands|
|Firewall||Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04|
|Network Utilities||dig • host • ip • nmap|
|OpenVPN||CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04|
|Package Manager||apk • apt|
|Processes Management||bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time|
|Searching||grep • whereis • which|
|User Information||groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w|
|WireGuard VPN||Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04|