As has been noted previously, the clocks on some Android devices have an annoying habit of drifting significantly.
I was pleasantly surprised then to discover that the new HTC Sensation does keep very good time, even without NITZ being broadcast by my operator’s mobile network.
So how and why are they doing this? Is there another motive behind this seemingly altruistic feature addition?
A bit of investigation reveals that when you enable ‘Automatic: use network-provided values’ in the Date & time settings the device makes a connection to one of a list of public NIST time servers and then updates its own time using the ancient Daytime Protocol.
All good so far, well done HTC.
A bit more playing with the clock revealed something else intriguing going on when the clock is manually altered. The device makes a separate HTTP connection to primary.sdstime.sdgtl.net. Now who are they?
The HTTP request contains a client-generated nonce value along with the user-agent com.sdgtl.sectime - which also includes the device model number details and a ‘fingerprint’ value.
The response from the remote server is a XML getTimeResponse payload which contains the current Unix Epoch time and a digital signature.
So why does the device need this and why are HTC so concerned that you are manually changing the clock? My guess is that this is is being triggered by an embedded DRM service, perhaps related to Saffron Digital’s video service.