I have a Linksys WRT54G plugged into the cable modem, and a 2nd wireless router, an old D-Link plugged into that. Both wireless routers work, but if I connect wirelessly to the Linksys router I get transfers going about 10 times slower than if I connect wirelessly to the D-Link even when accessing computers that are plugged directly into the Linksys router.

I've tried using just the D-Link and removing the Linksys, but it seems to hang regularly when it's running a DHCP server. When I have both routers on, the D-Link passes all DHCP requests to the Linksys.

If I disconnect and reconnect, the Linksys runs at full speed for a while, but quickly drops back down to slow speeds.

What might be causing this, and how can I go about fixing it?

@Spiff: I ran IPerf between my laptop ('chris') which is connecting wirelessly to the Linksys, and 'server' which is wired to the Linksys. This is with the D-Link router turned off. I get very different results depending on which is the client and which is the server:

I see speeds of about 100KBytes/sec when downloading from 'server' onto the laptop with a wireless connection to the Linksys, which is what IPerf is saying I should see too. With the D-Link I expect I'll see something around 8 Mbits/sec in both directions. I'll edit this question with IPerf output from the D-Link when I have access to it.

Here's something odd. Last night I was getting slow downloads over the Linksys wireless interface so tried switching the wireless channel setting from 1 to 8. This caused IPerf output to go back to reasonable. Here's the before and after:

There's no other wireless device around. And it seems that it doesn't matter which channel I switch to, just so long as I switch.

Update: I just noticed that I don't have to change the channel to temporarily 'fix' the problem. Earlier I used the router's web interface to switch from channel 1 to channel 8, which let me download quickly for 5 minutes or so, and left the browser at http://router/apply.cgi. Later, when the downloads were going very slowly again, I just hit 'refresh' on that page. The browser asked me:

The page that you're looking for used information that you entered.
Returning to that page might cause any action that you took to be
repeated. Do you want to continue?

I continued, and the downloads immediately started going ten times faster. I expect the router is still using channel 8, as it was before, so I don't even need to change the channel to get it to speed up for a while.

Can you give the model number of the D-Link? I ask partly because the Linksys WRT54G was introduced almost a full decade ago (late 2002), so if the D-Link one is the one you're calling "old" it must be a doozy! :-)
– SpiffMar 12 '12 at 22:51

I don't have the D-Link with me at the moment, which is why this has become a problem since we're having to fall back on the slow Linksys. I think it is a DI-624 however: dlink.ca/products/?tab=3&pid=DI-624&rev=DI-624. The D-Link isn't the problem though, the relatively new Linksys is.
– Chris MooreMar 13 '12 at 0:05

1 Answer
1

First make sure that the Linksys AP and the D-Link AP are on separate, non-overlapping channels. When using typical 20MHz channel widths, channels 1, 6, and 11 don't overlap with each other. Manually set one AP to, say, channel 1, and the other to channel 11 (don't let them auto-pick or they may choose poorly on the next reboot).

If it's true that you had a D-Link DI-624, note that it did a nonstandard/proprietary 108mbps mode which probably used two contiguous channels' worth of bandwidth (i.e. 40MHz instead of the usual channel width of 20MHz). I don't know if it centered that 40MHz channel on the center frequency of the channel it was on, or if it used the next channel up, or the next channel down. But if you're not using any other D-Link 108 mbps gear from the same era, just turn off the proprietary 108 mbps mode of the D-Link (make it be a plain B/G 54mbps device) so that it only uses one 20MHz channel.

Make sure the two APs are not physically too close to each other. Even if they are on non-overlapping channels, if they are too close to each other, the transmissions from one can overload the notch filter on the other, desensitizing the other's receiver. (Think about how hard it is to hear people across the room while someone is shouting directly into your ear.) I recommend you keep APs at least 1 meter apart, although 2-3 meters might be even better.

After making the changes above, run a clean performance test using a tool such as IPerf, between a wireless client and a machine wired into the LAN port of the AP. Then repeat on the other AP. If you're still seeing problems, update your Question with the IPerf output from each case. (NB: Don't use some random file copy protocol on your local network, because those are often inefficient and muddle the measurement. Similarly, don't muddle the measurement by bringing your broadband connection into this, so don't use speedtest.net and don't time some download from the Internet.)

Seeing those well-quantified performance numbers would be a big help here. Note that under real-world conditions, 15 mbps is a respectable speed for TCP traffic over 802.11g, and most people never see above 25 mbps even under ideal conditions. See also: What's the maximum actual bit rate of an 802.11g connection?

Another thought that occurred to me as I was writing this is that if you had the Linksys and the D-Link in the same location because you preferred the Linksys's home gateway functions and the D-Link's wireless functions, why not just turn off the wireless interface of the Linksys? Let the Linksys just be your home gateway (NAT router, DHCP Server), and let the D-Link be just a simple bridging Wi-Fi AP.

Update: Okay, so rebooting the Linksys makes it work better, and you get respectable real-world 17-21 mbps IPerf TCP throughput for a few minutes, then it degrades again. That makes me suspect a memory leak or other resource problem in DD-WRT. Try going to the latest actual Linksys firmware for that revision of the WRT54G, and see if it does better. If it does, then try out the latest "stable" release of DD-WRT (if you weren't already up to date on a stable release line) with simple settings. Or maybe OpenWrt or Tomato or whatever else you want to try.

+1 for useful info. Am I correct that IPerf is source-only? JPerf (on the same page) seems to have a pre-compiled Windows-friendly executable, which might be helpful depending on the client machines.
– Merlyn Morgan-GrahamMar 13 '12 at 1:23

1

@MerlynMorgan-Graham I believe the IPerf team only officially distributes it as source, but I bet you can find a precompiled Windows binary somewhere. I think most people who use it on Unix-like OSes just use their favorite package manager to install it (e.g. sudo port install iperf for me on Mac OS X using MacPorts).
– SpiffMar 13 '12 at 1:29

Thanks for the answer. I'll get the IPerf data when I next have access to the D-Link router. For now it's many kilometres away. I'm getting something like 1 mpbs from the Linksys, but will update the question with IPerf data ASAP.
– Chris MooreMar 13 '12 at 6:25

@Spiff Thanks. But I don't think it's actually rebooting. I've scripted an alias to 'wget' post the request to the router to 'fix' it. It takes about 4 seconds to get the request through the router, and a further 4 seconds before I'm able to use the network again, at regular speeds. I doubt it can reboot in 4 seconds. I also don't appear to lose connection to it at any point. The network-manager applet icon doesn't change at any point. It is an old DD-WRT install. I'm scared to update because then I lose the settings, but guess I'll try. Thanks again.
– Chris MooreMar 14 '12 at 6:15