Friday, March 1, 2013

Android's UTC vs GPS Clock Error

Official Blog: Time, technology and leaping seconds

Google's Site Reliability Team blogged back in 2011 that "Having accurate time is critical to everything we do at Google."  This is an interesting statement, in light of the known issue with Android (i.e. Google) having a known clock error which equates to the difference between GPS Time and UTC Time. 

First reported back in 2009, the Android clock error is the result of the device's date/time being locked to the GPS time signals, but as I discovered and reported in 2010 the GPS driver fails to apply the time correction.  As of this writing the error is on the order of 15 seconds, and will increase over time.  The reason that GPS and UTC time differ is due to various factors, but the largest is that the two time systems are increasingly divergent due to "leap seconds" which are small corrections applied every couple of years to UTC time which attempt to keep the UTC year aligned with the "Solar year". 

You might argue that 15 seconds is not an issue, and for the majority of users this is true.  However for scientists, some professionals, and even amateur radio operators the error can cause huge problems.  In the amateur radio world we use smartphones to track the location of satellites and the International Space Station.  Depending on their orbit, most sats are visible in the sky for at most 15 minutes.  So the error in time means that an antenna pointed at the satellite will be incorrect by at least 3 degrees, possibly more. 

The thread on Android Google Code about this issue has grown quite long over the years.  I asked for users to report if their devices had the bug; over the years every post has been a "yes" with the one exception being a Nexus 4 running Android 4.2.1.  A response from the Android team has never been posted.  It would seem that "Having accurate time is critical to everything we do at Google" is a bit of a stretch - because clearly it's not even worth talking about when the inaccuracy is on Android.

Update: I picked up a Nexus 7 running Android 4.2.2 and find that the time issue is resolved!  So to be fair, the issue existed for a long time but "Jelly Bean" seems to have resolved the issue.