Hardware:AGPS

From Openmoko

Revision as of 12:27, 28 June 2007 by Milos (Talk | contribs)

Jump to: navigation, search

The Neo1973 uses an Assisted Global Positioning System, AGPS, technology. The Hardware:AGPS page provides information on GPS in general and the OpenMoko chip in particular.

AGPS chip in the Neo1973 is called Hammerhead, and it is the same chip used in TomTom one devices, which incidentally run Linux, too. See Hammerhead protocol.

Contents

Q: Has anybody here ever used AGPS? I'd like to hear your experiences.

Everybody who has used a modern GPS has used AGPS. It is usually called warm-start or hot-start. AGPS is purely a marketing term. To calculate the position a GPS chip needs:

  • almanac = coarse position of satellites
  • ephemeris = precise position of satellites

The almanac is broadcast in a loop of 12.5 minutes and valid for at least six weeks. The ephemeris is broadcast in a loop of 30 seconds and valid for ~2 hours.

Time is mostly irrelevant, as modern chips synchronize within a second with the satellites.

The receiver chipsets store this data in flash and load it from there onto the chip in order to _assist_ the hot or warm start.

AGPS now means to load the almanac and the ephemeris from elsewhere, i.e. via a network. For example for free from the American government: http://www.navcen.uscg.gov/gps/precise/default.htm

AGPS is a nice convenience yet the success and proper functioning of TomTom and Navigon PDAs shows that you don't need that at all.

It's worth noting that the GPS on the neo is sensitive enough to pick up GPS signals in buildings. If the spot you charge your neo happens to have a GPS signal, downloading the almanac from the satellites while it charges is essentially free, and takes no Internet access at all. Do this daily, and you get most of the benefit of aGPS.

Q: The chip in the Neo1973 is a Global Locate AGPS. Anybody know what type? Hammerhead maybe?

A: It is the Hammerhead.

Q: I understand the concept of assisted GPS. But does the phone have its own antenna/receiver so that it can work without 'assistance'?

A: See above, the important part is the GPS and not the assistance. Antenna is thus compulsory.

Q: Has anybody got any info on the whereabouts of assistance servers, especially in Belgium and Europe?

A: They can be anywhere on the net. Alternatively a service from the cellphone operators. However, there may be occasions where you want a server 'near' where you are. See the later question on DGPS.

Q: Using the assistance servers will probably mean that I will have to pay for that service. Any idea of the costs?

There are no servers operated by Global Locate to do this. There are sources online that allow free download of assistance data. Closer to mass-market launch time, FIC might choose to launch such a server - or it could be a community effort. It is a very small amount of data, costs if any will be very small. ($1/year perhaps). You generally do not need AGPS.

Q: Is there any "A-GPS standard" whatsoever?

A: No. It's a broad term for many variants of GPS.

Q: I have heard elsewhere (Wikipedia) that in A-GPS the computation effort is shared between the device and the A-GPS Server. According to a previous post, the device just downloads the ephemeris table so there isn't any actual "computation sharing", but rather a download of a pre-computed table download. Correct?

A: Yes, in this case. In others the server may do more work. For the neo, all the position information is computed in the neo.

Q: A-GPS involves additional data traffic and thus (potential) additional costs. Does it use a normal GSM/GPRS IP-based data transfer? does it use some out-of-band GSM/GPRS control messages? or does it get data from broadcasts in the local cell (e.g. GSM cell-broadcast)?

A: GPRS. so its up to you whether you want that extra traffic (and cost, unless you're flat) or not.

Q: if the answer to above is GPRS: is it possible to estimate in advance how much additional traffic (in Kbytes/day of full operation)?

A: The absolute worst case is 50 bits/s * 12.5 minutes = around 5Kbytes for the full almanac. However, this is certainly not needed every day. The errors in orbit prediction when you have a full almanac are quite small over the short term (a week). 5K once (or the GPS on for 12.5 minutes) then .5K/day should be quite adequate.

Q: Are there any known estimations on the overall (A)GPS performance on the Neo (esp. fix time)

A: The Hammerhead brief information page specifies 1s fix time for a position with 5m error.

Q: Coming to the Neo1973. In order to save costs, can the "Assisted" function in A-GPS be disabled through software API?

A: Yes, it can be disabled through preferences.

Q: Is it possible to tell whether A-GPS is actually in use or not?

A: Yes - either you have enabled it in preferences, or you haven't ;)

Q: Is it possible to tell/know which is the A-GPS server currently in use?

A: yes.

Q: Can choosing to use GPS (even with A-GPS disabled) enable others to track me? Is there a mode where this is not the case?

A: The receiver does not emit significant amounts of RF - unless you are literally within centimeters of the device, it's not possible to pick it up. The other alternative would be that the supplied plugin to gpsd is trojaned, and can be asked somehow to report on your position. The position is entirely computed in the plugin to gpsd, the GPS hardware cannot know it, it's too dumb.

Q: What is DGPS, can DGPS and A-GPS work together?

A: An overview of DGPS Differential GPS is basically a way of removing systematic per-satellite errors from various causes (satellite clock drift, atmospheric effects) for 'nearby' receivers, given one receiver that knows where it is.

The per-satellite range errors to a satellite are around 2-3 metres typically. These per-satellite errors are similar for users close to each other. These corrections are broadcast by radio in much of the USA (which the neo cannot pick up).

If you can download error information from a nearby source, then you can obtain positions that are much more accurate than without this information. Perhaps well under 1m radius of error, instead of 2 or 3. In some applications this may be of use.

It may be that the apgsd cannot do this, and it will require reverse engineering.

In any case, this would be another few hundred bytes a minute while this is active. (the error information rapidly ages).

Any stationary receiver - even a neo on charge, with a good signal, can produce useful error information. If it had a cheap internet connection at the same time, it could be constantly updating a global error model, for use by other neo owners.

It may be that the apgsd cannot do this, and it will require reverse engineering.

Q: I thought DGPS couldn't be done like this.

See for example http://gpsinformation.net/main/poordgps.htm A: This is quite different from simply looking at the relative offset of reference GPS device, and a known point, and then comparing. The difference is that the neo can help to derive (in combination with other stationary devices) a real-time model of the different sources of error. See the last comment on the article you refer to - the neo chip produces pseudorange output, it can be corrected in this same manner.

Q: Is an open-source GPS daemon able to be distributed by FIC?

A web copy of the ITAR - International Traffic in Arms Regulation legislation, currently in force in the US

While stupid, this defines


... GPS receiving equipment with any of the following characteristics: ...

  (2) Designed for producing navigation results above 60,000 feet altitude
      and at 1,000 knots velocity or greater;

as being a munition. This is right after the section prohibiting rockets that can be used to deorbit satellites on a specific target, and just before nuclear weapons design and test equipment.

And just because it's stupid doesn't mean they won't kick the doors in - or prevent it from sale and levy huge fines, after the gleefull lawyers at Apple point it out. (you need DOD licenses to import/export)

The plugin for the gpsd daemon presumably implements this limit.

Much established hardware has pretty much confirmed that it's OK to do it this way - as long as it's closed source, you can point at the evil hackers, and say that you never did it.

An open source plugin for gpsd distributed with the neo might raise other issues, namely that at some point in the code, there is a self-documented if(velocity>1000kt) test, which can be trivially commented out. (the hardware must be able to do this, the velocity of a satellite towards and away from the user greatly exceeds 1000 knots.)

If I was FIC, I would at the very least want a good legal opinion on if an open source gpsd plugin (perhaps a user contributed one after decoding the binary stream that the hammerhead puts out) can be safely distributed, before doing so.

--Morricone 11:15, 16 February 2007 (CET) You forget, that FIC is not located in the USA, so US laws do not apply.

Very true, however, this would mean that it could not be imported into the US. Also that anyone from FIC involved in this could not travel to the US without fear of arrest. The penalties are really quite high. --Speedevil 14:10, 16 February 2007 (CET)

Isn't this resriction implemented in the chipset? wouldn't the chipset itself be illegal in the US without these restrictions? --Kiney 22:20, 14 March 2007 (CET)

The chipset is too dumb. It does not know the position or the velocity. This is only computed in the host CPU. --Speedevil 06:17, 25 March 2007 (CEST)


However, there must be some code/license bypass to this. I'm not supporting license and restriction violation, but legal way to provide opensource gpsd. For example: 1) put gpsd in for example LGPL, then provide restriction module as a must, and put module

  under license that allows open source code, but doesn't allow changes that will
  break gps module usage restrictions - this way gpsd works, and all restrictions are
  preserved.

2) Put gspd into GPL with explicit restriction on code forks that change restriction. 3) Make an end-user license agreement that he will not use it above 60000ft, and 1000knots. 4) mixture of 1,2,3

When you get a gun, most probably there is no EULA that say, "do not shoot classmates, or any human, or a pet", and if you do, they won't punish gun manifacturer, nor seller. And if there is an EULA for a gun, than openmoko could have a same EULA.

When I buy GPS tracker, there is no limitation 'please do not dissasebmle gps IC, and if you do, do not fly above 60kft and faster than 1k knots, even if there is hard coded limitation inside firmware.

The same way as manifacturers of gsp devices are license bound to restricting usage of gps ICs in their products the same license could be transfered to end users.

If you can't solve restrictions, transfer it. --Milos 13:17, 27 July2007 (CEST)

Personal tools

The Neo1973 uses an Assisted Global Positioning System, AGPS, technology. The Hardware:AGPS page provides information on GPS in general and the OpenMoko chip in particular.

AGPS chip in the Neo1973 is called Hammerhead, and it is the same chip used in TomTom one devices, which incidentally run Linux, too. See Hammerhead protocol.

Q: Has anybody here ever used AGPS? I'd like to hear your experiences.

Everybody who has used a modern GPS has used AGPS. It is usually called warm-start or hot-start. AGPS is purely a marketing term. To calculate the position a GPS chip needs:

  • almanac = coarse position of satellites
  • ephemeris = precise position of satellites

The almanac is broadcast in a loop of 12.5 minutes and valid for at least six weeks. The ephemeris is broadcast in a loop of 30 seconds and valid for ~2 hours.

Time is mostly irrelevant, as modern chips synchronize within a second with the satellites.

The receiver chipsets store this data in flash and load it from there onto the chip in order to _assist_ the hot or warm start.

AGPS now means to load the almanac and the ephemeris from elsewhere, i.e. via a network. For example for free from the American government: http://www.navcen.uscg.gov/gps/precise/default.htm

AGPS is a nice convenience yet the success and proper functioning of TomTom and Navigon PDAs shows that you don't need that at all.

It's worth noting that the GPS on the neo is sensitive enough to pick up GPS signals in buildings. If the spot you charge your neo happens to have a GPS signal, downloading the almanac from the satellites while it charges is essentially free, and takes no Internet access at all. Do this daily, and you get most of the benefit of aGPS.

Q: The chip in the Neo1973 is a Global Locate AGPS. Anybody know what type? Hammerhead maybe?

A: It is the Hammerhead.

Q: I understand the concept of assisted GPS. But does the phone have its own antenna/receiver so that it can work without 'assistance'?

A: See above, the important part is the GPS and not the assistance. Antenna is thus compulsory.

Q: Has anybody got any info on the whereabouts of assistance servers, especially in Belgium and Europe?

A: They can be anywhere on the net. Alternatively a service from the cellphone operators. However, there may be occasions where you want a server 'near' where you are. See the later question on DGPS.

Q: Using the assistance servers will probably mean that I will have to pay for that service. Any idea of the costs?

There are no servers operated by Global Locate to do this. There are sources online that allow free download of assistance data. Closer to mass-market launch time, FIC might choose to launch such a server - or it could be a community effort. It is a very small amount of data, costs if any will be very small. ($1/year perhaps). You generally do not need AGPS.

Q: Is there any "A-GPS standard" whatsoever?

A: No. It's a broad term for many variants of GPS.

Q: I have heard elsewhere (Wikipedia) that in A-GPS the computation effort is shared between the device and the A-GPS Server. According to a previous post, the device just downloads the ephemeris table so there isn't any actual "computation sharing", but rather a download of a pre-computed table download. Correct?

A: Yes, in this case. In others the server may do more work. For the neo, all the position information is computed in the neo.

Q: A-GPS involves additional data traffic and thus (potential) additional costs. Does it use a normal GSM/GPRS IP-based data transfer? does it use some out-of-band GSM/GPRS control messages? or does it get data from broadcasts in the local cell (e.g. GSM cell-broadcast)?

A: GPRS. so its up to you whether you want that extra traffic (and cost, unless you're flat) or not.

Q: if the answer to above is GPRS: is it possible to estimate in advance how much additional traffic (in Kbytes/day of full operation)?

A: The absolute worst case is 50 bits/s * 12.5 minutes = around 5Kbytes for the full almanac. However, this is certainly not needed every day. The errors in orbit prediction when you have a full almanac are quite small over the short term (a week). 5K once (or the GPS on for 12.5 minutes) then .5K/day should be quite adequate.

Q: Are there any known estimations on the overall (A)GPS performance on the Neo (esp. fix time)

A: The Hammerhead brief information page specifies 1s fix time for a position with 5m error.

Q: Coming to the Neo1973. In order to save costs, can the "Assisted" function in A-GPS be disabled through software API?

A: Yes, it can be disabled through preferences.

Q: Is it possible to tell whether A-GPS is actually in use or not?

A: Yes - either you have enabled it in preferences, or you haven't ;)

Q: Is it possible to tell/know which is the A-GPS server currently in use?

A: yes.

Q: Can choosing to use GPS (even with A-GPS disabled) enable others to track me? Is there a mode where this is not the case?

A: The receiver does not emit significant amounts of RF - unless you are literally within centimeters of the device, it's not possible to pick it up. The other alternative would be that the supplied plugin to gpsd is trojaned, and can be asked somehow to report on your position. The position is entirely computed in the plugin to gpsd, the GPS hardware cannot know it, it's too dumb.

Q: What is DGPS, can DGPS and A-GPS work together?

A: An overview of DGPS Differential GPS is basically a way of removing systematic per-satellite errors from various causes (satellite clock drift, atmospheric effects) for 'nearby' receivers, given one receiver that knows where it is.

The per-satellite range errors to a satellite are around 2-3 metres typically. These per-satellite errors are similar for users close to each other. These corrections are broadcast by radio in much of the USA (which the neo cannot pick up).

If you can download error information from a nearby source, then you can obtain positions that are much more accurate than without this information. Perhaps well under 1m radius of error, instead of 2 or 3. In some applications this may be of use.

It may be that the apgsd cannot do this, and it will require reverse engineering.

In any case, this would be another few hundred bytes a minute while this is active. (the error information rapidly ages).

Any stationary receiver - even a neo on charge, with a good signal, can produce useful error information. If it had a cheap internet connection at the same time, it could be constantly updating a global error model, for use by other neo owners.

It may be that the apgsd cannot do this, and it will require reverse engineering.

Q: I thought DGPS couldn't be done like this.

See for example http://gpsinformation.net/main/poordgps.htm A: This is quite different from simply looking at the relative offset of reference GPS device, and a known point, and then comparing. The difference is that the neo can help to derive (in combination with other stationary devices) a real-time model of the different sources of error. See the last comment on the article you refer to - the neo chip produces pseudorange output, it can be corrected in this same manner.

Q: Is an open-source GPS daemon able to be distributed by FIC?

A web copy of the ITAR - International Traffic in Arms Regulation legislation, currently in force in the US

While stupid, this defines


... GPS receiving equipment with any of the following characteristics: ...

  (2) Designed for producing navigation results above 60,000 feet altitude
      and at 1,000 knots velocity or greater;

as being a munition. This is right after the section prohibiting rockets that can be used to deorbit satellites on a specific target, and just before nuclear weapons design and test equipment.

And just because it's stupid doesn't mean they won't kick the doors in - or prevent it from sale and levy huge fines, after the gleefull lawyers at Apple point it out. (you need DOD licenses to import/export)

The plugin for the gpsd daemon presumably implements this limit.

Much established hardware has pretty much confirmed that it's OK to do it this way - as long as it's closed source, you can point at the evil hackers, and say that you never did it.

An open source plugin for gpsd distributed with the neo might raise other issues, namely that at some point in the code, there is a self-documented if(velocity>1000kt) test, which can be trivially commented out. (the hardware must be able to do this, the velocity of a satellite towards and away from the user greatly exceeds 1000 knots.)

If I was FIC, I would at the very least want a good legal opinion on if an open source gpsd plugin (perhaps a user contributed one after decoding the binary stream that the hammerhead puts out) can be safely distributed, before doing so.

--Morricone 11:15, 16 February 2007 (CET) You forget, that FIC is not located in the USA, so US laws do not apply.

Very true, however, this would mean that it could not be imported into the US. Also that anyone from FIC involved in this could not travel to the US without fear of arrest. The penalties are really quite high. --Speedevil 14:10, 16 February 2007 (CET)

Isn't this resriction implemented in the chipset? wouldn't the chipset itself be illegal in the US without these restrictions? --Kiney 22:20, 14 March 2007 (CET)

The chipset is too dumb. It does not know the position or the velocity. This is only computed in the host CPU. --Speedevil 06:17, 25 March 2007 (CEST)


However, there must be some code/license bypass to this. I'm not supporting license and restriction violation, but legal way to provide opensource gpsd. For example: 1) put gpsd in for example LGPL, then provide restriction module as a must, and put module

  under license that allows open source code, but doesn't allow changes that will
  break gps module usage restrictions - this way gpsd works, and all restrictions are
  preserved.

2) Put gspd into GPL with explicit restriction on code forks that change restriction. 3) Make an end-user license agreement that he will not use it above 60000ft, and 1000knots. 4) mixture of 1,2,3

When you get a gun, most probably there is no EULA that say, "do not shoot classmates, or any human, or a pet", and if you do, they won't punish gun manifacturer, nor seller. And if there is an EULA for a gun, than openmoko could have a same EULA.

When I buy GPS tracker, there is no limitation 'please do not dissasebmle gps IC, and if you do, do not fly above 60kft and faster than 1k knots, even if there is hard coded limitation inside firmware.

The same way as manifacturers of gsp devices are license bound to restricting usage of gps ICs in their products the same license could be transfered to end users.

If you can't solve restrictions, transfer it. --Milos 13:17, 27 July2007 (CEST)