iwconfig command not showing abgn

This was deliberately removed from the "WEXT emulation" code in Linux kernel v4.7.

iwconfig obtains this piece of text from the kernel using ioctl(SIOCGIWNAME), a function from the WEXT (Wireless Extensions) API. However:

  1. The text returned by SIOCGIWNAME is limited to 16 bytes, and IEEE 802.11abgn already hits that limit – there is no space for indicating ac, much less the even-newer amendments.

  2. WEXT as a whole is practically stuck in 802.11n era. Its general design actually predates 802.11 Wi-Fi (iwconfig still carries subcommands for 1988's WaveLAN), and it has trouble dealing with modern features like multi-band Wi-Fi adapters, channel widths, etc.

Most modern wireless drivers are built on mac80211/cfg80211 architecture and directly provide the nl80211 API, which provides far more features and isn't affected by various issues that WEXT has. The kernel still emulates existing WEXT operations using information from mac/cfg80211, but there's no interest nor good reason to extend it any further. (The mac80211 architecture was introduced in 2006 by Devicescape; see this LWN article.)

This also means that the whole wireless_tools package is considered obsolete due to its reliance on WEXT API (except if you use a WEXT driver, of course). In its place, use iw for managing Wi-Fi devices which have modern mac/cfg80211 drivers:

  • iw phy (short for iw phy phy0 info) will show the capabilities of your physical card. Unfortunately it doesn't outright state "802.11b/g/n", but you can still infer that based on bands, HT/VHT support, etc.

    • 802.11a – shows the 5 GHz band
    • 802.11b – shows the 2.4 GHz band with 1/2/5.5/11 Mbps 'non-HT' bitrates
    • 802.11g – shows the 2.4 GHz band with 6/9/12/18/24/36/48/54 Mbps 'non-HT' rates
    • 802.11n – supports "HT" (high throughput) on both bands
    • 802.11ac – supports "VHT" (very high throughput) on the 5 GHz band
    • 802.11ax – supports "HE" (high efficiency)
  • iw dev (short for iw dev wlan0 info) will show the current configuration of the software interface, such as frequency. It's technically possible to have multiple wlan# interfaces using the same phy.

  • iw [dev] wlan0 link will show the current link state in more detail.

  • iw [dev] wlan0 station dump is similar to the above.


Note that, as the commit message says, features like HT and VHT are no longer considered to be amendments (which the lowercase letters indicate) – they have been merged into later editions of 802.11 proper, e.g. "802.11-2012" fully incorporates 'n', and "802.11-2016" includes 'ac'.

Also note that the emulation change doesn't affect WEXT-native drivers, which have their own handlers for ioctls. So if you're using a very old device – or a Realtek – then you'll still get names like IEEE 802.11-DS or IEEE 802.11b in this field.