The best position for GPS satellite reception is likely on the roof of a vehicle. Inadequate GPS reception has long been a problem in the transportation industry. There are apparently inexpensive, ready-made solutions for trucks and ships, featuring an active external antenna and a simple coupling coil inside the vehicle. This is particularly relevant for simple GPS receivers like smartphones, which lack a hardware connection for an external GPS antenna. Does anyone have experience with this and can share their insights?
Modern smartphones doesn’t have any issues with GPS, they are also using all the other providers (Galileo, GLONASS, Beidoe), therefore there is always at least 30 accurate points to use (normally I have 40+ satellites).
When I switch on my Gopro, I now hold it vertical. I think it finds it GPS quicker. Am I right, or is it just a feeling ?
Not real answer to your question but some thoughts.
Last summer, I was surprised to see that the F9P (GNSS cheap for differential positioning with centimetre accuracy i.e. RTK) was giving me accuracy of 20-30 cm without differential correction. I also discovered that my two Samsung phones (J7@2016 and J6@2019) both supported GPS+Glonass+Beidou (but not Galileo). So, I ran a test to find out for sure. In a mountain car park, I took GNSS measurements in parallel. I installed two UBLOX antennas at the front and rear of the car roof. Between the two, I evenly distributed the two phones and my Garmin Etrex 30 (GPS+Glonass). For the F9P, I only had one recorder. I did one hour without correction and then two minutes with correction to obtain the centimetre position. Then I moved it to the rear. Again, one hour without correction and then the differential to obtain the precise coordinates. For mobile phones, recording of GPS coordinates is done with OSMTracker.
Red: points with differential correction. Purple: both phones. Cyan: the F9P without correction.
Phones have very few points… because the coordinates do not change. The points overlap. Above all, it is completely off by several metres, whereas phones displayed errors of 1 to 2 metres (for around twenty satellites).
At the front, I set the F9P to dynamic=static. It displayed uncertainties of 30 cm. It’s fairly grouped… but offset. At the bottom, I set it to dynamic=automotive. Uncertainties around 15 cm. In practice, it’s more dispersed but closer to the target.
Adding the Garmin in yellow.
The Garmin was positioned three-quarters of the way down. It is quite scattered but seems fairly centred. In general, it does not give a better indication than 2 m. A quantitative analysis shows that the Garmin is 1.3 m from the expected position, with a standard deviation of 2.5 m.
So the Garmin is not only not so bad and way better than smartphones.
I also made comparison between RTK and GoPro Max internal GPS (GoPro vertically hold). On the roof of the car with open view while driving on highways, average error was 1.7 m. In opposite, still vertical on the handlebars of the mountain bike, in the forest, GoPro Max GPS is just unusable with hundreds of meters of error.
I started out in Mapillary with a GoPro Hero 8, but the GPX dropouts drove me to despair. I then tried to develop a tracking solution using the OBD Fusion app and an OBD2 Bluetooth adapter. This app records routes that also follow tunnel geometry. However, back then I couldn’t get the GPX track and video to synchronize. When I stopped at a traffic light, the GPX track would drift out of sync with the video. I then switched to an Insta360 X3 and an InstaGPX Remote, abandoning the idea of ​​integrating vehicle OBD data. In any case, there’s a huge market for ready-made vehicle tracking solutions. A lot of money flows into it because it’s about accurate expense reports. Perhaps it makes sense again today to include vehicle data alongside the best possible satellite reception. The OBD2 standard is just waiting to be used.
You can have a look at what I did to try to synchronise GoPro Max pictures with RTK track (here in French). Overall:
- GoPro Max internal time is not synchronised to GPS time
- Internal time is drifting versus GPS time. Drift is not constant and seems to be temperature dependant
- Picture acquisition rate is not synchronised to internal time nor to GPS time
- Timestamp, both internal and GPS ones, are rounded to second.
- GPS coordinates are recorded at the end of picture processing i.e. for a 360° picture, around 1.35 s too late.
Overall, with GoPro Max 2, internal time is synchronised with GPS time, timestamps now include millisecond and seems to be recorded at picture acquisition time, not at the end of processing.
Concerning OBD, I tried to get the speed from the car and to send it the IMU of the u-blox F9R chip. Right now, I’m able to get the speed from a proprietary key. I need to send it to F9R.
Overall, getting position from the car would also be interesting. The car should merge data from GPS, wheel tick (all wheels are equipped with wheel tick to manage ABS) and an IMU (or difference between left and right wheels speed). It should be quite accurate. The difficult point is to retrieve such coordinates that should be in proprietary keys that are manufacturers dependent.
Ultimately it’s down to antenna size. Cost effective is a wide range. Some cheap external gps receiver (eg Dual) can be cost effective
+1, the size matter. Antenna size (or, at least, of its electrical ground plane) should be of similar or higher size of the wavelength i.e. larger than 10 cm.
In my former message, I didn’t explained results with F9P. So, it’s a dual frequency all GNSS constellation. It was used with the ublox magnetic antenna glued on the roof of the car acting as a ground plan. With dynamic=automotive, average position (1 hour test) was 20 cm away from true position with dispersion (sigma) of 30 cm.
Indeed, I would not qualify the F9P as a cost effective solution. Nowadays LG290P should be much more cost efficient. It’s a triple frequency receiver and starting supporting Galileo HAS corrections. 20 cm seems to be reachable in standalone.

