我几乎无法理解我的 dmesg 日志输出,但这是我不断看到的一条消息,我认为这与我的 Wifi 每隔一分钟左右就会断线的更大问题有关:
[ 6170.340618] cfg80211: Calling CRDA for country: US
[ 6170.346573] cfg80211: Regulatory domain changed to country: US
[ 6170.346580] cfg80211: DFS Master region: FCC
[ 6170.346582] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[ 6170.346588] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 3000 mBm), (N/A)
[ 6170.346591] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 1700 mBm), (N/A)
[ 6170.346595] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2300 mBm), (0 s)
[ 6170.346599] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 3000 mBm), (N/A)
[ 6170.346602] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A)
这是什么意思?这是坏事吗?如果是这样,我该如何修复它?
答案1
您可以查看联机帮助页以及其中的链接 -http://wireless.kernel.org/en/developers/Regulatory/
$ apropos CRDA crda (8) - send to the kernel a wireless regulatory domain for a given ISO / IEC 3166 alpha2
人 cda 的输出:
CRDA(8) Linux CRDA(8)
NAME
crda - send to the kernel a wireless regulatory domain for a given ISO / IEC 3166 alpha2
SYNOPSIS
crda
Description
crda is the Linux wireless central regulatory domain agent. crda is intended to be used by udev scripts and should not be run manually unless
debugging udev scripts. crda is triggered to run by the kernel by sending a udev event upon a new regulatory domain change. Regulatory domain
changes are triggered by the wireless kernel subsystem (upon initialization and on reception of country IEs), wireless drivers, or userspace
(see iw ). Upon a regulatory domain change the kernel sends a udev change event for the regulatory platform. The kernel ignores regulatory
domains sent to it if it does not expect them. The regulatory domain is read by crda from the regulatory.bin file.
RSA Digital Signature
If built with openssl or gcrypt support crda will have embedded into it an RSA digital signature which will prevent it from reading corrupted or
non-authored regulatory.bin files. Authorship is respected by the RSA public key packed into crda. This specific crda package has been built
with an RSA public key from John Linville (the Linux wireless kernel maintainer) and as such will only read regulatory.bin files signed by him.
For further information see the regulatory.bin man page.
UDEV RULE
A udev regulatory rule must be put in place in order to receive and parse udev events from the kernel in order to get udev to call crda with the
passed ISO / IEC 3166 alpha2 country code. An example udev rule which can be used (usually in /lib/udev/rules.d/85-regulatory.rules ):
KERNEL=="regulatory*", ACTION=="change", SUBSYSTEM=="platform", RUN+="/sbin/crda"
Environment variable
Set the COUNTRY environment variable with a specific ISO / IEC 3166 alpha2 country code and then run crda without arguments. This will send a
regulatory domain for that alpha2 to the kernel.
SEE ALSO
iw(8) regulatory.bin(5)
http://wireless.kernel.org/en/developers/Regulatory/
回答你的问题的其余部分:不,这不是一件坏事。 CRDA(不是本主题中的 CDRA)域与为给定国家选择允许的无线信道相关。并非所有国家/地区都允许使用所有频道。
示例:对于欧洲,我们有频道 12 和 13,这在北美是不允许的。
也可以看看http://en.wikipedia.org/wiki/List_of_WLAN_channels#Interference_concerns
答案2
我遇到了类似的问题,它似乎归因于我几年前安装的旧 modprobe 配置文件(在 /etc/modprobe.d 中)。具体来说,它指定了cfg80211
(WiFi 堆栈模块)的一个选项:options cfg80211 ieee80211_regdom="EU"
这是一个旧选项 ( ieee80211_regdom
),其用途是建议反对在较新的内核中(例如 2.6.27 及以后)。我评论/删除了该选项,然后重新启动,它就被修复了。因此,请检查您的 modprobe.d 文件是否包含 cfg80211 的配置选项。
确保REGDOMAIN
在 中正确设置也是一个好主意/etc/default/crda
。欲了解更多详情,请参阅Linux 无线监管信息。