我有一台三星笔记本电脑,安装了 Ubuntu 15.04,从 13.10 一直升级到最低版本,但这不是问题。
我已经连接了无数个 wifi 网络,没有任何问题……直到几天前。我暂时在客户那里工作,根本无法连接任何 wifi 网络。所有网络都可以看到,但我就是无法建立连接……
由于除了我之外没有其他人遇到问题,所以我知道问题出在我这边。
我的卡是这样的:
02:00.0 Network controller: Intel Corporation Centrino Advanced-N 6235 (rev 24)
它使用 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)
凭着直觉,我修改了相应的 modprobe.d 文件以添加:
options iwlwifi bt_coex_active=0
突然间,我的连接就不再有问题了……
为什么这样做有效?此选项起什么作用?
答案1
Wifi 连接问题解决了,为什么我的“修复”有效?
启用 bt_coex_active 可防止蓝牙/无线干扰。禁用后,蓝牙/无线干扰会增加。
bt_coex_active=1
(真)可防止蓝牙/无线干扰。bt_coex_active=0
(假)允许增加蓝牙/无线干扰。
该功能的工作方式是,当它开启时,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 次。
源代码摘录:
/* * 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) */
来源:iwl-核心.c