Adding location awareness with GPS technology

C3 | Thu 24 Jan | 2:25 p.m.–3:10 p.m.

Presented by

  • Mike 'Hamster' Field

    Mike Field is a long-term programmer, a system administrator, a Linux enthusiast and an electronics hobbyist. Having first used Linux and the Internet in the mid 1990s he seen them both grow from a into the mature offering they are today, where they are ubiquitous and underpin our online world. Having hung up his commercial programming hat a long while ago, Mike now works as a systems engineer specializing in virtualization and storage for a Christchurch IT provider, using his hobbies to satisfy his need for a technical outlet. As well as administering and supporting Linux and other Linux-like systems in the commercial setting, Mike loves experimenting with technology at its lowest levels. He is moving from an long term love affair with FPGAs and Programmable Hardware to experimenting with Software Defined Radio and DSP audio technology. Recent projects include writing the first Open Source 4k DisplayPort implementation for FPGAs, numerous HDMI projects (also for FPGAs), a software GPS decoder for raw Radio Frequency data, and a version of BASIC for the Arduino micro-controller (a derivative of which has been implemented in the silicon of the Espressif Systems ESP32, an IoT micro-controller). Mike is also a keen mountain biker, and is happy to take out-of-towners to the local bike park.


Positioning technology is now ubiquitous. This technology was originally restricted to the military and commercial transport, it is now being built into everyday products such as cars, cell phones and watches. A brief overview of the three GPS segments will be introduced - Control Segment, Space Segment, User Segment, detailing how each of these cooperate to provide the user's location in both space and time. Methods will be covered that allow the receiver to acquire the civilian Coarse/Acquisition (C/A) satellite signal, track the signal until a solid lock is obtained, allowing the reception and decoding the down-link navigation data. A demonstration of technique will be performed by decoding previously acquired Radio-Frequency data. This is a level of detail usually hidden from the everyday GPS user and not normally seen, and will illustrate such concepts as the difference between a cold and warm start, the almanac, time to first fix and number of active channels. Inexpensively GPS hardware receivers are available from many suppliers, including hobby stores like Jaycar, commercial suppliers, and internet retailers such as Ali Express. As with all areas of technology, GPS receivers have their own jagon - understanding these is important selecting an appropriate module for a project. A few different inexpensive GPS hardware modules will be reviewed and a Raspberry Pi Zero running Linux will illustrate the low cost and accessibility of the hardware. To communicate with a GPS module the lingua franca of positioning systems is NMEA 0183 sentences, a standard developed by the National Marine Electronics Association. The NMEA data stream will be explained - how to parse them, how to detect data errors, what sorts of information it can provide. The efficient and correct processing of location data is important, and a few techniques will be covered that can be used to handle different use-cases. A brief overview of the Latitude, Longitude, Altitude (LLA) and Earth Centered, Earth Fixed (ECEF) coordinate systems will be provided, and followed with examples of how you can compute using GPS data and either a 'flat earth', spherical or WGS 84 ellipsoid model. Although GPS is a receive-only system it is not without security issues. Various attacks are possible, including shielding, jamming, spoofing, denial of service, hardware interception and (perhaps most interestingly) attacks against GPS receiver firmware. Other issues arise from the wider problem of securing access to GPS information in cloud-based services, and examples of what unexpected information may be revealed. Linux Australia: YouTube: