iwconfig 命令不显示 abgn

gle*_*ezo 2 linux wireless-networking

昨天,我对我的 Linux 系统进行了重大更新。iwconfig命令过去显示802.11[abgn]信息,但现在只显示802.11。

有什么方法可以让 iwconfig 显示卡的可用频段吗?

如果没有,有什么方法可以通过其他命令检索该信息吗?

use*_*686 5

这是故意从Linux 内核 v4.7 中的“WEXT 仿真”代码中删除的

\n

iwconfig使用ioctl(SIOCGIWNAME)从内核获取这段文本,ioctl(SIOCGIWNAME) 是来自 WEXT(无线扩展)API 的函数。然而:

\n
    \n
  1. SIOCGIWNAME 返回的文本限制为 16 个字节,并且IEEE 802.11abgn已经达到该限制 \xe2\x80\x93 没有空间用于指示ac,更不用说更新的修订了。

    \n
  2. \n
  3. WEXT 整体上实际上还停留在 802.11n 时代。它的总体设计实际上早于802.11 Wi-Fi ( iwconfig仍然带有 1988 年 WaveLAN 的子命令),并且它在处理多频段 Wi-Fi 适配器、通道宽度等现代功能时遇到了麻烦。

    \n
  4. \n
\n

大多数现代无线驱动程序都是基于mac80211/cfg80211架构构建的,并直接提供 nl80211 API,它提供了更多功能,并且不受 WEXT 存在的各种问题的影响。内核仍然使用 mac/cfg80211 中的信息来模拟现有的 WEXT 操作,但没有兴趣也没有充分的理由进一步扩展它。(mac80211 架构由 Devicescape 于 2006 年推出;请参阅这篇 LWN 文章。)

\n

这也意味着整个wireless_tools包由于依赖 WEXT API 而被认为是过时的(当然,除非您使用 WEXT 驱动程序)。取而代之的是使用iw来管理具有现代 mac/cfg80211 驱动程序的 Wi-Fi 设备:

\n
    \n
  • iw phy(短缺iw phy phy0 info)将显示您的物理卡的功能。不幸的是,它没有直接说明“802.11b/g/n”,但您仍然可以根据频段、HT/VHT 支持等来推断。

    \n
      \n
    • 802.11a \xe2\x80\x93 显示 5 GHz 频段
    • \n
    • 802.11b \xe2\x80\x93 显示具有 1/2/5.5/11 Mbps“非 HT”比特率的 2.4 GHz 频段
    • \n
    • 802.11g \xe2\x80\x93 显示具有 6/9/12/18/24/36/48/54 Mbps“非 HT”速率的 2.4 GHz 频段
    • \n
    • 802.11n \xe2\x80\x93 在两个频段上均支持“HT”(高吞吐量)
    • \n
    • 802.11ac \xe2\x80\x93 支持 5 GHz 频段上的“VHT”(极高吞吐量)
    • \n
    • 802.11ax \xe2\x80\x93 支持“HE”(高效率)
    • \n
    \n
  • \n
  • iw dev(简称iw dev wlan0 info)会显示软件界面当前的配置,例如频率。从技术上讲,使用相同的 phy 可以拥有多个 wlan# 接口。

    \n
  • \n
  • iw [dev] wlan0 link将更详细地显示当前链接状态。

    \n
  • \n
  • iw [dev] wlan0 station dump与上面类似。

    \n
  • \n
\n
\n

请注意,正如提交消息所述,HT 和 VHT 等功能不再被视为修订(小写字母表示) \xe2\x80\x93 它们已合并到 802.11 的更高版本中,例如“802.11-2012 ”完全包含\'n\',“802.11-2016”包含\'ac\'。

\n

另请注意,模拟更改不会影响 WEXT 本机驱动程序,它们有自己的 ioctl 处理程序。因此,如果您使用的是非常旧的设备 \xe2\x80\x93 或 Realtek \xe2\x80\x93 那么您仍然会得到类似IEEE 802.11-DSIEEE 802.11b

\n