![使用英特尔 3945ABG 卡时无线连接不断断开](https://linux22.com/image/958894/%E4%BD%BF%E7%94%A8%E8%8B%B1%E7%89%B9%E5%B0%94%203945ABG%20%E5%8D%A1%E6%97%B6%E6%97%A0%E7%BA%BF%E8%BF%9E%E6%8E%A5%E4%B8%8D%E6%96%AD%E6%96%AD%E5%BC%80.png)
从 11.04 更新到 11.10 后,我的无线连接时不时会断开。
现在,我在使用 10.04 时已经遇到了这个问题(当时的解决方法是用 wicd 替换 NetworkManager。但问题是我并不是 wicd 的粉丝,而且看到这个问题似乎已经在以前的版本中得到了修复,我想我可以尝试类似的解决方案。
以下是我的系统的更多细节
$ sudo lshw -C network
*-network
description: Wireless interface
product: PRO/Wireless 3945ABG [Golan] Network Connection
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:03:00.0
logical name: wlan0
version: 02
serial: 00:19:d2:ad:20:4d
width: 32 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=iwl3945 driverversion=3.0.0-12-generic firmware=15.32.2.9 ip=192.168.1.3 latency=0 link=yes multicast=yes wireless=IEEE 802.11abg
resources: irq:44 memory:84100000-84100fff
$ sudo lsmod | grep iwl
iwl3945 73329 0
iwl_legacy 71499 1 iwl3945
mac80211 272785 2 iwl3945,iwl_legacy
cfg80211 172392 3 iwl3945,iwl_legacy,mac80211
$ dmesg
[43972.920056] wlan0: no IPv6 routers present
[44533.245630] wlan0: deauthenticating from 94:0c:6d:c0:51:ca by local choice (reason=3)
[44533.260462] cfg80211: All devices are disconnected, going to restore regulatory settings
[44533.260472] cfg80211: Restoring regulatory settings
[44533.260488] cfg80211: Calling CRDA to update world regulatory domain
[44533.273177] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain
[44533.273181] cfg80211: World regulatory domain updated:
[44533.273184] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[44533.273188] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[44533.273191] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[44533.273195] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[44533.273198] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[44533.273202] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[44534.078574] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[44539.626843] wlan0: authenticate with 94:0c:6d:c0:51:ca (try 1)
[44539.628827] wlan0: authenticated
[44539.629214] wlan0: associate with 94:0c:6d:c0:51:ca (try 1)
[44539.631514] wlan0: RX AssocResp from 94:0c:6d:c0:51:ca (capab=0x411 status=0 aid=1)
[44539.631522] wlan0: associated
[44539.633667] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[44551.104169] wlan0: no IPv6 routers present
[44987.241475] wlan0: deauthenticating from 94:0c:6d:c0:51:ca by local choice (reason=3)
[44987.288269] cfg80211: All devices are disconnected, going to restore regulatory settings
[44987.288279] cfg80211: Restoring regulatory settings
[44987.288294] cfg80211: Calling CRDA to update world regulatory domain
[44987.309376] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain
[44987.309383] cfg80211: World regulatory domain updated:
[44987.309385] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[44987.309389] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[44987.309393] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[44987.309396] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[44987.309400] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[44987.309403] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[44988.074180] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[44993.648439] wlan0: authenticate with 94:0c:6d:c0:51:ca (try 1)
[44993.651354] wlan0: authenticated
[44993.651651] wlan0: associate with 94:0c:6d:c0:51:ca (try 1)
[44993.653990] wlan0: RX AssocResp from 94:0c:6d:c0:51:ca (capab=0x411 status=0 aid=1)
[44993.653995] wlan0: associated
[44993.655984] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[45005.400035] wlan0: no IPv6 routers present
谢谢,
答案1
必须说声抱歉;当时代码发布在这里http://ubuntuforums.org/showpost.php?p=11356188&postcount=35似乎已经起作用了但实际上并没有。
我在启动板上找到了一个似乎有效的解决方案 -/etc/modprobe.d/iwl3945.conf
options iwl3945 disable_hw_scan=0
。即使系统重启后它也能正常工作。干杯!
答案2
从您的日志来看,问题似乎出在这里:
[44987.241475] wlan0: deauthenticating from 94:0c:6d:c0:51:ca by local choice (reason=3)
我建议对“通过本地选择原因取消身份验证=3”进行一些研究,但是最接近您的问题的似乎是这个错误报告:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/548992
在错误报告中,问题的根本原因是电源管理。尝试运行:
sudo iwconfig wlan0 power off
这将永久禁用无线适配器的电源管理(它应该重启后仍能保留该信息)并防止频繁断开连接。
答案3
虽然这些建议确实对我有帮助,但我使用的是不同的基于英特尔的 wifi 适配器,而我解决问题的方法确实似乎根植于适配器的电源管理。在这里我找到了永久关闭电源管理的答案:
http://syntaxionist.rogerhub.com/intel-centrino-wireless-n-2200-ubuntu-1mbps-workaround.html
尽管看起来好像可以工作,但只需调用:
sudo iwconfig wlan0 power off
应该可以,但似乎没有效果。不过上面的链接在重启电脑后确实有效。
老问题,新答案,为了其他人在搜索时寻找解决方案,这个答案在类似问题的搜索结果中排名靠前。
答案4
这解决了我的问题!是的,终于解决了!
我在启动板上找到了一个似乎有效的解决方案 -
打开/etc/modprobe.d/iwl3945.conf
文件并设置iwl3945 disable_hw_scan=0
。
系统重启后它仍能正常工作。干杯!