全部,
我在联想 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