How can I fix the GPS on my Samsung Galaxy S? As has been well documented, the Galaxy S phones have terrible GPS functionality.  It works for a minority, but it is slow/inaccurate for some and for others it just doesn't work at all.  How can I fix this?
Four ways: Upgrading the software, fixing the hardware, resetting the GPS settings/data, and using "fake" GPS.



Upgrading the Software


Samsung definitely released some bad GPS firmware, which does not help things.  Fortunately, good code is included in all of the recent 2.2 updates.  If you can, upgrade your software to 2.2.  It has many advantages besides just the GPS!

You can also try flashing 2.3 GPS code (see this XDA thread).  Apparently it's the best yet, and should work with any ROM.

Summary: Gingerbread great, Froyo good, Eclair bad.

Note: A minority of users have worse GPS performance after upgrading to Froyo.  If you have the very latest Froyo update and this is true for you, I believe you can fix it by continuing with the other steps below (or the 2.3 GPS code above).  You probably have bad GPS data and settings left over from Eclair, or perhaps it's just that your phone has been "cold started" and the GPS needs to collect some information about the nearby satellites first.



Fixing the Hardware


This might void your warranty, though if done properly it should be undetectable.

A major problem for many users is, yes, a hardware problem -- but not a GPS chip issue as some have claimed.  I was reluctant to accept this myself, but after trying everything else I finally resorted to this fix, and it worked!  The hardware has apparently been fixed in newer device versions, so if you bought your phone after October 2010 I recommend trying the other steps before doing this.  But the good news is that it's easy to do.  There's a detailed guide on XDA; here is the quick version:


Take off the back cover; remove the battery, SIM, and SD card.
Remove the 7 small screws in the back of the device, and carefully pry off the backing plastic.
You'll see 4 gold-ish contacts sticking out, approximately at each corner of the device.  You'll notice that the backing plastic has 4 flat contacts on it, which are supposed to touch the ones on the device.  (See the guide for details).
Slightly bend the contacts on the device upwards (a millimeter or so should be good, don't overdo it) so that they will contact the backing plate, like they were intended to.  You might want to insert something like a small folded piece of paper under the contact, so that it doesn't bend back down.
Put everything back together, and continue with the next section.




Fixing the Hardware (2nd option)


This really voids your warranty, but seems like the best possible technical fix so far.


  Problem is caused by bad gnd conductivity between mainboard and antenna. It is conduced by conductivity rubber. This kind of rubber was used for old nokia 8210 for connect display to mainboard. It was the mayor fault for nokia 8210.


There are 2 different methods which both require soldering skill but are said to significantly improve the GPS signal. Read more, see photos and a step by step guide on XDA.

Reset the GPS Data and Settings




Start up the phone, shut off GPS, and install GPSRestore (alternate non-Market link) and Captivate SGS Tools (don't worry, for our purposes it works for all SGS models).
Open the SGS Tools and, from the Secret Codes menu, go into GPS-Test and settings (LBSTestMode).
Hit Delete GPS Data.
Run GPSRestore.  I suggest running it with GPS off first, letting step 2 fail, then going outside, turning GPS on and running it again.  It may take 5+ minutes while your phone searches for satellites and figures out where it is.  This "cold start" should prep your phone with good data, and future locks should be much quicker.
Once the test is done, you should be good to go!


I recommend only trying the following if your GPS is still slow or doesn't work after trying everything else; in most situations the default server is fine.


Go into SUPL/CP Settings (in LBSTestMode as above) and change Server to supl.google.com (port 7276).  
Install GPSTest, go outside, turn on your GPS, and open the app.  Wait for a lock; again, this might take some time.




Using "Fake" GPS


Even the best GPS doesn't lock on instantly.  You can use "assisted GPS", or aGPS, to help get a rough fix quickly while you wait for the more accurate GPS to get a lock; this only works when you have internet access, since it uses your IP address to locate you.  Go into your device's GPS settings (Settings -&gt; Location and security) and make sure Use wireless networks and Use sensor aiding are both checked.  Use GPS satellites should, of course, be checked also.

Note: This might make things worse in situations where the phone relies on the inaccurate aGPS more than the "real" GPS.  Experiment with and without it.





And that's it!  I hope this guide works for you and you enjoy your newly functional GPS.