Closed Bug 803819 Opened 12 years ago Closed 12 years ago

GPS fix wrongly reported while not really having a fix

Categories

(Firefox OS Graveyard :: General, defect)

ARM
Gonk (Firefox OS)
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: gerard-majax, Unassigned)

Details

With current gecko on Nexus S, master at ba2045ecf1577263db447aa522b023a0f614fca8, I'm experiencing total GPS breakage.

After enabling debug in dom/system/gonk/GonkGPSGeolocationProvider.cpp to get NMEA tracing, I can see that I never get a GPS fix according to the system:

adb logcat -d | egrep -v "RIL|RadioInterfaceLayer" | grep "GGA"
I/Gecko   (  339): nmea:     	$GPGGA,235958.98,,,,,0,00,999.9,,M,,M,,*67
I/Gecko   (  339): nmea:     	$GPGGA,113525.73,,,,,0,00,300.0,,M,,M,,*60
I/Gecko   (  339): nmea:     	$GPGGA,113526.73,,,,,0,00,300.0,,M,,M,,*63
I/Gecko   (  339): nmea:     	$GPGGA,113527.73,,,,,0,00,300.0,,M,,M,,*62
I/Gecko   (  339): nmea:     	$GPGGA,113528.73,,,,,0,00,300.0,,M,,M,,*6D
I/Gecko   (  339): nmea:     	$GPGGA,113529.73,,,,,0,00,300.0,,M,,M,,*6C
I/Gecko   (  339): nmea:     	$GPGGA,113530.73,,,,,0,00,300.0,,M,,M,,*64
I/Gecko   (  339): nmea:     	$GPGGA,113531.73,,,,,0,00,300.0,,M,,M,,*65
I/Gecko   (  339): nmea:     	$GPGGA,113532.73,,,,,0,00,300.0,,M,,M,,*66
I/Gecko   (  339): nmea:     	$GPGGA,113533.73,,,,,0,00,300.0,,M,,M,,*67

One can check on this reference, http://www.gpsinformation.org/dale/nmea.htm#GGA, GPGGA reports fix status. Quoting:
********************************************************************************************************************
GGA - essential fix data which provide 3D location and accuracy data.

 $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47

Where:
     GGA          Global Positioning System Fix Data
     123519       Fix taken at 12:35:19 UTC
     4807.038,N   Latitude 48 deg 07.038' N
     01131.000,E  Longitude 11 deg 31.000' E
     1            Fix quality: 0 = invalid
                               1 = GPS fix (SPS)
                               2 = DGPS fix
                               3 = PPS fix
			       4 = Real Time Kinematic
			       5 = Float RTK
                               6 = estimated (dead reckoning) (2.3 feature)
			       7 = Manual input mode
			       8 = Simulation mode
     08           Number of satellites being tracked
     0.9          Horizontal dilution of position
     545.4,M      Altitude, Meters, above mean sea level
     46.9,M       Height of geoid (mean sea level) above WGS84
                      ellipsoid
     (empty field) time in seconds since last DGPS update
     (empty field) DGPS station ID number
     *47          the checksum data, always begins with *
********************************************************************************************************************

So one can deduce that we have no string at all for latitude nor longitude, fix quality is reported as 'invalid', hence no fix, and we have no satellite in view.
Forgot to add that not only we get no fix, but the system somehow reports that we get one located in Lyon, France. Extact location produced is:
Latitude: 45.764043
Longitude: 4.835659
Bisecting or even getting back to a gecko commit I know was working does nothing. I have no idea where this comes from.
I'm unsure if it might be linked to A-GPS somehow, but I'm using only WiFi for data connectivity, not 3G network.
I've modified /vendor/etc/gps.xml to enable logging, and looking at the log file produced after a fresh cold start of the phone, I get:

$ grep "SetPosition" gl-2012-10-20-230842.txt 
23:09:36.679 #057062I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:37.670 #058053I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:38.664 #059047I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:39.661 #060044I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:40.678 #061061I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:41.664 #062046I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:42.667 #063050I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:43.668 #064051I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:44.670 #065053I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:45.661 #066044I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:46.665 #067048I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:47.661 #068044I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:48.674 #069057I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:49.664 #070047I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:50.663 #071046I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:51.676 #072059I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:52.662 #073045I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:53.666 #074049I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:54.675 #075058I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:55.663 #076046I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:56.666 #077049I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:57.663 #078046I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:58.669 #079052I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:09:59.662 #080045I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:00.663 #081046I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:01.663 #082046I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:02.666 #083049I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:03.666 #084049I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:04.675 #085058I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:05.663 #086046I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:06.668 #087051I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:07.663 #088046I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:08.668 #089051I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:09.710 #090093I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:10.664 #091047I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:11.664 #092047I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:12.667 #093050I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:13.664 #094047I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:14.665 #095048I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:15.665 #096048I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:16.664 #097047I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:17.665 #098048I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:18.664 #099047I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:19.665 #100048I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:20.668 #101051I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:21.676 #102059I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:22.680 #103063I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:23.676 #104059I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:24.665 #105048I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:25.688 #106071I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 1 Invalid
23:10:26.666 #107049I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 1 Invalid
23:10:27.666 #108049I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:28.668 #109051I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 1 Invalid
23:10:29.717 #110100I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 1 Invalid
23:10:30.666 #111049I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 1 Invalid
23:10:31.679 #112062I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 1 Invalid
23:10:32.642 #113025I SetPosition: Lat=0.000000 Lon=0.000000 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 1 Invalid
23:10:33.646 #114029I SetPosition: Lat=47.350409 Lon=0.618099 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:34.653 #115036I SetPosition: Lat=47.350409 Lon=0.618099 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:35.643 #116026I SetPosition: Lat=47.350409 Lon=0.618099 Alt=0 EstAcc=3000 HulaPosSrc=0x0000 conf 0 Invalid
23:10:36.647 #117030I SetPosition: Lat=47.350193 Lon=0.617863 Alt=0 EstAcc=200 HulaPosSrc=0x0002 conf 1 Valid
23:10:37.656 #118039I SetPosition: Lat=47.350193 Lon=0.617863 Alt=0 EstAcc=200 HulaPosSrc=0x0000 conf 0 Valid
23:10:38.669 #119052I SetPosition: Lat=47.349628 Lon=0.617210 Alt=134 EstAcc=100 HulaPosSrc=0x0002 conf 1 Valid
23:10:39.684 #120067I SetPosition: Lat=47.349628 Lon=0.617210 Alt=134 EstAcc=200 HulaPosSrc=0x0002 conf 1 Valid
23:10:40.701 #121084I SetPosition: Lat=47.349532 Lon=0.617151 Alt=123 EstAcc=80 HulaPosSrc=0x0002 conf 1 Valid
23:10:41.776 #122159I SetPosition: Lat=47.349422 Lon=0.616966 Alt=132 EstAcc=20 HulaPosSrc=0x0002 conf 2 Valid
23:10:42.809 #123192I SetPosition: Lat=47.349422 Lon=0.616966 Alt=132 EstAcc=20 HulaPosSrc=0x0002 conf 2 Valid
23:10:43.778 #124161I SetPosition: Lat=47.349358 Lon=0.616826 Alt=135 EstAcc=15 HulaPosSrc=0x0002 conf 2 Valid
23:10:44.780 #125163I SetPosition: Lat=47.349358 Lon=0.616826 Alt=135 EstAcc=15 HulaPosSrc=0x0002 conf 2 Valid
23:10:45.780 #126163I SetPosition: Lat=47.349358 Lon=0.616826 Alt=135 EstAcc=15 HulaPosSrc=0x0002 conf 2 Valid
23:10:46.778 #127161I SetPosition: Lat=47.349358 Lon=0.616826 Alt=135 EstAcc=15 HulaPosSrc=0x0002 conf 1 Valid
23:10:47.800 #128183I SetPosition: Lat=47.349358 Lon=0.616826 Alt=135 EstAcc=10 HulaPosSrc=0x0002 conf 2 Valid
23:10:48.782 #129165I SetPosition: Lat=47.349358 Lon=0.616826 Alt=135 EstAcc=15 HulaPosSrc=0x0002 conf 1 Valid
23:10:49.801 #130184I SetPosition: Lat=47.349358 Lon=0.616826 Alt=135 EstAcc=10 HulaPosSrc=0x0002 conf 2 Valid
23:10:50.782 #131165I SetPosition: Lat=47.349358 Lon=0.616826 Alt=135 EstAcc=10 HulaPosSrc=0x0002 conf 2 Valid

So, GPSD is getting the correct location, but somehow Gecko does get something else!
Okay it seems that the location in Lyon is due to my ISP. Not getting a GPS fix, hence this one gets used when I'm connected to WiFi.
After writing a small Gaia application that probes watchPosition, I have it working properly.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → WORKSFORME
So in fact maybe the issue is that it does not wait long enough for GPS to get a fix ?
Trivial Gaia application for probing watchPosition: https://github.com/lissyx/gaia-geoloc
You need to log in before you can comment on or make changes to this bug.