确定 AP 的无线监管范围

确定 AP 的无线监管范围

随着内核补丁的推出,我间歇性地观察到的问题是,我的 wifi 并不总是从 AP 获取监管域。症状是连接性差,经常掉线,解决方法是发出命令sudo iw reg set US,我通常将其放在 /etc/rc.local 中,如下所示iw reg set US

所以问题是:有人知道如何查询 AP(linksys WRT610N)以询问它设置为什么监管域吗?

按照以下评论中的建议更改 /etc/default/crda 后,我上次启动时 /var/log/dmesg 的摘录如下: 如果我读得正确,监管域被初始化为世界,然后使用 /etc/default/crda 中的信息,监管域更新为美国。

[   12.109314] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled
[   12.109317] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUGFS enabled
[   12.109318] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled
[   12.109320] iwlwifi 0000:02:00.0: Detected Intel(R) Centrino(R) Wireless-N 2230 BGN, REV=0xC8
[   12.109419] iwlwifi 0000:02:00.0: L1 Enabled; Disabling L0S
[   12.124492] intel_rapl: domain uncore energy ctr 380974:380974 not working, skip
[   12.183857] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs'
[   12.394864] cfg80211: World regulatory domain updated:
[   12.394867] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[   12.394868] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   12.394869] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   12.394870] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[   12.394871] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   12.394872] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   12.522154] cfg80211: Calling CRDA for country: US
[   12.523937] cfg80211: Regulatory domain changed to country: US
[   12.523939] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[   12.523941] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[   12.523942] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm)
[   12.523943] cfg80211:   (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   12.523943] cfg80211:   (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   12.523944] cfg80211:   (5650000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   12.523945] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm)
[   12.523946] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 4000 mBm)

答案1

有人知道如何查询 AP(linksys WRT610N)以询问它设置为哪个监管域吗?

简短的回答是:您无法向 AP 查询其监管域。

在我按照下面的评论中的建议更改 /etc/default/crda 后,以下是我上次启动时 /var/log/dmesg 的摘录:如果我没有看错的话,监管域被初始化为世界,然后使用 /etc/default/crda 中的信息,监管域更新为美国。

就是这样应该工作

在无线核心(cfg80211)初始化时,世界监管域(高度限制)将被设置为中央监管域。如果存在 CRDA,则从 CRDA 查询最新的动态世界监管域;如果不是,则使用静态定义的列表。

我不会担心,如果您的 802.11 设备运行正常并且没有其他问题,您可以忽略它。

答案2

你问:

所以问题是:有人知道如何查询 AP(linksys WRT610N)来询问它设置为什么监管域吗?

Linux 的标准iw工具对于 WiFi 配置就是这样的。

802.11d于 2001 年推出,为 WiFi 接入点提供了宣布国家和监管详细信息的功能,事实上大多数接入点都这样做。请参阅“802.11 框架详解”一章802.11 无线网络:权威指南了解有关该信息在 WiFi 帧中如何编码的详细信息。

以下是我刚刚进行的 WiFi 扫描的摘录:

$ sudo iw dev wlan0 scan
BSS aa:bb:cc:dd:ee:ff(on wlan0)
        ...
        Information elements from Probe Response frame:
                ...
                Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 
                DS Parameter set: channel 1
                TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x0
                Country: US     Environment: Indoor/Outdoor
                        Channels [1 - 11] @ 30 dBm
                ERP: <no flags>
                Extended supported rates: 24.0 36.0 48.0 54.0 

BSS 00:11:22:33:44:55(on wlan0)
        ...
        Information elements from Probe Response frame:
                Country: US     Environment: bogus
                        Channels [36 - 36] @ 30 dBm
                        Channels [40 - 40] @ 30 dBm
                        ...
                        Channels [52 - 52] @ 24 dBm
                        ...
                        Channels [149 - 149] @ 30 dBm
                        ...

BSS f0:0f:ba:ba:12:34(on wlan0)
        ...
        Information elements from Probe Response frame:
                ...
                Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 
                DS Parameter set: channel 11
                TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x0
                Country: CA     Environment: Indoor/Outdoor
                        Channels [1 - 12] @ 30 dBm

这里显示的第三个 AP 是我将国家代码设置更改为加拿大(而不是美国)的 AP,以展示改变该字段的可能性。

尽管如此,似乎主流 Linux(据我所知,大多数其他操作系统也是如此)实际上并没有关注它们所连接的 AP 的 802.11d 设置,可能是因为 AP 可能会提供错误配置/过时/冲突的信息。美国联邦通信委员会规定设备不得仅依赖 AP 的监管配置来设置自己的监管配置;实际上,这意味着大多数设备只是忽略AP 的监管信息并使用自己的信息,这些信息往往默认设置得很严格。

相关内容