I had read many possible solutions on the net but the only fix that actually worked was this one:
Warning: This is for advanced users. If you are not comfortable flashing and changing crap on your phone, don't do it. No one is responsible for messing up your phone other than you.
When on a Sense ROM (it can be stock, Fresh, Sprint Lovers, etc) do the following:
- MAKE SURE YOU DO A FULL BACKUP FIRST!
- Download MSL reader from the market
- Run MSL reader to get your MSL. Your phone may freeze up after you get your MSL. Your MSL should be 6 digits long.
- Flash to any Sense ROM. Unless you have a prior backup of Stock Sense or any other Sense ROM, I suggest flashing Fresh. Note: I had issues with Rom Manager version 220.127.116.11 while trying to flash a Sense ROM. If you have this issue also then you should flash an earlier recovery, I used 18.104.22.168 and it finally worked.
- In the dialer, dial: ##GPSCLRX# (##4772579#)
- Your phone will ask for a security number. This is the MSL. Input it here.
- After it has rebooted, test your GPS in Sense to make sure it works. If you need to, follow these steps again.
- While you are in Sense, go to settings > about phone > updates > update PRL.
- After the PRL is updated, go back to the updates and hit update profile.
- Once the profile is updated either reboot into recovery or use Clockwork Mod, then
- Flash your backup of CyanogenMod 7