[Galaxy S I9000 General] dangrayorg:
The bizarre 'wandering' behaviour leads me to suspect the navigation engine. When using a standalone GPS test app the Satellite lock I see is fine and the SNR (assuming it is being reported honestly) is OK.

In addition, when I'm using an app like Open GPSTracker I get convincing and accurate updates at around 1Hz (which is what you would expect) with a good solid position fix to within an accuracy I am happy with (usually 5-10m).

There are two issues I see:

First is that the speed reported by GPS apps is Bunk, or laggy at best. I haven't looked at the NMEA logs from the built-in GPS - do they contain accurate speed information?

Second is the 'wandering GPS' issue, which results in the classic continuing-straight-on-when-you-just-turned issue most of us are seeing.

This second issue, combined with the way you can observe the GPS reported position in something like Google Navigation slowly converging with the location you know you are are leads me to strongly suspect that Samsung are using some sort of IN/GPS mixing and doing it very badly.

GPS simply gives a position in its pure form. There's no interpolation or guessing at 1Hz (if you have GPS that advertises itself as a higher refresh rate then it probably is. but I assume the embedded GPS chip isn't too fancy and updates at a standard 1Hz). Usually the receiver then calculates the speed using a simple time/distance calculation between two points. Heading is simple geometry. Based in this fact I can think of no other explanation for the drifting behaviour.

What I suspect:

For some reason Samsung is mixing magnetometer and/or accelerometer data with the GPS positions (regardless of whether you select the 'use sensor data' option in the location menu), probably to avoid having to do the speed/direction computations from the raw GPS data alone or because their driver isn't providing it in the NMEA line (I assume that at some point the GPS chip provides a NMEA formatted output to the OS, this is that way every other device works!). In theory this should work really well and cut processing overhead - if you've got a good accelerometer giving acceleration and a good magnetometer giving heading why bother to calculate it from GPS position fixes, you can simply bias towards sensors and use the GPS for occasional updates.

However, while the MEM devices in the SGS while good enough for apps like Layar and Google Sky simply aren't up to the job of providing navigational quality mixing. I believe Samsung are being too clever and should re-write their positional engine using GPS position data alone and calculating speed and heading from that. It works for almost every other GPS device on the market.

At some point Samsung have tried to compensate for poor GPS performance by feeding sensors into the mix at the system level without user control. (I suppose this MIGHT be Googles fault??) This is giving a short-term bias towards interpolated positions fed from heading and accelerometer date which is provided by inaccurate sensors corrupting the perfectly good GPS information.

As I say, I don't know how good my guesses above are, it's simply an educated guess based on observation and some knowledge of IN/GPS mixing filters.

What do you guys think?