How to get a stable WLAN-connection with a Lenovo x121e?
I have permament problem when using WLAN with my Lenovo ThinkPad x121e. The wireless network adapter in use is this one:
lspci:
01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)
The connection normally works OK for some time and then starts to slow down and eventually disconnects. Sometimes the connection is reestablished seconds later, sometimes it takes 30 or more seconds, sometimes it does not reconnect at all.
This problem occures with every driver I tried up to now. Especially the kernel driver
Linux ThinkPad 3.0.0-14-generic #23-Ubuntu SMP Mon Nov 21 20:28:43 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
and Realteks driver that can be found here. The driver I'm using at the moment is the one found in this ppa: ppa:tista/x120e
.
Here is another link to www.thinkwiki.org that hints at a "Low Power State" (LPS) option in realtek's driver but it seems that it cannot be disabled in the current driver.
Is there a way to get a more stable WLAN with this setup?
Some more system information:
lshw -class network:
description: Wireless interface
product: RTL8188CE 802.11b/g/n WiFi Adapter
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:01:00.0
logical name: wlan0
version: 01
serial: 38:59:f9:db:e6:83
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=rtl8192CE driverversion=0006.0321.2011 firmware=56 ip=192.168.178.35 latency=0 link=yes multicast=yes wireless=802.11bgn
resources: irq:17 ioport:3000(size=256) memory:f0200000-f0203fff
iwconfig wlan0:
wlan0 802.11bgn ESSID:"xxx" Nickname:"rtl8192CE"
Mode:Managed Frequency=2.452 GHz Access Point: A2:05:43:2F:6E:8E
Bit Rate=65 Mb/s
Retry:on RTS thr:off Fragment thr:off
Power Management period:0us mode:All packets received
Link Quality=100/100 Signal level=0 dBm Noise level=-120 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
ifconfig wlan:
wlan0 Link encap:Ethernet HWaddr 38:59:f9:db:e6:83
inet addr:192.168.178.35 Bcast:192.168.178.255 Mask:255.255.255.0
inet6 addr: fe80::3a59:f9ff:fedb:e683/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:117385 errors:0 dropped:0 overruns:0 frame:0
TX packets:85652 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:115417879 (115.4 MB) TX bytes:10463799 (10.4 MB)
Interrupt:17 Memory:ffffc900037a8000-ffffc900037a8100
I finally fixed this problem by compiling and installing the latest drivers from Linux Wireless in Ubuntu 12.04, in my case the "compat-wireless-3.5.1-1-snpc.tar.bz2" package: http://wireless.kernel.org/en/users/Download/stable/
One needs the header files for his kernel and the build-essentials package. I recommend also to run the script "driver-select" with the option rtlwifi before compiling because one doesn't need the other drivers and it reduces building time:
sudo apt-get install linux-headers-$(uname -r) build-essential
tar jvxf compat-wireless-3.5.1-1-snpc.tar.bz2
cd compat-wireless-3.5.1-1-snpc
./scripts/driver-select rtlwifi
make
sudo make install
But the downside is you have to rebuild the driver after every kernel update.
I'm running the driver for two days now with excessive closing and opening the lid and didn't get any disconnects.
The problem could be caused by channel hopping (and the new Linux kernel).
I fixed it mostly with compile the driver by my own and install it. 2nd thing I did was to scan for networks if the network is breaking.
I entered in terminal watch sudo iwlist wlan0 scan
.
With this the driver kept awake. Another fix I used is to press Fn+F5 to disable wifi and then I do the same a few seconds later.
One more thing I tried:
sudo modprobe -r rtl8192ce
sudo modprobe rtl8192ce
This reloads the driver for wifi. I also ping sometimes the router, this keeps my wifi connection stable.