I find the Epic GPS to work very well generally, especially in custom ROMs like CM7. That said it all falls apart whn trying to use the GPS in airplane mode or when overseas (or other areas with no CDMA cellular coverage). From what I can determine the Epic 4G was not configured properly to use the GPS chip in these circumstances.
To fix this issue you need to change the GPS settings on the actual gpsOne chip. This will allow the phone to get a GPS signal when in airplane mode and/or not within a CDMA service area. The procedure is time consuming and annoying but in may experience, worth it.
DISCLAMER – the below how-to could completely brick your phone. I have NO IDEA what I’m doing.
You will need to download some software to begin:
1. Qualcomm Product Support Tools (QPST) v.2.7.355 (or newer) – I don’t think I can post that link so Google it.
2. Epic 4G Windows USB drivers - http://www.samsung.com/us/support/ow...SPH-D700ZKASPR
3. MSL code – there are a number of ways of obtaining this so I will not duplicate here.
Obtain your MSL. If you can’t get this, you can’t complete this fix
Install the Epic 4G Windows USB drivers. Assuming you are rooted and or otherwise used ODIN you may already have these installed. Installing again will hurt nothing.
NOTE: So far as I can figure your phone needs to be in stock form to continue from this point on. I tried the rest of this while running CM7 – Nightly 13 and it would not work (particular issues seem to be dial codes and USB modem connectivity). Once finished with the fix you can then flash back to whatever ROM you would like. So…ODEN back to stock.
Open in the dialer and enter ##8778#. This will bring up the “PhoneUtil” menu. Set both UART and USB to MODEM and hit the home button.
Install Qualcomm Product Support Tools (QPST)
Insure that USB debugging is off. Connect the Epic 4G to your computer. The computer should make the usual USB connection noises and may begin installing drivers. Let that that finish.
Open QPST Configuration (installed when you installed QPST) and go the Ports tab, add a new port and select your port number. If nothing shows up uncheck the “show serial….blah blah” box and it will show your port number, select it and add it. You will now see your COM port with your phone connected. Close that.
Open client QPST Service Programming, select your active phone (might take a moment to come up), click "Read from phone" (enter MSL) and then scroll over to gpsOne and select all the options on the left hand side:
GPS Almanac Correction
……then click “Write to Phone.” When that’s done click “connection” and “close” and then close the program.
This may cause your phone to reboot…if not, reboot it.
Open in the dialer and enter ##8778#. This will bring up the “PhoneUtil” menu. Set UART to Modem (USB to PDA) and hit the home button….reboot again.
You should no be able to use the GPS while in airplane mode or (especially) after booting up in an area without CDMA coverage.
TIPS: If you should clear you AGPS settings for some reason (or they expire?) and you want to use the GPS anonymously without a CDMA or WiFi connection, you will need to reboot the phone first (and possibly disable “use wireless networks” in Location Settings until some new AGPS data is obtained). One way to obtain some AGPS data in absence of a CDMA network is to use an app like GPS Test to load some AGPS data back into the phone via WiFi. Also it may be possible to improve this by refining the gpsOne settings…but you would need to figure out what the hell they all mean.
This solution works for me.
Thanks to these sources for this fix: