This is a continuation from Part 1.
As of writing this I already had complete solution (as far as getting tracking data is concerned), a multi-process TCP server with a mysql database back-end.
The server code itself is not pretty thus I am cautious about sharing it at this stage (I will “open-source” it once I cleaned it up).
One caveat: my solution does not support batch mode (where the payload contain multiple concatenated location and other packets).
The assumption is that the reader is somewhat familiar with python and sockets.
As an experiment I bought a relatively cheap GPS tracker that supported 3G (most of them at the time were 2G only).
After quick google search I found a suitable model GT06E from Concox.
The idea was I would implement my own server, as I do not trust 3rd party GPS tracking services (who would?), especially free ones ;).
I did not realise at the time what a mess the protocol is.
The “engineers” who wrote the spec for the protocol are crazy! They reinvented the wheel, which instead of tyre utilizes boots.