I warn you at the outset. This is not going to be one of those Bugs & Fixes with a neatly defined set of symptoms and a iron-clad solution. This one's a bit messy. Here's the deal:
Almost immediately after getting my new iPhone 3GS, I noticed that it spent more time connected to the EDGE network, rather than the faster 3G network, than did my prior iPhone 3G.
As my old 3G was still in use (it's now my wife's iPhone), I could conduct a test. Turning off Wi-Fi on both phones, I tracked their behavior. I confirmed that there were numerous occasions when the iPhone 3GS connected to EDGE while the iPhone 3G hooked up to a 3G network--even when the two devices were side-by-side. The reverse virtually never happened. Most of the time, the two iPhones connected to the same network, but a difference was definitely detectable.
Checking online, I found others reporting a similar situation. So I contacted Apple Support for an explanation. They said they were familiar with this matter and that there was nothing wrong. At least not with my iPhone 3GS. According to Apple, the software behind the status bar on an iPhone 3GS does a better job of showing when a switch from 3G to EDGE has occurred than does the comparable software on an iPhone 3G. The status bar on the older iPhone 3G may persist, at least for awhile, in showing the 3G icon even when the phone is actually on an EDGE network. In other words--again according to Apple--both iPhones are likely on the same network at the same time, even if their status bars don't always agree.
This iPhone 3G-vs.-3GS difference is most likely to occur when you are on the edge (sorry for the pun!) of a 3G network coverage area. This is where the signal strength is borderline, thus resulting in switches to the EDGE network and sometimes frequent switching back and forth.
While this made sense, it still left a couple of questions unresolved:
Why does an iPhone 3GS sometimes switch from 3G to EDGE even when the listed 3G signal strength is high (4 or 5 bars)? For this, Apple Support claimed that the cause is an increase in network traffic. As more users connect to a 3G network in a given location, the bandwidth and network speed declines, similar to what when traffic goes up on a cable modem node. This too can cause the iPhone to switch to EDGE.
Apple also contended, although I cannot confirm, that the network gives priority to those who joined most recently. The result is, as network speed slows down in a given location, those who have been connected to 3G the longest will be the first to be switched to EDGE. If this is true, then disconnecting from and reconnecting to the 3G network should temporarily improve matters. To test this out, I went to Settings -> General -> Network and turned off Enable 3G. After waiting a few seconds, I turned it back on. This typically had an effect, but not a predictable one. The iPhone sometimes succeeded in shifting from an EDGE to 3G connection. At other times, it shifted to No Service! No matter what happened, the connection returned to its prior EDGE state within a few minutes. Powering off and turning the iPhone back on led to similar results. As a result, I am skeptical of Apple's explanation on this point.
Finally, some iPhone 3GS users are convinced (as noted in this Apple Discussions thread) that the strength and consistency of their 3G network connections on an iPhone 3GS is less on average than on an iPhone 3G. This would be consistent with an iPhone 3GS shifting to EDGE more often than an iPhone 3G, as the newer phone would more often be near the "shift point." On the other hand, this could just as well reflect that the iPhone 3GS reports the network status more accurately, as described above. As I said at the outset, this one's still a bit messy to sort out.
If there is ultimately a signal strength problem that needs solving here, I am optimistic that a iPhone firmware update will do the trick. We'll have to wait and see.
Finally, at least for AT&T phones, you can get a more accurate numerical indicator of the iPhone's current signal strength by manually dialing *3001#12345#* followed by a tap of the Call button. This brings up Field Test mode. The signal strength bars in the upper left are replaced by a negative number. The less negative the number, the better your signal strength. For a reasonably reliable signal, the number should be less negative than -100. Ideal strength would be somewhere around -50.
This story, "Bugs & Fixes: iPhone 3GS signal strength oddities" was originally published by Macworld.