Skip to main content

home networking - How can I make wireless transfers faster on a Linksys WRT54G running DD-WRT?


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:


server$ iperf -c chris
------------------------------------------------------------
Client connecting to chris, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.194 port 53856 connected with 192.168.0.172 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-11.0 sec 1.88 MBytes 1.43 Mbits/sec

chris$ iperf -c server
------------------------------------------------------------
Client connecting to server, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.172 port 55601 connected with 192.168.0.194 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 9.12 MBytes 7.60 Mbits/sec

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:


[  5] local 192.168.0.172 port 5001 connected with 192.168.0.194 port 34362
[ 5] 0.0-15.9 sec 1.00 MBytes 527 Kbits/sec [using channel 1]
[ 4] local 192.168.0.172 port 5001 connected with 192.168.0.194 port 34363
[ 4] 0.0-10.4 sec 21.6 MBytes 17.4 Mbits/sec [using channel 8]

But this morning I noticed downloads were slow again. I switched the wireless channel back from 8 to 1, and again got a speedup:


[  5] local 192.168.0.172 port 5001 connected with 192.168.0.194 port 34441
[ 5] 0.0-17.9 sec 1.88 MBytes 880 Kbits/sec [using channel 8]
[ 4] local 192.168.0.172 port 5001 connected with 192.168.0.194 port 34442
[ 4] 0.0-10.4 sec 26.4 MBytes 21.2 Mbits/sec [using channel 1]

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.



Answer



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.


Comments

Popular Posts

Use Google instead of Bing with Windows 10 search

I want to use Google Chrome and Google search instead of Bing when I search in Windows 10. Google Chrome is launched when I click on web, but it's Bing search. (My default search engine on Google and Edge is http://www.google.com ) I haven't found how to configure that. Someone can help me ? Answer There is no way to change the default in Cortana itself but you can redirect it in Chrome. You said that it opens the results in the Chrome browser but it used Bing search right? There's a Chrome extension now that will redirect Bing to Google, DuckDuckGo, or Yahoo , whichever you prefer. More information on that in the second link.

linux - Using an index to make grep faster?

I find myself grepping the same codebase over and over. While it works great, each command takes about 10 seconds, so I am thinking about ways to make it faster. So can grep use some sort of index? I understand an index probably won't help for complicated regexps, but I use mostly very simple patters. Does an indexer exist for this case? EDIT: I know about ctags and the like, but I would like to do full-text search. Answer what about cscope , does this match your shoes? Allows searching code for: all references to a symbol global definitions functions called by a function functions calling a function text string regular expression pattern a file files including a file

How do I transmit a single hexadecimal value serial data in PuTTY using an Alt code?

I am trying to sent a specific hexadecimal value across a serial COM port using PuTTY. Specifically, I want to send the hex codes 9C, B6, FC, and 8B. I have looked up the Alt codes for these and they are 156, 182, 252, and 139 respectively. However, whenever I input the Alt codes, a preceding hex value of C2 is sent before 9C, B6, and 8B so the values that are sent are C2 9C, C2 B6, and C2 8B. The value for FC is changed to C3 FC. Why are these values being placed before the hex value and why is FC being changed altogether? To me, it seems like there is a problem internally converting the Alt code to hex. Is there a way to directly input hex values without using Alt codes in PuTTY? Answer What you're seeing is just ordinary text character set conversion. As far as PuTTY is concerned, you are typing (and reading) text , not raw binary data, therefore it has to convert the text to bytes in whatever configured character set before sending it over the wire. In other words, when y

networking - Windows 10, can ping other PC but cannot access shared folders! What gives?

I have a computer running Windows 7 that shares a Git repo on drive D. Let's call this PC " win7 ". This repo is the origin of a project that we push to and pull from. The network is a wireless network. One PC on this network is running on Windows 10. Let's call this PC " win10 ". Win10 can ping every other PC on the network including win7 . Win7 can ping win10 . Win7 can access all shared files on win10 . Neither of the PCs have passwords. Problem : Win10 cannot access any shared files on win7 , not from Explorer, nor from Git Bash or any other Git management system (E-Git on Eclipse or Visual Studio). So, win10 cannot pull/push. Every other PC on the network can access win7 shared files and push/pull to/from the shared Git origin. What's wrong with Windows 10? I have tried these: Control Panel\All Control Panel Items\Network and Sharing Center\Advanced sharing settings\ File sharing is on, Discovery is on, Password protected sharing is off Adapte