Wireless networks are one of the primary methods we use to access the internet. Regular monitoring of the WiFi connection information is sometimes necessary, especially in moments when the internet speed fluctuates.
The WiFi information can be easily displayed in Linux using a few command-line tools. These tools provide information such as the name of the wireless network, the signal strength, and the IP address assigned to the device.
In this tutorial, we explore the different methods to display wireless network and driver information.
2. Displaying Wireless Card Chipset and Driver Information
We can use the lspci utility to display information about PCI buses in the system and any connecting devices.
By default, it displays a small list of devices:
$ lspci 00:00.0 Host bridge: Intel Corporation Device 9b61 (rev 0c) 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics (rev 02) 00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 0c) 00:12.0 Signal processing controller: Intel Corporation Comet Lake Thermal Subsytem 00:14.0 USB controller: Intel Corporation Device 02ed 00:14.2 RAM memory: Intel Corporation Device 02ef 00:14.5 SD Host controller: Intel Corporation Device 02f5 ....truncated....
However, we can use different options to request more verbose outputs.
Let’s combine the lscpi command, and the grep command to identify the wireless network card manufacturer:
$ sudo lspci | grep -i wireless 02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTLxxxxCE xxx.11ac PCIe Wireless Network Adapter
We’re using a pipe to combine the lspci command with the grep command. The -i option specifies ignore case.
We can also output the wireless card driver information:
$ sudo lspci -v -s 02:00.0 | grep -i 'kernel' Kernel driver in use: rtw_xxxxce Kernel modules: rtwxx_xxxxce
The -v option produces a more verbose output, while the -s option only shows devices in a specific domain. Here, we’re using the 02:00.0 domain because it’s the identifier of our wireless network card. The domain value may vary in different systems. So it’s good practice to first identify the wireless network card.
We can also use the ethtool utility to display wireless driver and firmware version information. However, we need to first output all network interfaces using the ip command:
$ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000 link/ether f8:0d:ac:28:58:9b brd ff:ff:ff:ff:ff:ff 3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000 link/ether xx:xx:xx:xx:18:d9 brd ff:ff:ff:ff:ff:ff
Here, the third interface wlp2s0 represents the current wireless network interface.
We can then use this value to query for the wireless driver and firmware information:
$ sudo ethtool -i wlp2s0 driver: rtw_8822ce version: 5.15.0-58-generic firmware-version: N/A expansion-rom-version: bus-info: 0000:02:00.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no
We’re using the -i option to specify the driver name.
3. Using nmcli
The nmcli command-line utility is a tool for controlling NetworkManager and reporting the network status. We can use it in the creation, deletion, activation, and deactivation of network connections. Furthermore, we can also control and display the network device status.
Let’s view all the available wireless networks:
$ sudo nmcli dev wifi [sudo] password for redward: IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY 6C:14:6E:E5:35:F4 HUAWEI-5G-Jah3 Infra 149 270 Mbit/s 70 ▂▄▆_ WPA2 * C8:3A:35:58:B2:60 Full Bars Infra 6 270 Mbit/s 69 ▂▄▆_ WPA1 6C:14:6E:E5:35:F0 Zero hour Infra 8 130 Mbit/s 60 ▂▄▆_ WPA2 D8:32:14:46:81:E8 Allan Infra 6 270 Mbit/s 17 ▂___ WPA1 WPA2 F0:2F:A7:CC:69:40 Reinhard Infra 6 270 Mbit/s 15 ▂___ WPA1 WPA2 06:1F:5C:FE:AA:DF HUAWEI Y7 Prime 2018 Infra 11 65 Mbit/s 10 ▂___ WPA2
We can view information such as SSIDs, channels, transfer rates, signal strength, etc. The asterisk indicates the wireless network we are currently connected to.
Alternatively, we can use this command to display even more information about available wireless networks:
$ nmcli -f ALL dev wifi NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY AP Full Bars 46756C6C2042617273 C8:3A:35:58:B2:60 Infra 6 2437 MHz 270 Mbit/s 70 ▂▄▆_ WPA1 AP Zero hour 5A65726F20686F7572 6C:14:6E:E5:35:F0 Infra 8 2447 MHz 130 Mbit/s 59 ▂▄▆_ WPA2 AP HUAWEI-5G-Jah3 4855415745492D35472D4A616833 6C:14:6E:E5:35:F4 Infra 149 5745 MHz 270 Mbit/s 47 ▂▄__ WPA2 AP Reinhard 5265696E68617264 F0:2F:A7:CC:69:40 Infra 6 2437 MHz 270 Mbit/s 22 ▂___ WPA1 AP HUAWEI Y7 Prime 2018 485541574549205937205072696D652032303138 06:1F:5C:FE:AA:DF Infra 11 2462 MHz 65 Mbit/s 15 ▂___ WPA2 ....truncated....
The output above shows the wireless network details in a tabular view. However, we can switch to a multiline view using the -m multiline option:
$ nmcli -m multiline -f ALL dev wifi NAME: AP SSID: Full Bars SSID-HEX: 46756C6C2042617273 BSSID: C8:3A:35:58:B2:60 MODE: Infra CHAN: 6 FREQ: 2437 MHz RATE: 270 Mbit/s ....truncated....
4. Using iwconfig
The iwconfig utility is a tool for setting parameters of the network interface which are specific to the wireless operation. It’s only dedicated to wireless interfaces and not wired connections such as LAN or Ethernet cables.
We can also use it to display the parameters as well as the wireless network statistics available in the /proc/net/wireless directory.
Furthermore, it can change the parameters, like transmit power, the bit rate, the SSID name, and more of the network interface related to Wi-Fi adapters.
Running the iwconfig command without any arguments displays the current wifi connections on the system:
$ iwconfig lo no wireless extensions. enp1s0 no wireless extensions. wlp2s0 IEEE 802.11 ESSID:"Full Bars" Mode:Managed Frequency:2.437 GHz Access Point: C8:3A:35:58:B2:60 Bit Rate=300 Mb/s Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on Link Quality=53/70 Signal level=-57 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:162 Missed beacon:0
However, we can pass the name of the wireless network for specific information:
$ iwconfig wlp2s0 wlp2s0 IEEE 802.11 ESSID:"Full Bars" Mode:Managed Frequency:2.437 GHz Access Point: C8:3A:35:58:B2:60 Bit Rate=162 Mb/s Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on Link Quality=43/70 Signal level=-67 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:79 Missed beacon:0
5. Using iwlist
The iwlist utility displays additional information, such as wifi quality and signal strength or level from a wireless network interface. This information isn’t displayed by the iwconfig command.
It’s available by default on most Linux distros.
Let’s use the iwlist command to display information about our wireless network interface:
$ sudo iwlist wlp2s0 scan wlp2s0 Scan completed : Cell 01 - Address: C8:3A:35:58:B2:60 Channel:6 Frequency:2.437 GHz (Channel 6) Quality=55/70 Signal level=-55 dBm Encryption key:on ESSID:"Full Bars" Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 24 Mb/s; 36 Mb/s; 54 Mb/s Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s Mode:Master ....truncated....
6. Using wavemon
The wavemon utility is an ncurses-based monitoring application for wireless network devices. It shows network statistics in real-time and also shows wireless and network device information.
It splits the network information into different screens, each screen displaying specific information about the wireless network.
We can install wavemon through the local package manager:
$ sudo apt install wavemon
We can verify if it’s successfully installed by checking its version using the -v option:
$ wavemon -v wavemon 0.8.2 Distributed under the terms of the GPLv3.
Alternatively, we can also use the dnf or yum package manager to install wavemon in RHEL-based Linux distros:
$ sudo yum -y install wavemon
Let’s use the wavemon command to display real-time network information:
From the window above, we have different options available to us. For example, pressing the F2 key will display the network information in histogram format.
7. Using GNOME NetworkManager Interface
GNOME and several other Linux distros can use the operating system’s NetworkManager to maintain an active network connection. The main purpose of the NetworkManager is to make the networking setup and configuration as seamless and automatic as possible.
It displays all available networks, and we can easily switch between them. Wireless networks with encryption require us to enter a passphrase or password before connecting. It automatically stores the passwords for encrypted networks for easier reconnection later.
To access the NetworkManager, let’s press the window button on the keyboard and then search for “wifi“:
Clicking on the suggested Wi-Fi option under settings opens up a window with names of available wireless networks:
We can only view more information for wireless networks that we are currently connected to.
Let’s click on the cog icon on the current active wireless network to view more information about it:
We have information on signal strength, link speed, security, and much more. We can also switch through the different tabs to view detailed information on the network identity, IPv4, IPv6, and security.
In this article, we’ve explored different methods to display wireless network information. We first output the wireless chipset and driver information using the lscpi and ethtool commands. Then, we used tools such as nmcli, iwconfig, wavemon to display the wireless network information.
Each method has its advantages and disadvantages in displaying wireless network information. The method to use mostly depends on what results we’re trying to achieve or monitoring specific metrics.