Wednesday, August 15, 2012

Intel Wireless fix for Linux

Recently, while attending a seminar at my university, I noticed a problem with my laptop's wireless card. I've had some trouble with it in the past, notably in Windows while away from home, but this time seemed a little different. In this case, the wireless network would drop out every 5-30 minutes at seemingly (and maddeningly) random intervals.

My wireless card is an Intel Ultimate N WiFi Link 5300 (in my Thinkpad X200 tablet), and I'm running Ubuntu 12.04. This time, I couldn't duplicate the problem in Windows 7, so I started digging into the driver module. I noticed that the university had recently upgraded to both 802.11a, g, and n-compatible routers, meaning that it was using both 2.4 GHz and 5 GHz bands. Using dmesg and modprobe, I was able to watch the wireless drop its connection and be unable to reconnect while connected to both 2.4 GHz and 5 GHz bands.

The final solution involved disabling 802.11n mode as follows:

  • As root (or using sudo), create a file:
    /etc/modprobe.d/iwlwifi-disable11n.conf
    using your favorite method. (I like gedit or emacs.)
  • In the file, write:
    options iwlwifi 11n_disable=1
  • Reload the iwlwifi module:
    modprobe -r iwlwifi;modprobe iwlwifi

As far as I know, this only works if your hardware uses the iwlwifi driver. I'm not sure if other drivers have the same or similar options, so I don't know if it'll work with anything else. If you want to check if you use that hardware, try:
lsmod | grep iwlwifi
Then see if anything labeled iwlwifi pops up.

Another person had similar trouble on a Fedora system (a recent version, I'm not sure which one). Applying this fix worked for him, too.

Addendum: I found another person had this problem, but he fixed it by removing Network-Manager and using Wicd instead. Have a look here.