Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Connect the NEO-6M to an Arduino over UART: GPS TX goes to Arduino RX, GPS RX goes to Arduino TX, and both boards share ground. For an Arduino UNO Rev3, the example below uses SoftwareSerial for the GPS and the hardware USB serial connection for the Serial Monitor. Confirm your exact carrier board’s power and logic-level requirements before wiring; NEO-6M breakout boards are not all electrically identical.

What you need to check before wiring

The u-blox NEO-6 receiver supports UART and can output NMEA ASCII sentences, making UART the simplest interface for this tutorial. Its supported protocols also include u-blox UBX; if the module is configured for UBX rather than NMEA, a text-only monitor will not show ordinary readable NMEA sentences. See the u-blox NEO-6 Data Sheet.

  • Identify both boards. Check the Arduino model and the exact NEO-6M carrier or breakout model, including its pin labels and documentation.
  • Verify power and UART logic levels. The receiver module’s supply specification alone does not establish what voltage a carrier accepts at VCC or what voltage its UART pins tolerate. Check both boards before connecting power or signals.
  • Choose the serial pins for your Arduino. This walkthrough uses an Arduino UNO Rev3 with SoftwareSerial on digital pins 4 and 3. SoftwareSerial support and usable pins vary by board; do not assume this assignment works on every Arduino.

For one specific example, Waveshare’s UART GPS NEO-6M (B) documentation shows VCC connected as 3.3 V/5 V in its USB-to-TTL setup and gives its own wiring and serial defaults. Those details apply to that carrier and setup, not automatically to other NEO-6M boards. Consult the Waveshare UART GPS NEO-6M (B) documentation for that board.

Wire the NEO-6M to an Arduino UNO Rev3

UART transmit and receive lines cross: the GPS transmit output sends data into the Arduino receive input, and the Arduino transmit output sends data into the GPS receive input. Connect the carrier’s power pin only after verifying its allowed input voltage.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
GY-NEO6MV2 NEO-6M GPS Module for Arduino, STM32, Raspberry Pi, ESP32 2pcs
  • Accurate Positioning: Based on NEO-6MV2, supports GPS and GLONASS, supports simultaneous tracking of 22 satellites, tracking sensitivity -162dBm, cold-start sensitivity -148 dBm, positioning accuracy up to ±2.5m in open environments, stable positioning even in complex environments such as urban canyons or dense jungles
  • Low Power Consumption: Supporting 3.3V-5V power supply, the continuous operating current is 67mA, 11mA in standby mode, and 1mA during sleep, which ensures the positioning accuracy while controlling the energy consumption to the maximum, especially suitable for the scenarios that are sensitive to the endurance, and significantly reduces the cost of post maintenance
  • Hardware Interface: Standard UART-TTL level, support 3.3V/5V dual voltage compatibility, can be directly connected to Arduino, Raspberry Pi, ESP32 and other development boards; 4Pin interface ( VCC, GND, TX, RX), reserved hardware reset pin; baud rate support 4800bps~115200bps (default 9600bps), real-time switching through AT instructions or UBX commands, to adapt to different master performance
  • Plug and Play: Onboard EEPROM chip operates independently of the main control chip, saves configuration parameters after power failure, and automatically reads the parameters (baud rate, positioning mode, NMEA statement screening) from the EEPROM when the power is on, eliminating the need to repeat the initialisation, and realising Plug and Play
  • Widely Application: Widely used in vehicle monitoring, UAV navigation, handheld terminals and other scenarios that require high-precision positioning. You can also combine with Arduino, STM32, LoRa module, etc. to quickly build GPS tracker, weather station and other IoT applications
NEO-6M carrier pin Arduino UNO Rev3 connection Purpose
TXD / TX Digital pin 4 (SoftwareSerial RX) GPS output to Arduino input
RXD / RX Digital pin 3 (SoftwareSerial TX) Arduino output to GPS input
GND GND Shared electrical reference
VCC Only the supply documented for the exact carrier Power; do not infer compatibility from the receiver module alone

On the UNO Rev3, hardware UART uses pins 0 (RX) and 1 (TX), which are also used for USB serial communication. The example avoids using those pins for GPS so Serial remains available to the computer’s Serial Monitor. Arduino documents SoftwareSerial as an option for serial communication on digital pins; check your board’s documentation for support and pin constraints. See the Arduino UNO Rev3 documentation.

Check the raw serial stream first

Before parsing coordinates, verify that the Arduino receives readable data. The NEO-6 default boot configuration includes NMEA at 9600 baud, and Waveshare also documents 9600 baud with 8 data bits, no parity, and one stop bit for its carrier. These are starting settings, not a guarantee that a previously reconfigured module still uses them.

Rank #2
Sale
Deegoo-FPV NEO-6M GPS Modules with Antennas, 2-Pack
  • GT-U7 main module GPS module using the original UBLOX 7th generation chip, Software is compatible with NEO-6M. GT-U7 module, with high sensitivity, low power consumption, miniaturization, its extremely high tracking sensitivity greatly expanded its positioning of the coverage;
  • With a USB interface, you can directly use the phone data cable on the computer point of view positioning effect; With IPEX antenna interface, the default distribution of active antenna, can be quickly positioned;
  • USB directly connected to the computer, That is, with the host computer-owned serial port function, no need for external serial module, send IPX interface active antenna;
  • If you have any issue when using our product,or you need product use documentation, please contact us directly for assistance.we will reply your problem in 24 hours.We try our best to provide the most professional service for each customer.
  • USB directly connected to the computer, That is, with the host computer-owned serial port function, no need for external serial module, send IPX interface active antenna
  1. In the Arduino IDE, open a sketch and select the correct UNO Rev3 board and port.
  2. Upload this passthrough sketch:
#include <SoftwareSerial.h>

// SoftwareSerial arguments are (Arduino RX, Arduino TX).
// GPS TX connects to pin 4; GPS RX connects to pin 3.
SoftwareSerial gpsSerial(4, 3);

void setup() {
  Serial.begin(9600);       // USB serial to the computer
  gpsSerial.begin(9600);    // NEO-6M UART, using documented default as a start
}

void loop() {
  while (gpsSerial.available()) {
    Serial.write(gpsSerial.read());
  }
}
  1. Open the Serial Monitor and set it to 9600 baud. You should see NMEA sentences if the receiver is outputting NMEA at that rate and the wiring and logic levels are compatible.

Arduino’s Serial.begin() reference describes setting the baud rate and the default 8N1 frame format (8 data bits, no parity, one stop bit). If output is absent or unreadable, check the configured baud and protocol as well as wiring. The Arduino Serial.begin() reference explains the serial setting.

Parse position data and check for a valid fix

Raw NMEA confirms that bytes are arriving; it does not prove that the receiver has a position fix. NMEA sentences contain both position-related fields and status information. A usable location requires checking the fix or validity status as well as whether the data is current. A maintained GPS parsing library can turn the incoming sentences into fields such as latitude, longitude, and fix status, but verify the library’s current installation instructions and API before adapting code to it.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
HiLetgo GY-NEO6MV2 NEO-6M GPS Flight Controller Module 3V-5V with Super Strong Ceramic Antenna for Arduino EEPROM APM 2.5
  • Module with a ceramic antenna, superior signal
  • Save the configuration parameter data EEPROM Down
  • With data backup battery;With LED signal indicator
  • Default baud rate: 9600, Interface: RS232 TTL
  • Compatible with a variety of flight control module
  • Do not treat a received coordinate field by itself as proof of a current valid position.
  • Check the parser’s fix/validity indication and data age before using a location in your project.
  • Keep the serial monitor or another diagnostic output available while bringing up the parser, so you can distinguish a UART problem from a parsing problem.

Troubleshoot missing, garbled, or invalid data

No text appears

  • Confirm GPS TX is connected to the Arduino’s selected RX pin, GPS RX to the selected TX pin, and grounds are common.
  • Verify that the carrier is powered using a voltage it supports and that signal levels are compatible with the Arduino.
  • Confirm the sketch’s GPS baud rate matches the receiver configuration; begin with 9600 baud and 8N1 for the documented defaults.
  • Check whether the receiver is configured to output NMEA rather than UBX.
  • Confirm SoftwareSerial is supported on the selected Arduino and pins.

Text is garbled

A baud-rate mismatch is a likely cause. Check the receiver’s configured rate and the rate passed to gpsSerial.begin(); also confirm the monitor is set to the USB-side rate passed to Serial.begin().

NMEA arrives but the position is invalid

This is different from a UART failure. Reception and positioning are separate: try a location near a window or outdoors with a clearer view of the sky, allow the receiver time to acquire a position, and continue checking the NMEA fix/status fields rather than assuming incoming sentences mean a fix exists. Waveshare gives similar reception guidance for its NEO-6M (B) carrier.

Rank #4
hiBCTR 2-Pack GY-NEO6MV2 NEO-6M GPS Module, Ceramic Antenna
  • Module Feature: With ceramic antenna, excellent signal.
  • Data Storage: Saves configuration parameter data in EEPROM Down.
  • Battery: Comes with data backup battery and LED signal indicator.
  • Interface: Default baud rate is 9600, interface is RS232 TTL.
  • Compatibility: Compatible with various flight control modules.NOTE: Ideal for Arduino, ESP32, and DIY IoT projects. NOT recommended for high-speed FPV racing drones due to the 1Hz default refresh rate.Provide dedicated configuration guidelines and sample codes. If you need these digital resources, please contact us via Amazon messaging to obtain immediate technical support.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Is a NEO-6M suitable for a new project?

u-blox describes the NEO-6 series as an older-generation product and marks NEO-6M as end-of-life; its product page points new designs toward NEO-M9N. That lifecycle notice is relevant when choosing hardware for a new design, but it does not establish a direct performance comparison between NEO-6M and NEO-M9N. Compare the exact carrier’s power and logic compatibility, interfaces, antenna arrangement, footprint, and your project’s requirements before selecting a replacement. See the u-blox NEO-6 series product page.

Quick Recap

Bestseller No. 3
HiLetgo GY-NEO6MV2 NEO-6M GPS Flight Controller Module 3V-5V with Super Strong Ceramic Antenna for Arduino EEPROM APM 2.5
HiLetgo GY-NEO6MV2 NEO-6M GPS Flight Controller Module 3V-5V with Super Strong Ceramic Antenna for Arduino EEPROM APM 2.5
Module with a ceramic antenna, superior signal; Save the configuration parameter data EEPROM Down
$8.99
Bestseller No. 4
hiBCTR 2-Pack GY-NEO6MV2 NEO-6M GPS Module, Ceramic Antenna
hiBCTR 2-Pack GY-NEO6MV2 NEO-6M GPS Module, Ceramic Antenna
Module Feature: With ceramic antenna, excellent signal.; Data Storage: Saves configuration parameter data in EEPROM Down.
$10.97
Best Value
Sale
GPS Module Receiver,Navigation Satellite Positioning NEO-6M (Arduino GPS, Drone Microcontroller, GPS Receiver) Compatible with 51 Microcontroller STM32 Arduino UNO R3 with Antenna High Sensitivity
  • With a USB interface, you can directly use the phone data cable on the computer point of view positioning effect; With IPEX antenna interface, the default distribution of active antenna, can be quickly positioned;
  • GT-U7 main module GPS module using the original UBLOX 7th generation chip, Software is compatible with NEO-6M. GT-U7 module, with high sensitivity, low power consumption, miniaturization, its extremely high tracking sensitivity greatly expanded its positioning of the coverage;
  • USB directly connected to the computer, That is, with the host computer-owned serial port function, no need for external serial module, send IPX interface active antenna;
  • If you have any issue when using our product,or you need product use documentation, please contact us directly for assistance.we will reply your problem in 24 hours.We try our best to provide the most professional service for each customer.
  • How to use the GPS module better, the link is obtained in the Product guides and documents, please download it before use

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.