Configuring the GPS receiver

At this point, the GPS receiver is connected to your PC through the USB port and is ready to configure and verify that all is working OK.

Ublox provides a nice evaluation software package for Windows called u-center that makes this very easy.  You can download it for free from here.  It makes it easy to explore all the configuration options for your receiver and make sure everything is working properly before we move to RTKLIB.

After you have downloaded the program and started it up, use the “Port” option in the “Receiver” tab to select the USB port that the receiver is connected to.  It will probably be the only option, and in my case it is “COM3”.

[Update 11/27/16:  If you don’t see your receivers listed in the Port menu it is probably related to some recent windows driver changes from COM ports to location sensors.  See this post for details]

You should see the connection status box at the bottom of the window go to green and list the baud rate that the receiver is configured for, probably 9600 baud if you haven’t changed it.  If everything is working properly, you should now be able to click on the various display icons and see sky positions, signal strengths, status, etc for all the satellites the receiver is tracking.

To configure the receiver, select the “Configuration View” from the View menu.   All of the receiver configuration options for this receiver will appear in the menu and you can read what the currently is set to with the “Poll” button or change the configuration by changing the settings and hitting “Send”.  For details on what all these settings mean, see the Neo-M8 Receiver Description.

I recommend first increasing the baud rate to something faster than the 9600 default.  I found 115200 worked fine with my setup.  To do this, select “PRT” from the “Configure” window and set the “Baudrate” field to 115200, then  select the “Send” button at the bottom of the page.  You may need to re-select the port to let the eval software match its baudrate to the receiver.





Next, select the “Messages View” from the “View” tab.  From here, you can see which NMEA messages are enabled and being output by the receiver.  The enabled messages are displayed in bold.  You may want to disable all of them to reduce unnecessary information from being continuously transferred over the serial port.  We will be using Ublox specific binary messages for RTKLIB so do not need any of the NMEA messages enabled.  Be aware, though, that the eval software is using these messages, so if you disable them, the display windows will stop updating.  To enable or disable a message, right click on it and select the appropriate action.

Once you have the receiver configured properly, you will want to save the settings to the on-board flash.  Do this from the “CFG” menu item on the “Configuration View” by selecting “Save current configuration” and then the “Send” button.

We still need to enable the raw receiver outputs for pseudorange and carrier phase, but since they require using unsupported commands, we will do that from RTKLIB.


Connecting the GPS receiver to a PC

My long term goal is to connect the GPS receivers to battery powered low cost single board computers, probably Raspberry Pi, to make them stand-alone.  For now, though, I am connecting them to my Windows laptop for simplicity.  The Ublox receiver board interface is a UART which can be directly connected to the Raspberry PI, but to connect to the PC we need to first convert the UART signals to USB.  I am using a USB to UART converter board from Sparkfun.  There are many similar boards available, I use this one because Sparkfun happens to be a few miles from my house.  If I place an order in the morning, I can pick it up in the afternoon, which is very convenient (and avoids any shipping charges).

SparkFun FTDI Basic Breakout - 5V
USB to UART converter board from Sparkfun


SparkFun FTDI Basic Breakout - 5V
Back of board











USB to UART converter board connected to GPS receiver (and antenna)



To connect the two boards requires four wires.

RX -> TX
TX -> RX

You can’t see in the photo, but I soldered the connecting wires directly to the receiver board and the other ends to a four pin header which I then plugged into the connector on the back of the UART converter board (see connector in the photo above).

The board can now be connected to the PC with a USB cable, making sure you have the right connector for the UART board you are using, in this case, a mini-USB connector for the Sparkfun board.

Note on voltage levels:  USB/UART converter boards come in various combinations of 3.3V and 5V levels for Vcc and I/O.  Make sure you pay attention to the voltage levels when you select a converter board or cable.  The Vcc input on the GPS board is fed into a voltage regulator so Vcc can be either 3.3V or 5V.  RX and TX, however, are connected directly to the M8N chip and must be 3.3V.

I originally used a 5V version of the Sparkfun board and it worked fine for months but eventually I was not able to transmit commands to the receiver any more although everything else seemed to work fine.


In the next post, I will cover using the Ublox eval software to talk to and configure the receiver before we start using RTKLIB.

Selecting a GPS receiver

[Update 11/25/16:  See here for a more recent version of this post]

The first thing you will need is a GPS receiver that provides access to the raw GPS position signals;  pseudorange and carrier phase.  There are  only a few low cost GPS chips that provide these signals.  I chose the Ublox receivers because they seem to be the most available and lowest cost option out there, and I was able to find examples of other people successfully using them with RTKLIB, including Tomoji Takasu, the author of RTKLIB (see here).  The NEO-M8 series is the latest generation from Ublox.  The NEO-M8N chip from this family does not officially support output of the raw GPS signals but can be configured to do so with undocumented and unsupported commands over the serial port.

I started with two receivers, the first from CSG.  This is the receiver used by Tomoji in his work in the link above.  It is available for $65.99 + $19.99 for an antenna.  With shipping this came to $92.98.  I do not intend to use this receiver in my final project but bought it for comparison to the lower priced options described below.

UBLOX NEO-M8N GPS GNSS receiver board with SMA for UAV, RobotsHigh performance active GPS antenna

The second receiver is marked as a GY-GPSV3-NEOM8N. It is also use an M8N receiver and is designed for use on drones.  It is available from several suppliers, I bought it on Ebay for $25.78 including antenna and shipping.  This board came with a battery for storing the GPS configuration when the board is powered down.  The CSG board included a battery holder but not a battery.

There is also a version available with an on-board magnetometer (GY-GPSV5-NEOM8N) for an additional $5.  I have bought one of these but have not yet had a chance to test it.  I intend to use these receivers from Ebay with their included antennas for my project given their very low cost.

Both receivers have given me good results with RTKLIB that appear to be quite similar, but I hope to do a more detailed comparison in the future.


Update: 5/18/16

For those of you trying to get the best results you can today for a reasonably low price, the ultra-low cost options I have chosen are probably not your best choice.  I’ve cut and paste below some comments from JB that he made on a more recent post.  He makes a good argument for buying the Ublox NEOM8T instead of the NEOM8N, and also suggests spending a little more on the antennas.  I would agree with almost everything he says and am in fact considering switching to the M8T myself at some point.

From JB 5/16/16:

Very impressive work. Thanks for sharing.

I know you are focusing on the cheapest possible equipment (~$30 for receiver and antenna), but if that can be increased to $100 or $150 the capability improves quite a bit and we are still well below the cost of the least expensive dual frequency receivers. If this is too high a price for your project perhaps it may not be for others.

Improving the antenna is often mentioned and those on your typical $30 combo are pretty bad. Even a $10-$15 one like those supplied with the Ublox evaluation kit will help a lot. A $40 or $80 Tallysman will help a bit more. A $1000 NovAtel Pinwheel will be even better, but we’ve completely left the low cost realm. I would really suggest upgrading the couple dollar patch antenna typical of the cheapest equipment.

The other thing to improve of course is the receiver. Starting at several hundred dollars you can get a better performing one than the Ublox, but this is getting expensive. For ~$80 a Ublox M8T receiver can be obtained. This has a major advantage over the M8N as signals from GPS, Glonass, Galileo, and SBAS can all be used for fixed integer work with RTKLIB. With the M8N only GPS can be used.

As a simple example to show the benefits of lots of satellites for fixing the integers I recorded 90 minutes
of static data with two M8Ts attached to Tallysman antennas on a roof of a vehicle under ideal receiving conditions. They were set to record GPS, Glonass, Galileo, and SBAS data at a 1 Hz rate. I then ran the data through RTKPOST chopping it up into 30 three minute segments and attempted to fix the integers in Kinematic mode with a ratio of 3.

First, using only GPS sats (6-8) a fixed integer solution was obtained (within 3 minutes) in 20 of the 30 trials. One of these was incorrect. The average time to a fix for those that did was 59 seconds.

Then the Glonass sats were added (13-15 total sats) and a correct fixed integer solution was obtained every time. On average it took 10 seconds.

Then Galileo and SBAS sats were added (20-22 total) and a correct fix was obtained every time with an average of 1 second to get there.

Of course this data is correlated and real world kinematic performance won’t be as good, but the idea is to show the relative improvement that large numbers of satellites can make.

From JB 5/17/16:

My comments were really more for those who want to try low cost RTK with RTKLIB the way it is now. There are people relatively new to this watching your site and we agree that if they can afford it the M8T route would be the way to go.

I do think you can get more out of an M8N with some software mods (which you are doing), but since Ublox doesn’t support raw data from it – and they’ve already changed things as to enabling raw data with their latest firmware – the M8N seems to be at a dead end for high accuracy work. As you mentioned though, for your purposes it has value.

Of course I haven’t tried every cheap patch antenna out there, but in general you get what you pay for. Under really good conditions I’ve done kinematic work with a $5 antenna, but a $40 one will be a bit more robust. For one of my M8N’s I got a good deal on a Tallysman 1421 antenna ($29) to replace the stock patch and some before and after tests near a pond and metal sided building (multipath) showed substantial improvement. When doing kinematic work, especially RTK, every little advantage helps.

When I added SBAS sats in the test I mentioned that was just the pseudorange and carrier data. I don’t think RTKLIB will use any other SBAS info when differencing. Again, just showing that more sats are better.