# What equipment and software do I need to read raw civilian GPS signals on my Mac?

• Hi and welcome! The connection between GPS and Amateur Radio is a little weak so your question might end up on a different Stack Exchange site (say EE). Have you done any research into GPS receivers? They are plentiful in the hobbyist market. – mike65535 Mar 7 '19 at 13:19

I will answer this question from a "technology of radio" perspective, because half of the question is very much related to the technology of radio. The other half is related to the decoding of a data stream from multiple GPS satellites, and that is beyond the scope of this site.

In order to receive the data from the GPS satellites, your best bet would be to have an outdoor antenna at a good height (to be able to see as much of the horizon as possible), tuned to the frequencies on which the GPS satellites transmit.

According to the Wikipedia page on GPS signals, there are two frequencies: the so-called L1 frequency is 1575.42MHz, and the L2 frequency is 1227.60MHz. Your antenna would need to be able to receive both of these frequencies. Either a discount antenna designed for use up to 1.6GHz, or an actual GPS external antenna, would do nicely for this.

Actually decoding and turning the received radio signals into data is something that is beyond the scope of this site (being specifically for "amateur radio" in the strictest sense), but in order to turn the received signals at radio frequencies (RF) into data that you can work on on your computer, your best bet would probably be an SDR receiver (these can be found very cheaply - search for RTL SDR for plenty of information) and some SDR software (perhaps GNU Radio or similar). Once you have turned the RF into a data stream, you can then work on decoding it in software.

• There's GNSS-SDR, which was based on GNU Radio years ago and is a very capable software to do exactly what is described. You need that software (which is easiest to install under Linux), some SDR, and typically an active antenna (which is an antenna with a built-in amplifier), the rectangular GPS antennas you might have seen. To feed that active Antenna with power, you'll need a Bias-Tee, too. – Marcus Müller Mar 7 '19 at 13:05
• The RTL-SDR blog has a nice overview and tutorial covering basic equipment/concepts and using GNSS-SDR: rtl-sdr.com/rtl-sdr-tutorial-gps-decoding-plotting – natevw - AF7TB Mar 7 '19 at 20:38

Start with a GPS receiver that outputs NMEA data. This data will be made available through a serial connection such as RS-232, USB, or Bluetooth. Pick a serial connection that you can use with your MAC.

On the MAC you will need a serial terminal emulation program (not to be confused with the MAC terminal program). A program such as Serial would do the job.

Configure the Serial program to access the port to which the GPS receiver is connected. You will then begin to see the raw NMEA data from the GPS receiver in your Serial program. All sentences begin with a "$" sign and all fields are comma separated. Here is an example from the above link:$GPGGA,181908.00,3404.7041778,N,07044.3966270,W,4,13,1.00,495.144,M,29.200,M,0.10,0000 *40

This information in this string can be broken down as follows (again taken from the earlier link):

GP represent that it is a GPS position (GL would denote GLONASS).

181908.00 is the time stamp: UTC time in hours, minutes and seconds.

3404.7041778 is the latitude in the DDMM.MMMMM format. Decimal places are variable.

N denotes north latitude.

07044.3966270 is the longitude in the DDDMM.MMMMM format. Decimal places are variable.

W denotes west longitude.

4 denotes the Quality Indicator:

13 denotes number of satellites used in the coordinate.

1.0 denotes the HDOP (horizontal dilution of precision).

495.144 denotes altitude of the antenna.

M denotes units of altitude (eg. Meters or Feet)

29.200 denotes the geoidal separation (subtract this from the altitude of the antenna to arrive at the Height Above Ellipsoid (HAE).

M denotes the units used by the geoidal separation.

1.0 denotes the age of the correction (if any).

0000 denotes the correction station ID (if any).

*40 denotes the checksum.

• This is also a great answer depending on what the OP is after. To go deeper in this route, I'd recommend learning about RTK afterwards since it's a pretty cool technique based on the underlying signaling but with pre-built hardware support also available. SparkFun have an article learn.sparkfun.com/tutorials/what-is-gps-rtk/all and NavSpark offer some even cheaper hardware for it. – natevw - AF7TB Mar 7 '19 at 20:42
• The problem here is that this answer is talking about how to provide processed GPS data, where the question was asking for raw GPS data. – Scott Earle Mar 8 '19 at 7:45
• @ScottEarle You may be right but given the sophistication and depth of the question, I thought this might be an appropriate path. – Glenn W9IQ Mar 8 '19 at 10:23
• @GlennW9IQ fair comment :) – Scott Earle Mar 8 '19 at 10:54