Slow 802.11n on custom-built router

802.1hostapd

I have custom-built router, based on Intel D510MO motherboard with Slackware 13.37 on it. I'm using hostapd-2.0 and iptables to make it act as a router. Client is a laptop with Windows 7 on it. Both router and laptop have Atheros AR5BXB72 mini pci-e wlan cards.

When it's configured as 802.11g, there are basically no problems – it is stable and works at full speed, something around 2.7 MB/s (= ~21 Mbps), which seems to be OK for 802.11g.

When it's configured as 802.11n, funny things start happening:

  • web pages in my country seem to open at full speed <– OK
  • speedtest.net reports speeds between 75-95 Mbps for local servers (100Mbps Internet connection) <– OK
  • speedtest.net reports speeds up to 3-4 Mbps download, 7-9 Mbps upload for foreign servers <– why?!
  • everything else (e.g., downloading huge files) outside my country works at 300-400 KB/s <– why?!

What I've tried:

  • googled a lot…
  • various drivers on client (Windows)
  • update driver on router (Linux)
  • update hostapd to force operating in 40MHz even when BSSes overlap

Drivers on Windows – tried both default Windows drivers (from Win7 installation, from Windows Update) and drivers from atheros.cz (9.0.0.173, 9.1.0.314, 10.0.0.45, 10.0.0.221) – no changes, besides blinking orange WLAN status LED.

Drivers on Linux – used compat-drivers package to update ath9k driver. 802.11n used to be unusable, because it was very unstable, e.g., usually only half of web page loaded, or most of images did not load. I also tried pinging some foreign hosts – response times mostly were more than 1-2 secs, with lots of timeouts. After updating driver everything works stable, e.g., pages are fully loaded, bigger files are being dowloaded just fine, but the speeds are low – 300-400 KB/s for foreign resources.

Also, I noticed that hostapd often disables 20/40 MHz operation because of overlapping BSSes. Patched it to skip this check. With 20 MHz, Windows reports 130 Mbps connection speed, with 40 MHz – 300 Mbps. Internet works the same in both cases, but local network – 16-17 MB/s in 20 MHz mode and 20-21 MB/s in 40 MHz mode. Channels are chosen carefully, so my neighbours should not be affected by this.

Any ideas what else I could try? I really don't like the fact that I can use foreign resources with max 2-3 MB/s (with 802.11g), when I should have speeds up to 10-12 MB/s…

Best Answer

If in-country connectivity is good, then the bottleneck is most likely your ISP. It's definitely not related to your AP. It's either the connectivity between your country and others, or your ISP may just not have good connectivity to foreign sites. You may be able to narrow it down by doing some traceroute tests to foreign sites to see if there's an obvious bottleneck.

As to the 40MHz, if you are in the 2.4GHz range, there are only 3 (or maybe 4 where you are) non-overlapping channels and your use of 2 of those channels may still be causing issues for your neighbors and possibly you, as well. But as I said before, that has nothing to do with the problem you're trying to solve, so long as you can get good bandwidth to local servers.

Related Topic