Context
I am trying to use the M5Stack GPS Module v2.1 (ATGM336H) as a standalone UART GPS device with a Raspberry Pi Pico (MicroPython), not with an M5Stack host device.
Goal
My goal is simply to read raw NMEA sentences over UART.
I want to receive standard NMEA output (e.g. $GNGGA, $GNRMC) from the module on a Pico UART RX pin.
Hardware Setup
GPS Module: M5Stack GPS Module v2.1 (ATGM336H)
Microcontroller: Raspberry Pi Pico (MicroPython)
Connections:
GPS Module Pin 28 (5V) → Pico VBUS
GPS Module Pin 1 (GND) → Pico GND
GPS Module TX pin (various tested) → Pico GP1 (UART RX)
Software (Pico / MicroPython)
from machine import UART, Pin
import time
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
print("Listening...")
while True:
data = uart.read()
if data:
print(repr(data))
time.sleep(0.1)
Also tested at 115200 baud.
What I Have Verified
5V is present at the module (measured with multimeter)
Ground is correctly connected
Pico UART is working (used successfully in another part of the project)
SMA antenna is connected
Tested both 9600 and 115200 baud
Tested multiple DIP switch configurations (one switch ON at a time)
Pins Tested for GNSS_TX (based on docs):
Pin 13
Pin 15
Pin 22
Pin 26
Pin 2
Observed Behavior
At 9600 baud: I consistently receive a single byte: b'\xff'
At 115200 baud: no data at all
No readable NMEA sentences are ever received
Understanding / Confusion
From the documentation and schematic:
GNSS_TX is routed via DIP switch to M-Bus pins marked GNSS_TX(SW)
DIP switch labels reference host GPIO (e.g. G1, G3, G17, etc.), not M-Bus pin numbers
It is unclear how DIP switch positions map directly to M-Bus physical pins for standalone use.
Questions
What is the exact DIP switch configuration required to expose GNSS_TX on a specific M-Bus pin (e.g. pin 13 or 15)?
Which M-Bus pin should be used for GNSS_TX when using the module outside of the M5Stack ecosystem?
What is the correct default baud rate for this module (9600 vs 115200)?
Does the module require any initialisation or enable signal before UART output begins?
Is there any known issue using this module standalone (without an M5 host)?
Goal Clarification
I am not trying to configure or parse GPS data yet — I only need to confirm that raw UART NMEA output is present.
Any guidance on correct DIP switch configuration and TX pin mapping for standalone use would be greatly appreciated!