[Update 6/7/17: The newest version of the M8N does not provide access to raw observations, so the M8T is now the lowest cost option available from u-blox that is still usable with RTKLIB. See this post for details.]
Selecting a GPS receiver
The first thing you will need to begin your journey into low-cost precision GPS is a 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 u-blox receivers because they seem to be the most available and lowest cost option out there. Also 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. There are three basic versions of the chip, the NEO-M8N, the NEO-M8T, and the NEO-M8P. The NEO-M8P uses u-blox’s own integerated RTK (real-time kinematics) solution and is significantly more expensive than the other two. I have not worked with this version and don’t know anything about it. Assuming you plan to use the RTKLIB open-source software to process the raw GPS signals, then you will want to choose between the M8T and the M8N.
The NEO-M8T is more capable and more expensive than the NEO-M8N. Unlike the M8N, it is specifically intended to be used for precision positioning and officially supports output of the raw signals. The current firmware supports the GPS and GLONASS satellite systems and newer firmware should be available soon to also support the Galileo system.
The best source for a M8T based receiver that I am aware of is from CSG Shop for $75. It has a USB interface which means it can easily be connected directly to a computer without any kind of adapter. It does not come with an antenna but CSG also sells a u-blox antenna for an additional $20. I have had good results with this antenna and would recommend it. Assuming you buy two units, one for a base and one for a rover, this setup will cost just over $200 with shipping. If you are looking for maximum performance and easy setup, and the $200 is within your budget, I would recommend this choice over the M8N. Here’s a photo of the receiver and antenna from CSG.
Another M8T-based option, if you are looking for a more integrated solution and willing to spend a little more is the Emlid Reach. This is a pair of M8T receivers combined with Intel Edison SBCs with wireless and bluetooth as well as higher quality Tallysman antennas for $570 for the pair. It uses RTKLIB for the GPS solutions but also includes an additional layer of code to make setup and use easier for the average user.
If you’d prefer a less expensive choice than the M8T and are willing to accept a few compromises then you should consider the M8N. The NEO-M8N chip 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. These commands are no longer available in the latest firmware (3.01). However most units shipping today still have the older 2.01 firmware and so still work. Also, the firmware can be downgraded from 3.01 to 2.01 if you did end up with a receiver with the newer firmware. [Update 6/7/17: This is no longer true if the M8N comes with ROM version 3.01] The older firmware does not support Galileo. Going forward, as that system becomes more capable, this will become a more significant disadvantage of the M8N receiver.
Performance-wise, the M8N and M8T are based on the same core and for the most part are very similar. There is one noticeable difference however in the way the M8N processes the GLONASS measurements. Without getting into too many of the details, the issue is that normally when using two identical receivers, the GLONASS satellites can be used to solve the integer ambiguities, but with the M8N this is generally not true because of some additional error terms. I have added a partial fix to my public branch of RTKLIB to calibrate out these errors after first fix. If you are using the standard 2.4.3 version of RTKLIB, though, you will not have this capability, and either way you will not have this for the initial acquisition which means it will take a little longer with the M8N to get a good fix.
Most of the inexpensive M8N receivers are intended for use in drones and use a UART interface rather a USB interface. This means you will need an FTDI type adapter to translate UART to USB and most likely will need to solder a few wires to get this hooked up. You will find many choices available online for $15 to $40 per receiver including shipping. These usually include an inexpensive, lower-performance antenna. You will have to add $5-$15 for the FTDI adapter. Still, you should be able to put together a pair of receivers fairly easily for under $75, less than half the cost of using the M8Ts. If you are willing to wait for parts from China, you could do it for less than $50 for the pair. Although not quite as capable as the M8Ts, if you are careful to collect good quality data and include a little more time for initial acquire, much of the time the results will be indistinguishable between the M8N and the M8T.
I have experience with three different M8N based receivers and have gotten good results with all three. The first was from CSG Shop and while a perfectly good receiver I would not recommend it because the price is only ten dollars less than the M8T so if you are going to go that route, get the M8T.
The second receiver I have used is intended for drones and is marked as a GY-GPSV3-NEOM8N. It is available from several suppliers, I bought it on Ebay for $25.78 including antenna and shipping.
The third type of receiver I have used is very similar but includes an on-board magnetometer. It is labeled as GY-GPSV5-NEOM8N and sells for about $5 more than the GY-GPSV3-NEOM8N and is also available from multiple sources. The magnetometer can be useful for collecting additional information about heading and orientation but I have not used it much yet.
Here’s a couple of other M8N receivers worth considering. I have ordered both of them but have not had time to evaluate them yet. For the very lowest cost and with an integrated receiver/antenna package, the unit on the left from ebay, shipped from China is $16.65 including shipping. The Reyax RY835AI unit on the right includes an accelerometer, gyroscope, and magnetometer with onboard antenna, all for $18.99 from Amazon Prime (thanks to Ken McGuire for this suggestion).
[Update 12/6/16: I have not tested the unit on the left yet but have verified the M8N module is counterfeit based on inconsistencies between the labels on this module and my other modules. Preliminary testing of the Reyax unit was disappointing for me with low satellite count and low SNRs. I suspect it may be because the antenna is passive unlike my other receivers that all have active antennas, but Ken has shown data with his receiver that looks much better so I’m not sure why the differences. He has extended the ground plane on his unit but that doesn’t usually have a large enough effect to explain the differences I see.]
In summary, I would recommend the M8T receiver with a u-blox antenna for someone that has a specific application in mind and is looking for maximum performance and ease of setup. However, the M8N with included antennas is how I got started and I still think it is a good choice for anyone that just wants to explore the capability of precision GPS without spending a lot of money. It could also be a good choice for someone planning on building multiple units for a more price-sensitive application and is willing to work within it’s constraints. Combining the M8N with a u-blox or other external antenna is another possibility that will put you somewhere in the middle for both capability and cost.