ESP32 GPS — No Fix / Slow Fix
Quick Diagnosis
GPS showing 0 satellites?
├── Indoor? → Move outdoors
├── First power-on? → Wait 5–15 min for cold start
├── Antenna connected? → Check SMA/u.FL
├── Correct baud rate? → Most modules default 9600
└── Power issue? → Check VCC (3.3V or 5V)
Cold Start vs Hot Start
| Type | Time | Conditions |
|---|---|---|
| Cold start | 2–15 minutes | First power-on, or battery removed > 2 hours |
| Warm start | 30–90 seconds | Powered off < 2 hours, location < 100 km moved |
| Hot start | 1–5 seconds | Brief signal loss, same location |
GPS modules need to download almanac + ephemeris data from satellites, which takes 12.5 minutes for a full download. This is why first fix is slow — it is not a hardware problem.
Common Module-Specific Issues
u-blox M10 (found on T-Beam)
- Default baud: 38400 (not 9600 like older modules)
- Enable Galileo + BeiDou for faster fix in EU/Asia
- u-center software can configure baud rate and constellations
ATGM336H (found on some Heltec boards)
- Default baud: 9600
- Needs clear sky — sensitive to obstructions
- Weak antenna — upgrade to active antenna (3–5V) for better performance
Quectel L76K (found on LILYGO T-Echo)
- Default baud: 9600
- Has internal flash for assisted GPS (A-GPS)
- If A-GPS data is expired, falls back to cold start
Antenna Tips
- Active vs passive: Active antennas (3–5V powered) have LNA built-in — much better sensitivity. Most GPS modules have a pin for active antenna power.
- Ground plane: GPS antennas work better with a metal ground plane underneath (≥ 50×50 mm). The device PCB itself often acts as the ground plane.
- Placement: GPS antenna must face the sky. Do not mount it under a metal roof, solar panel, or inside a metal enclosure.
Meshtastic GPS Settings
| Setting | Value | Effect |
|---|---|---|
position.gps_rx_pin | 34 (T-Beam default) | Must match hardware |
position.gps_tx_pin | 12 (T-Beam default) | Must match hardware |
position.gps_enabled | true | Enable GPS |
position.fixed_position | false for mobile | Use true for stationary nodes |
position.position_broadcast_secs | 900 | 15 min intervals saves battery |
Still stuck?
Post your issue on the Community Forum with your device model, what you tried, and a photo of your setup.