使用电池供电启动或从挂起状态唤醒时 Wifi 不工作

使用电池供电启动或从挂起状态唤醒时 Wifi 不工作

全部,

我在联想 X220 上全新安装了 Ubuntu 12.04 32 位。我特意买了这个型号,因为据了解,该硬件在 11.10 64 位下运行良好(请参阅这里) 确实到目前为止我没有遇到任何问题,但是下面有一个问题。

如果我启动笔记本电脑或将其从挂起状态唤醒我正在使用电池供电,wifi 网络不工作。

奇怪的是,我弹出窗口说我已成功连接到我家的 wifi,并且我从我家的接入点上的 DHCP 获取了一个正确的 IP 地址(我可以从配置文件)但网络断了,我甚至无法 ping 接入点。这是我看到的,与网络正常工作时相同。

giacecco@giaceccos-x220:~$ ifconfig -a
(...)
wlan0     Link encap:Ethernet  HWaddr 8c:70:5a:3e:f1:80  
          inet addr:192.168.1.24  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::8e70:5aff:fe3e:f180/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:87965 errors:0 dropped:0 overruns:0 frame:0
          TX packets:108083 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:33751259 (33.7 MB)  TX bytes:111481622 (111.4 MB)

giacecco@giaceccos-x220:~$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
^C
--- 192.168.1.1 ping statistics ---
77 packets transmitted, 0 received, 100% packet loss, time 76608ms

为了使其再次工作,我注意到从全局菜单栏中禁用和启用无线网络(而不是一般的网络)就足够了。

插入或使用以太网电缆时执行相同操作无法重现该问题。

按照说明这里我还修改了笔记本电脑的无线电设置,使其正确(在我的情况下是 GB)。

以下是输出删除 -C以防它有用。

giacecco@giaceccos-x220:~$ sudo lshw -C network
[sudo] password for giacecco: 
  *-network               
(...)
  *-network
       description: Wireless interface
       product: Centrino Advanced-N 6205
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: wlan0
       version: 34
       serial: 8c:70:5a:3e:f1:80
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwlwifi driverversion=3.2.0-26-generic-pae firmware=17.168.5.3 build 42301 ip=192.168.1.24 latency=0 link=yes multicast=yes wireless=IEEE 802.11abgn
       resources: irq:44 memory:f2400000-f2401fff
  *-network DISABLED
(...)

这真是令人恼火,因为我离拥有完美的 Linux 笔记本电脑只有一步之遥。

首先,您能否建议“启用网络”菜单项背后的具体脚本是什么,以及它的行为在使用电池供电时会如何变化?

谢谢。

答案1

您也可以尝试卸载驱动程序,然后modprobe重新安装。

粘贴以供后人参考(原始引用):

使用以下脚本作为/etc/pm/sleep.d/99_fixwifi.sh

#!/bin/sh

. "${PM_FUNCTIONS}"

resume_wifi()
{
        # Stop networking and network-manager
        stop network-manager
        service networking stop

        # Remove and reload the module for the wifi card
        # Change to the wifi driver of your choice.
        # You can probably find it by using
        #    `lspci | grep -i wireless`
        # and it's probably loaded somewhere in `modprobe -l`, 
        # maybe pipe modprobe's output to `grep iw`

        modprobe -r -f iwlwifi
        modprobe iwlwifi

        # Start networking and network-manager again
        service networking start
        start network-manager
}

case "$1" in
        thaw|resume)
                resume_wifi
                ;;
        *) exit $NA
                ;;
esac

相关内容