Wireless network ping spikes
I recently purchased a Belkin F5D7000 PCI wireless network card. I’ve installed 3 of these in various machines over the past few months and had little trouble with them. The one I used in my machine would have to break this of course and from the start has given me problems. I’m 99% sure that I’ve got a working fix or at least can shed some light in the direction of fixing ping spikes.
The other three cards I bought looked similar and had a sticker on them stating v3000uk. The one I bought for my machine looked different and had v6000 on its sticker. My first mistake was trying to use the same drivers as the other cards. If you search the Belkin support site for F5D7000 you’ll see a list of drivers. The ones for the v3000 are labelled v3 and the ones for the card labelled v6000 are appropriately named v6000. The earlier models seem to use the Ralink 25xx chip while the v6000 card uses the Ralink 61xx. I did a bit of googling on this and it seems that there are at least two different versions of the v6000 and each uses a different chip. So after feeling like a dumb-ass about using the wrong drivers I installed the correct ones. That went pretty smoothly and I could connect to my wireless router just fine.
Everything should be ok right? Well nope. For general browsing its ok but whenever I try to join a game lobby I would get dropped. It was most noticeable with Dawn of War. I could get into the lobby and sometimes into a specific games waiting room but sure as ever I would get taken back to the games startup screen with a message about losing my connection to the lobby. As you can imagine, this is kinda irritating.
After a day of messing about with every version of the driver I could find including the base one from Ralink directly I went back to the v6000 one off the Belkin site. No other driver would work. The ones I could get to install wouldn’t hold a connection to the router rendering them dud.
The next step was to check my actual connection to the router. Funnily enough this is what Dawn of War recommends when it drops me but I just ignored that message! The test is pretty simple. Join the network and then open a command prompt. Ping the router continuously and see what happens:
ping -t 192.168.122.1
ctrl-c to stop it pinging and see the stats. What I was seeing was about 30 lines with values of 3-15ms and then a jump to 1000+ms or a request time out. Then it would return to 3-15ms. This seemed to be quite regular i.e. between every 30-40 seconds it would spike and then settle back down.
I thought it might be the Belkin network utility scanning for networks but that was all turned off as default. Then I thought that one of my services might be spooking it out. There didn’t seem to be anything running that shouldn’t so I discounted that idea. Then it was time to start researching all my network driver settings. Nothing seemed to be set to anything that it shouldn’t be. My original hunch on this was that there was some sort of RTS or frame issue. Jiggling the values didn’t seem to make any noticeable difference. At this point I shook my fist at the monitor and said I’d had enough. End of testing for that day.
Today with fresh eyes I stepped back and decided that I’d been focusing on the network side of things too much. What if the problem wasn’t actually network related? Then I realised the card is a PCI and all the cogs in my brain started ticking. What if it was actually a PCI timer issue? On some of my old setups I had to tweak the timing but I’d never had the need to do that with this rig. I grabbed a copy of the PCI Latency Tool (google it) which lets you view and set the timings for each of your devices.
I’m using an Abit AV8 3rd-Eye motherboard and in the bios I have a PCI Latency option. That’s set to 32. I tried 64 but over the course of my testing I decided that was making things worse so I went back to 32.
My testing phase again relied on the ping command I tapped in further up this page. I’d have the console window open on the right hand side. In there I could just press the UP arrow to reuse the last typed line so it was really quick to keep starting and stopping the ping test. Testing went like this, with the latency tool and command prompt open at all times:
- Change a setting in the latency tool
- Apply changes
- Run Ping
- Keep mi eyes on the results
- Ctrl-C out either when it seems to be rockin or when it starts spiking consistently
Sure enough as I monged about with the latency values my ping spike was being affected. Sometimes the ping would be 15+ all most constantly along with frequent time outs. Sometimes I could get it to float around 3ms and only spike every 60 seconds or so. It took a few hours of trying different combinations but eventually I’m now sitting on a ping that varies between 3-10ms with the occasional spike to about 125ms. Those are quite infrequent spikes though and are still waaay better than the 1000+ from earlier.
The general advice I followed from numerous online sources are to set everything to 000 or 032. As it stood with the Bios set to 32 almost everything in the latency tool showed 0 as default anyhow. That meant I left most things and only changed 3 values.
- The first was for my XFX Geforce 6600GT. 000 as default. I set that to 128.
- The second was the VIA Standard Host Bridge. That was set to 008 as default. I dropped this to 000.
- Finally it was the Belkin F5D7000. This was 000 as default which I switched to 016.
Most of the sources I read said to use increments of 16 which is what I used. I dont get why the Host bridge is set to 8 if that’s the case though.
On a side note; one thing I read that seemed really promising early on was about updating the driver for my AMD 64 3500+ processor. The person who suggested this reported a similar ping spiking problem on a forum along with this being the solution for them. I got the latest driver off the AMD site and updated my system. I was really excited to see the results after the reboot. Unfortunately after testing it didn’t make a difference for me.
So it seems the spike ping wasnt down to the network itself but the PCI timing. Using the PCI Latency Tool allowed me to alter my settings to achieve a better overall ping result.