WiFi not working after restoring from hibernation (authentication times out)

networkingnetworkmanagerthinkpadwifiwpa-supplicant

My Intel 6205 wireless network card does not work after hibernating. It sometimes also does not work on boot, failing in the same way. Occasionally, it also stops working after ~10 minutes of continuous use.

I have experimented with combinations of: modprobe -r iwlwifi before and after hibernating (or when the problem otherwise occurs), followed by modprobe iwlwifi; and then systemctl restart network-manager and systemctl restart NetworkManager. These solutions are what all search results for the symptoms focuses on.

What else should I try?

Configuration:

  • Debian Jessie
  • kernel 3.14.4-1
  • networkmanager 0.9.8.10
  • Intel 6205 rev 96 (iwlwifi)
  • Lenovo ThinkPad X1 Carbon
$ dmesg
wlan0: authenticate with 47:f2:2f:91:db:7b
wlan0: Wrong control channel: center-freq: 5500 ht-cfreq: 5180 ht->primary_chan: 36 band: 1 - Disabling HT
wlan0: direct probe to 47:f2:2f:91:db:7b (try 1/3)
wlan0: direct probe to 47:f2:2f:91:db:7b (try 2/3)
wlan0: direct probe to 47:f2:2f:91:db:7b (try 3/3)
wlan0: authentication with 47:f2:2f:91:db:7b timed out
wlan0: authenticate with 47:f2:2f:91:db:7b
wlan0: send auth to 47:f2:2f:91:db:7b (try 1/3)
wlan0: send auth to 47:f2:2f:91:db:7b (try 2/3)
wlan0: send auth to 47:f2:2f:91:db:7b (try 3/3)
wlan0: authentication with 47:f2:2f:91:db:7b timed out
# the last 5 messages repeat indefinitely as connection is reattempted

Best Answer

Take a look at the output from this command to confirm what drivers/modules the kernel is using for your given hardware.

$ lshw -C network
...
  *-network
       description: Wireless interface
       product: Centrino Wireless-N 1000 [Condor Peak]
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: wlp3s0
       version: 00  
       serial: 00:26:c7:85:a7:20
       width: 64 bits
       clock: 33MHz 
       capabilities: bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwlwifi driverversion=3.14.4-100.fc19.x86_64 firmware=39.31.5.1 build 35138 ip=192.168.1.161 latency=0 link=yes multicast=yes wireless=IEEE 802.11bgn  
       resources: irq:42 memory:f2400000-f2401fff

The names of the driver is listed in the `configuration line:

driver=iwlwifi

Check and see what other drivers may be in use by this higher level driver:

$ lsmod | grep iwlwifi
iwlwifi               116346  1 iwldvm
cfg80211              513095  3 iwlwifi,mac80211,iwldvm

Try unloading all these rmmod <name> and then reloading them:

$ sudo modprobe iwlwifi

That should load the top level driver + any lower level ones automatically.

Disabling wireless-N

I've had many issues with most of my Thinkpad laptops where wireless would act flaky. The only solution I've found that works is to disable the Wireless-N feature of the iwlwifi module. You can find out the name/options of this parameter to the module like so:

$ modinfo iwlwifi | grep dis
parm:           11n_disable:disable 11n functionality, bitmap: 1: full, 2: disable agg TX, 4: disable agg RX, 8 enable agg TX (uint)
parm:           wd_disable:Disable stuck queue watchdog timer 0=system default, 1=disable, 2=enable (default: 0) (int)
parm:           power_save:enable WiFi power management (default: disable) (bool)

So after removing the module when you're ready to reload it via modprobe include the option 11n_disable. For example:

$ sudo modprobe iwlwifi 11n_disable=1

You can make this permanent through your modprobe.d directory from boot to boot.

Related Question