Thinkpad T420 and network outages under Kubuntu 14.04

Since my update to Kubuntu, I had repeatedly been struggling with network outages. At first I thought I had a DNS problem, because I kept being unable to resolve individual URLs in the browser. Playing around with the DNS settings and resolconf turned out to be a dead end.

What was very noticeable was that after a while the ping times, which initially were in the millisecond range, shot up into the higher seconds range. That could not have anything to do with DNS, since the IP did not change and I was also pinging IP addresses directly on my LAN.

I found the solution on AskUbuntu. My network card was running using the Draft-n standard. However, the Linux driver used for my wireless card "03:00.0 Network controller: Intel Corporation Centrino Advanced-N 6205 [Taylor Peak] (rev 34)" (iwlwifi) is a little buggy here, which led to constant error messages in the log (dmesg).

The workaround

A workaround was found: simply switch off Draft-n mode. This can easily be done using an option for the driver.

options iwlwifi 11n_disable=1

I then added this line to the end of the file /etc/modprobe.d/iwlwifi.conf. After a reboot, the system ran reliably and remained stable. No more interruptions when "pinging".

Analyzing kernel modules

In this context, it may be interesting to know which parameters/options a particular kernel module (such as the wireless driver) has. There are two interesting tools here.

systool

The "systool" tool can display the configured parameters for loaded modules. Under Ubuntu, it is installed through the "sysfsutils" package.

apt-get install sysfsutils

You can then list the options as follows:

systool -v -m iwlwifi

modinfo

You can use modinfo to get information about a kernel module. You can retrieve the available parameters like this:

modinfo -p iwlwifi

In my case, I get the following output:

swcrypto:using crypto in software (default 0 [hardware]) (int)
11n_disable:disable 11n functionality, bitmap: 1: full, 2: disable agg TX, 4: disable agg RX, 8 enable agg TX (uint)
amsdu_size_8K:enable 8K amsdu size (default 0) (int)
fw_restart:restart firmware in case of error (default true) (bool)
antenna_coupling:specify antenna coupling in dB (defualt: 0 dB) (int)
wd_disable:Disable stuck queue watchdog timer 0=system default, 1=disable, 2=enable (default: 0) (int)
nvm_file:NVM file name (charp)
bt_coex_active:enable wifi/bt co-exist (default: enable) (bool)
led_mode:0=system default, 1=On(RF On)/Off(RF Off), 2=blinking, 3=Off (default: 0) (int)
power_save:enable WiFi power management (default: disable) (bool)
power_level:default power save level (range from 1 - 5, default: 1) (int)

And there is our useful parameter "11n_disable" already.

I hope this knowledge helps you fix your own wireless problems too.