
Version 9 (modified by c.blaue @, 14 years ago)
Print statement overwrites now previous output

The Infamous Stuck Beacon Problem


The Stuck Beacon Problem (SBP) is an intermittant but severe problem for some users. It has been around for a while, but has yet to be resolved. Please help collect and report data on this bug by suffixing your experience to this page. Since no one yet knows the basis for the problem, the meaures to report here will be refined over time. Please read on for more hints.





I encounter the SBP mostly when doing things that are network-intensive- RDesktop and VNC especially seem to trigger the problem. It does seem interrupt-related- I was watching a video recorded with MythTV today when it happened, and the video became choppy, though CPU idle was still over 90%. If I down the interface and rmmod ath_pci, that sometimes helps, but not always. Today, I encoutered the SBP, downed the interface, removed the driver, re-inserted it, brought the interface back up, and was able to work for another two hours. But after that, the SBP persisted through several down-remove-modprobe-up cycles, and I ended up going back to wired.

I should mention I'm using a D-link DWL-AG650 PCI card with drivers from CVS on 12/28/2005 in master mode as my access point, and an Atheros AR5001X Mini-PCI card in my laptop with drivers from 9/21/2005 as a client. I've only ever seen the SBP on my access point, never the laptop.

Perhaps someone could post debugging procedures, and where to send debug data to on this page?

it appears that stuck beacon can be caused mostly by wireless cards that have some sort of power saving feature, namely intel centrino (2200BG ) and equiv cards. this causes stuck beacon to appear, to fix this, turn the card out of power saving mode in the control panel, this may or may not fix the problem, but appeared to work for me. uptime is around 10+days with latest madwifi drivers.

more information specific to intel centrino laptops can be found here:


# show information about the number of interrupts
($if) = @ARGV;
$if = "wifi0" unless $if;
print "Interface is $if\n";
$| = 1; # flush stdout;
while (true){
  open (IRQ,"/proc/interrupts");
  while($ifline = <IRQ>){
      $count = $1;
  $diff = $count - $oldCount;
  print "\r $diff    ";
  $oldCount = $count;
  sleep 1;