GPS Module with Internal & External Antenna (NEO-M8N)
See Projects


GPS is build with NEO-M8N, u-blox M8 concurrent GNSS modules and come with an active Antenna.

The NEO-M8 series provides high sensitivity and minimal acquisition times while maintaining low system power.

The NEO-M8N integrates a 72-channel u-blox M8 GNSS engine that supports multiple GNSS systems ( Beidou, Galileo, GLONASS, GPS / QZSS ) and able to receive 3 GNSS systems simultaneously.


The series communicate protocol between M5Core and GPS is UART, physically connected via UART2 (GPIO16, GPIO17)

If you want to Change the uart baudrate,please check here ( u-center-just-for-Windows )

*Notice: GPS signal can only be found outdoors

Product Features

  • Operating voltage: 2.7 ~ 3.6
  • Operating temperature: -40 ~ 80 °C
  • Antenna type: built-in ceramic antenna and external antenna
  • external Antenna port: SMA
  • Can receive data from 3 GNSS systems concurrently
  • Horizontal position accuracy: minimum 2.5m
  • GPS module (NEO-M8N) Built-in Flash, so that you can upgrade firmware via u-center-just-for-Windows
  • Supported protocols: NMEA, UBX, RTCM
  • Industry leading -167dBm sensitivity
  • Backward compatibility with NEO‐7 and NEO‐6 series

Kit includes

  • 1x GPS Module
  • 1x external Antenna(cable length : 1 meter)


  • GPS-based logistics tracking management
  • Driverless car positioning




Arduino IDE

To the complete code GPSRaw.ino, please click here.

**Note: The GPS module needs placed outdoors to be able to receive GPS signal **

#include <M5Stack.h>

/* By default, GPS is connected with M5Core through UART2 */
HardwareSerial GPSRaw(2);

void setup() {
  GPSRaw.begin(9600);// GPS init

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available()) {
    int ch =;
  if(GPSRaw.available()) {
    int ch =;// read GPS information

After burnt the example code GPSRaw.ino, m5core and PC serial terminal will display following information


Protocol Specification:

Please refer to the u-blox 8 / u-blox M8 Receiver Description - Manual, The following table is a instruction of xxRMC message in NMEA protocol.



More information

UART protocol: baud rate (default is 9600bps), data bit (8 bits), start bit (1 bit), stop bit (1 bit), Parity (none)


M5Stack Fire has occupied GPIO16 / 17 to connect with the PSRAM by default, it's conflict with TXD / RXD (GPIO16, GPIO17) of GPS module. Therefore, when using the GPS module with the M5Stack Fire, you might have to cut the TXD and RXD from GPS module and wire fly to another set of UART pin, if you gonna use the PSRAM.




Add projectSign up / Login