One of the things we learned from our field trials this August was that the on-board GPS in our Android phones (HTC Desire, Nexus One) doesn’t resolve position as accurately as we’d like, often only achieving a 10m ‘accuracy’ (as measured in the application ‘GPS Status‘ – I suspect that this bases its information on how many satellites it can ‘see’). It would appear that the GPS of the HTC Desire is integrated into the Qualcomm Snapdragon chipset (Qualcomm gpsOne). In 2009, a new method of improving GPS accuracy was unveiled by the European Space Agency: a differential annexe to the GPS signal broadcast across Europe called EGNOS. EGNOS broadcasts a stream of correction advice to any EGNOS-enabled GPS receiver within its footprint. The correction advice consists of ephemeris information such as expected sunspot and atmospheric activity which detracts from GPS performance. GPS devices with EGNOS assistance are reported to commonly achieve accuracies between 1-2.5m.
Since the built-in GPS receivers in the HTC Desire and Nexus One handsets aren’t EGNOS-enabled, we used a Nokia LD-3W bluetooth GPS reciever from a related project. In order to find out if a GPS unit is EGNOS-enabled, we found that the Open Street Map project has an excellent GPS hardware reference, where it says the Nokia LD-3W has a SiRFstar-III chipset, which along with the MTK (Mediatek MT3328-9) is one of the more modern and capable of consumer GPS chipsets. Connecting the HTC Desire to the Nokia GPS is a matter of turning the GPS on, then enabling Bluetooth on the phone handset and ‘scanning for devices’ (MENU->Settings->Wireless & Networks->Bluetooth settings). When the GPs is shown in the ‘Bluetooth Devices’ list at the bottom of the Bluetooth Settings page, touch it to start the pairing process, where you will be asked for a PIN number, usually ’0000′ or ’1234′. To enable the Android device to use bluetooth as a source for GPS information instead of (or as well as) the built-in receiver we used the application ‘Bluetooth GPS Provider‘. The Android system will now need a change in ‘MENU->Settings->Applications->Development’ where you’ll need to check the ‘Allow mock locations’ box before Bluetooth GPS Provider can work. Start the Bluetooth GPS Provider application and ‘Choose GPS receiver’ from the list, or scan again for bluetooth devices. Now touch ‘Start’ – the LEDs on my Nokia GPS now show blue ‘bluetooth connected’ and a white ‘GPS working’ lights. Inside the Bluetooth GPs Provider preferences, you can select the GPS chipset (SiRF/MTK/Other). When the external GPS gets a fix you’ll be rewarded with a display showing the number and signal strength of the satellites in view, and as shown here, an estimated accuracy of 2m.

Nice piece of investigation. From my experience, you are right about the satellite availability, depending on the positions it could be you only get 2-3 satellites at best on certain days.
In contrast the Trimble PDAs we use down here are also typically 5-10m accuracy so the HTC is not doing a bad job at all. Trimble put EGNOS into their Windows Mobile PDAs, so it can be as good as 1-2m accuracy, but the reality is normally different, because of the conditions/satellite positions.
Really good to see the HTC taking on the bluetooth GPS with little problems!
Just to mention, Trimble also supply an external antenna, so the user can put this into a pocket of a bespoke cap/hat, so the antenna is essentially on the top of the users head, this can help reduce the number of drop outs.
Pingback: Out There and In Here » Blog Archive » GPS accuracy testing at 0 degrees East