Wifi连接问题解决;为什么我的“修复”有效?

fge*_*fge 15 linux wireless-networking

我有一台三星笔记本电脑,安装了 Ubuntu 15.04,从 13.10 一路升级,但这不是问题。

随着时间的推移,我已经连接到无数 wifi 网络,没有遇到任何问题......也就是说,直到几天前。我暂时在客户的地方工作,根本无法连接到任何 wifi 网络。所有网络都被看到了,我只是无法建立连接......

由于除了我之外没有其他人遇到麻烦,我知道问题出在我这边。

我的卡是这样的:

02:00.0 Network controller: Intel Corporation Centrino Advanced-N 6235 (rev 24)
Run Code Online (Sandbox Code Playgroud)

它使用 iwlwifi 驱动程序。这是modinfo作为选项报告的内容:

parm:           swcrypto:using crypto in software (default 0 [hardware]) (int)
parm:           11n_disable:disable 11n functionality, bitmap: 1: full, 2: disable agg TX, 4: disable agg RX, 8 enable agg TX (uint)
parm:           amsdu_size_8K:enable 8K amsdu size (default 0) (int)
parm:           fw_restart:restart firmware in case of error (default true) (bool)
parm:           antenna_coupling:specify antenna coupling in dB (default: 0 dB) (int)
parm:           wd_disable:Disable stuck queue watchdog timer 0=system default, 1=disable (default: 1) (int)
parm:           nvm_file:NVM file name (charp)
parm:           uapsd_disable:disable U-APSD functionality (default: Y) (bool)
parm:           bt_coex_active:enable wifi/bt co-exist (default: enable) (bool)
parm:           led_mode:0=system default, 1=On(RF On)/Off(RF Off), 2=blinking, 3=Off (default: 0) (int)
parm:           power_save:enable WiFi power management (default: disable) (bool)
parm:           power_level:default power save level (range from 1 - 5, default: 1) (int)
parm:           fw_monitor:firmware monitor - to debug FW (default: false - needs lots of memory) (bool)
Run Code Online (Sandbox Code Playgroud)

凭直觉,我修改了相应的 modprobe.d 文件以添加:

options iwlwifi bt_coex_active=0
Run Code Online (Sandbox Code Playgroud)

突然之间,我再也没有连接问题了......

为什么这样做?这个选项有什么作用?

Dav*_*ill 16

Wifi 连接问题解决了,为什么我的“修复”有效?

当启用 bt_coex_active 时,它​​可以防止蓝牙/无线干扰。当它被禁用时,它将允许增加蓝牙/无线干扰。

  • bt_coex_active=1 (true) 防止蓝牙/无线干扰。
  • bt_coex_active=0 (false) 允许增加蓝牙/无线干扰。

该功能的工作方式是,当它打开时,wlan 收发器将避免与蓝牙收发器同时传输。

在一些有问题的实现中,它认为蓝牙一直在传输,因此完全“静音”了 WLAN,因此将其关闭将允许 WLAN 再次工作。


802.11 蓝牙共存

当 802.11 设备在 2.4 GHz 频段上运行时,802.11 设备和蓝牙可能会相互干扰。所有蓝牙设备都在 2.4 GHz 频段运行。本节记录了有关干扰原因和驱动程序中实施的解决方案、802.11 堆栈以及未来可能的增强功能的技术细节。

...

干涉

每个 802.11 通道相当于 20 个蓝牙通道。在蓝牙设备上启用通信后,当蓝牙设备跳到相当于您的 802.11 信道的 20 个蓝牙信道中的任何一个时,您将受到干扰。即使蓝牙设备以每秒 1600 次跳频的最大允许频率跳跃,也只有 79 个通道可用,因此在此速率下,每个通道将在每秒使用 20 次左右。

802.11 蓝牙共存


源代码摘录:

/*
 * set bt_coex_active to true, uCode will do kill/defer
 * every time the priority line is asserted (BT is sending signals on the
 * priority line in the PCIx).
 * set bt_coex_active to false, uCode will ignore the BT activity and
 * perform the normal operation
 *
 * User might experience transmit issue on some platform due to WiFi/BT
 * co-exist problem. The possible behaviors are:
 *   Able to scan and finding all the available AP
 *   Not able to associate with any AP
 * On those platforms, WiFi communication can be restored by set
 * "bt_coex_active" module parameter to "false"
 *
 * default: bt_coex_active = true (BT_COEX_ENABLE)
 */
Run Code Online (Sandbox Code Playgroud)

资料来源:iwl-core.c


进一步阅读