# How to detect potentially poor antenna placement from GPS data?

Below is data from a 6.5 hour run collecting NMEA sentences from a u-BLOX NEO-6 GPS module (datasheet, protocol spec) with an active external antenna via Raspberry Pi.

This is my first analysis to see if there is any way to detect poor antenna placement from the data, and flag a user if so. Here the antenna was placed very poorly, almost a worst-case situation with narrow sky view and strong reflections from between a pair of metal walls.

Every 30 seconds I collected 3 seconds of serial data, parsed $GNGGA sentences for lat, lon, alt, HDOP, and n_sats, and $GPGSV for C/No (dBHz) and alt/az of satellites used for solutions (alt/az not analyzed yet). If I understand correctly the presence of an SNR value for a given satellite in a given sentence (rather than a blank) indicates the satellite was used for a recent solution.

For GPS coordinates, each dot in the first plot represents results from one sentence, since multiple sentence appeared in the 3 second sample window, I've just plotted all of them as a first-pass analysis.

Question: What strategies might I try myself for a "poor reception" scheme? Examples might be:

If it's necessary, I can calculate the positions of the satellites independently, but it seems that should simply agree with the ephemeris data in the module and $GPGSV sentences. note 1: I'm not asking about reporting an accuracy, that's addressed in the following question. note 2: E-W and N-S coordinates are relative to median value of all data, Alt is absolute. ## 1 Answer Here is one strategy based only on reported "signal strength" as carrier to noise ratio (C/No), but it would not address the problem of trying to infer if there were strong reflections present. As I've learned by researching this question, one recommended method is to look at the C/No values, reported in units called dBHz mentioned in Section 7.4 of u-BLOX's Application Note RF Design Considerations for u-blox GPS Receivers 7.4 Sensitivity test Check the C/No values in the$GPGSV or the UBX-NAV-SVINFO messages. Under open sky a good design should reach up to 50 dBHz for the strongest signals. If it reaches 45dBHz it can still be acceptable but the source of the reduction should be investigated (e.g. small antenna, ...).

Designs with maximal signal strengths below 40dBHz usually provide degraded performance (long TTFF times, lower coverage, accuracy, dynamic).

This document also gives a discussion of the parameter and the impact of low values on the GPS results.

5. Signal Loss and C/No

In recent years, clever techniques have been developed to extract tiny GNSS signals from the background noise. But, the fundamental limitation to what can be achieved is limited by the ratio of the gain of the antenna element to the total receiver noise, referred to the input, or “G/T”. This is an absolute indicator primarily of antenna-plus-front-end performance, and determines the ultimate value of C/No for a given signal level. C/No is the ratio of carrier power to the noise power mixed with the signal, in a 1Hz bandwidth. This ultimately defines a limit for the GPS receiver sensitivity. So, simply put, antenna gain should be maximized (the “G”), and LNA noise figure minimized (“1/T”); a complicated way to state the obvious.

If the C/No ratio is diminished by any cause, be it bandwidth limitations or increased LNA noise figure, GNSS sensitivity will be reduced by the same amount. Once impaired, there is no way to recover C/No for a given receiver. Even additional gain does nothing because C and No are amplified equally, and so is to no avail.

NEP is in units of power per square-root frequency, so for example the noise power in a bandwidth of say 10 MHz would be 35 dB relative to the power in 1 Hz. If the signal in that bandwidth has a power similar to that of the carrier, then you might want a C/No of order 35 or 40 dB, as the documents above mention.

The data shows that most of the time, most of the satellites used in a given solution had C/No values way below the 45 to 50 dB recommended above and so at least something about the antenna or feed situation is sub-optimal. Since the OP mentions the antenna placement is deliberately poor for this run, these results are consistent.