Phy0 spikes CPU and dmesg says "ath5k phy0: gain calibration timeout"

Problem

When coming out of sleep or during times of intensive processing and network activity, the following symptoms occur:

  1. The WiFi connection stops working.
  2. top shows that phy0 spikes the CPU.
  3. dmesg shows several lines of ath5k phy0: gain calibration timeout and ath5k phy0: noise floor calibration timeout

Solution

Downgrade the kernel. This problem can be solved by using the 2.6.31 kernel. Here’s how to install it:

  1. Do a sudo aptitiude search linux-image.
  2. Install an older kernel. For Ubuntu 10.4, I selected the 2.6.31-11-rt kernel by doing a sudo apt-get install linux-image-2.6.31-11-rt.
  3. Reboot.
  4. When the grub menu appears select the old kernel.
  5. Verify that the old kernel is fully functional for your system.

Temporary Solutions

  1. Do a pm-suspend-hybrid several times until the wifi works again.
  2. Restart the machine several times until the wifi works again.
  3. Do a modprobe -r ath5k and use a different network card.
  4. Using a 2.6.35 kernel reduces the frequency this problem occurs.

Details

uname -r

2.6.32-26-generic

lspci|grep Wireless shows:

14:00.0 Ethernet controller: Atheros Communications Inc. AR5001 Wireless Network Adapter (rev 01)

dmesg |grep "ath5.*chip"

ath5k phy0: Atheros AR2425 chip found (MAC: 0xe2, PHY: 0x70)

modinfo ath5k shows:

filename:       /lib/modules/2.6.32-26-generic/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
version:        0.6.0 (EXPERIMENTAL)
license:        Dual BSD/GPL
description:    Support for 5xxx series of Atheros 802.11 wireless LAN cards.
author:         Nick Kossifidis
author:         Jiri Slaby
srcversion:     5A81CAB958F60B02DE47E18
alias:          pci:v0000168Cd0000001Dsv*sd*bc*sci
alias:          pci:v0000168Cd0000001Csv*sd*bc*sci
alias:          pci:v0000168Cd0000001Bsv*sd*bc*sci
alias:          pci:v0000168Cd0000001Asv*sd*bc*sci
alias:          pci:v0000168Cd00000019sv*sd*bc*sci
alias:          pci:v0000168Cd00000018sv*sd*bc*sci
alias:          pci:v0000168Cd00000017sv*sd*bc*sci
alias:          pci:v0000168Cd00000016sv*sd*bc*sci
alias:          pci:v0000168Cd00000015sv*sd*bc*sci
alias:          pci:v0000168Cd00000014sv*sd*bc*sci
alias:          pci:v0000168Cd00001014sv*sd*bc*sci
alias:          pci:v000010B7d00000013sv*sd*bc*sci
alias:          pci:v0000A727d00000013sv*sd*bc*sci
alias:          pci:v0000168Cd00000013sv*sd*bc*sci
alias:          pci:v0000168Cd00000012sv*sd*bc*sci
alias:          pci:v0000168Cd00000011sv*sd*bc*sci
alias:          pci:v0000168Cd00000007sv*sd*bc*sci
alias:          pci:v0000168Cd00000207sv*sd*bc*sci
depends:        mac80211,led-class,cfg80211,ath
vermagic:       2.6.32-26-generic SMP mod_unload modversions
parm:           nohwcrypt:Disable hardware encryption. (bool)
parm:           all_channels:Expose all channels the device can use. (bool)