[teqc] Converting Android GPS data to Rinex file format

Gerald Creager gerry.creager at tamu.edu
Wed Oct 13 13:45:52 MDT 2010


You went a bit deeper than I did. Thanks for the info!

Matthew Beldyk wrote:
>  Hi all,
> 
> I just did a bit of poking into the deep internals of the Android 
> platform because I was curious if it would be possible to extend the 
> Android SDK to include the information needed for RINEX, but the short 
> answer is "No, the needed data for RINEX is not available at any level 
> above the hardware itself."
> 
> The longer answer (if anyone is curious about Android's kernel) follows:
> 
> As Jim states below, the needed information is not available in the 
> Java/Dalvik API.  But I wondered if the pseudorange and phase were 
> available at any other layer of the Android stack (unfortunately, no, it 
> isn't.)  As far as I can tell, the level directly below the Java API is 
> this library: 
> http://android.git.kernel.org/?p=platform/hardware/qcom/gps.git;a=tree;f=loc_api/libloc_api; 
> which operates only on information available from some serial attached 
> NMEA based layer, so I need to dig deeper.  (there were some references 
> in loc_eng_xtra.cpp to gps orbit parameters, but again only the 
> information passed up to the Java API.)
> 
> At the next level down, we are at libhardware_legacy/gps 
> http://android.git.kernel.org/?p=platform/hardware/libhardware_legacy.git;a=tree;f=gps;hb=HEAD 
> and are directly parsing a NMEA string into usable data structures (what 
> the libloc library uses.)  At this point, I thought it was unlikely that 
> the information would be available, but I kept going down the tree.
> 
> Eventually, I made it down to the GPS driver level: 
> http://android.git.kernel.org/?p=kernel/common.git;a=blob_plain;f=drivers/usb/serial/garmin_gps.c  
> (I only found a single end point to get GPS information from hardware.)  
> Basically, the GPS devices on Android phones are a serial over USB NMEA 
> devices.  I found callbacks in garmin_gps.c turning the GPS chip on and 
> off, and collecting data from the chip, but only the NMEA information.  
> There is an chance that some of the chips used by Android phones have 
> debug interfaces to find out phase or pseudorange, but it is not 
> documented in any way that a developer could easily access.  To find 
> this info, you would need to communicate directly with the manufacturer 
> of the GPS chip in the phone (it's possible, if not likely, that the 
> phone manufacturer does not have this information available to outside 
> developers, since their use cases for the phones are very different from 
> what RINEX is used for.)
> 
> At this point, it becomes a question of exactly what chipset specific 
> models of Android phones are using, as well as if there are any special 
> instruction that can be sent to the chip to force it to output extra 
> information (if that documentation even exists.) (As well as finding a 
> kernel hacker/firmware engineer and Dalvik expert to implement the extra 
> functionality all the way up.)
> 
> Best regards,
> Matt Beldyk
> 
> 
> 
> 
> 
> On 10/13/10 11:44 AM, James Johnson wrote:
>> Hi Lalitha,
>>
>> It is not possible to generate RINEX from an android phone.  This is 
>> because the raw data required for RINEX is not exposed by the Android 
>> API.  You can get some information about the SVs tracked and a 
>> position, but you can not get the raw Pseudo range data.  The NMEA 
>> strings are not useful for generating RINEX as well, simply because 
>> the data is not there.
>>
>> Sorry for the sad news.
>>
>> Best Regards,
>> Jim Johnson
>> On Oct 13, 2010, at 11:40 AM, Lalitha wrote:
>>
>>> Hi Homan,
>>>
>>> Tons of thanks for the detailed reply. I've been searching the net 
>>> and posting in all the android, gps forums for the past 10 days and 
>>> didn't get any response till now. Thanks to teqc mailing list.
>>>
>>> Q1. I checked the android api for the gps data. It provides GPS 
>>> Satellite info from which we can get elevation, PRN (pseudo-random 
>>> number), snr, Almanac, ephemeris data etc.
>>>       Ref : 
>>> http://developer.android.com/reference/android/location/GpsStatus.html
>>> With these data, will it be possible to generate Rinex file directly 
>>> from android app?.
>>>
>>> Q2. Also, there is a nmealistener provided in the android api using 
>>> which we can capture gps nmea strings. Will this data be useful by 
>>> anyway to translate to rinex format? (Though, I coudnt succeed 
>>> capturing nmea string using my htc magic phone, I can try with some 
>>> other phones if this data will be  useful for post processing).
>>>
>>> Thanks,
>>> Lalitha.
>>>
>>> On Wed, Oct 13, 2010 at 9:58 AM, Homan, Thomas<thoman at co.gila.az.us>  
>>> wrote:
>>> Lalitha,
>>>
>>>
>>> .gpx files cannot be converted to Rinex as they don’t contain the 
>>> necessary data elements. If I remember correctly, the api only 
>>> outputs the final latitude and longitude values. I don’t believe the 
>>> underlying raw gps data is accessible but I’m just getting started on 
>>> Exclipse.
>>>
>>>
>>> To generate a Rinex file you need to have access to underlying 
>>> information such as pseudorange, carrier phase and other data from 
>>> each satellite in the GPS constellation. As an example, below are a 
>>> .gpx file compared to a Rinex file that I collected in 2005. Each of 
>>> the 7 satellites visible has a set of 7 data elements logged out of 
>>> my $$$ survey grade receiver and this happens each logging period.
>>>
>>>
>>> Peruse the api docs and see if there is access to the underlying data 
>>> and not the final coordinates. If not, then you might be out of luck. 
>>> One thing you might explore is if the android OS supports inserting 
>>> DGPS correctors so you could get real time sub-meter accuracies.
>>>
>>>
>>> Hope this helps some.
>>>
>>>
>>> Tom
>>>
>>>
>>> GPX
>>>
>>> <?xml version="1.0" encoding="ISO-8859-1"?>
>>>
>>> <gpx xmlns="http://www.topografix.com/GPX/1/1" 
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1" 
>>> creator="Doug Forster's map viewer" 
>>> xsi:schemaLocation="http://www.topografix.com/GPX/1/1 
>>> http://www.topografix.com/GPX/1/1/gpx.xsd">
>>>
>>> <wpt lat="-42.48781" lon="172.29404">
>>>
>>> <ele>1273</ele>
>>>
>>> <name>NwDvls</name>
>>>
>>> <cmt>  30/01/10 19:14</cmt>
>>>
>>> <desc>New Devils Den Biv</desc>
>>>
>>> <sym>Anchor</sym>
>>>
>>> <extensions>
>>>
>>> <type xmlns="Freshmap">Place</type>
>>>
>>> <TrackColor xmlns="Freshmap">0</TrackColor>
>>>
>>> <FontSize xmlns="Freshmap">90</FontSize>
>>>
>>> <GPSColor xmlns="Freshmap">14</GPSColor>
>>>
>>> <Layout xmlns="Freshmap">5</Layout>
>>>
>>> </extensions>
>>>
>>> </wpt>
>>>
>>> </gpx>
>>>
>>>
>>> Rinex
>>>
>>> 05 10 12 14 44 45.0000000  0  7G 1G24G23G20G16G25G11
>>>
>>>    18540407.76711  14441990.35651  22140106.912    22140108.9425   
>>> 22140103.6715
>>>
>>>       -1502.342       -1170.656
>>>
>>>    18405511.80411  14342294.04151  23619878.513    23619880.7005   
>>> 23619875.3565
>>>
>>>         382.895         298.360
>>>
>>>    18279304.44211  14260112.94351  22317896.240    22317897.3485   
>>> 22317888.9405
>>>
>>>        2122.449        1653.856
>>>
>>>    18331079.75811  14289623.90551  20672596.529    20672597.6675   
>>> 20672590.3895
>>>
>>>        1386.704        1080.549
>>>
>>>    18282886.39611  14256935.72751  21779940.978    21779941.1535   
>>> 21779934.4995
>>>
>>>        2177.108        1696.448
>>>
>>>    18595837.79911  14470056.42251  21824971.770    21824972.4395   
>>> 21824966.6485
>>>
>>>       -2263.324       -1763.629
>>>
>>>    18612482.40511  14492926.57751  23828871.571    23828874.4325   
>>> 23828869.0685
>>>
>>>       -2470.753       -1925.262
>>>
>>>
>>> From: teqc-bounces at ls.unavco.org [mailto:teqc-bounces at ls.unavco.org] 
>>> On Behalf Of Lalitha
>>> Sent: Wednesday, October 13, 2010 9:03 AM
>>> To: teqc at ls.unavco.org; gpstech at ls.unavco.org
>>> Subject: [teqc] Converting Android GPS data to Rinex file format
>>>
>>>
>>> Hi,
>>>
>>> How do i convert the gps data I get from Android GPS Receiver into 
>>> Rinex file format in order to do Post processing corrections.
>>> I can write the gps data into .gpx format using the android api 
>>> provided. I use HTC Magic phone with 2.2 api version.
>>> I cudnt find option for android in the teqc toolkit. Can anyone help 
>>> how do I convert to Rinex?
>>> Also I'm looking for the post processing softwares or service 
>>> available for evaluation. I could find only one free evaluation 
>>> software 'PPro2' from Kinematic GPS.
>>> Is there any other free post processing software present?
>>>
>>> Thanks,
>>> Lalitha.
>>>
>>>
>>> _______________________________________________
>>> teqc mailing list
>>> teqc at ls.unavco.org
>>> http://ls.unavco.org/mailman/listinfo/teqc
>>>
>>>
>>> _______________________________________________
>>> teqc mailing list
>>> teqc at ls.unavco.org
>>> http://ls.unavco.org/mailman/listinfo/teqc
>> _______________________________________________
>> teqc mailing list
>> teqc at ls.unavco.org
>> http://ls.unavco.org/mailman/listinfo/teqc
>>
> _______________________________________________
> teqc mailing list
> teqc at ls.unavco.org
> http://ls.unavco.org/mailman/listinfo/teqc

-- 
Gerry Creager -- gerry.creager at tamu.edu
Texas Mesonet -- AATLT, Texas A&M University
Cell: 979.229.5301 Office: 979.458.4020 FAX: 979.862.3983
Office: 1700 Research Parkway Ste 160, TAMU, College Station, TX 77843


More information about the teqc mailing list