使用英特尔 3945ABG 卡时无线连接不断断开

使用英特尔 3945ABG 卡时无线连接不断断开

从 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

系统重启后它仍能正常工作。干杯!

相关内容