Troubleshooting
No Position Fix
Section titled “No Position Fix”A cold start under open sky takes 26 seconds. A hot start (ephemeris still cached from recent use) takes about 1 second. If neither is happening, work through these checks.
-
Verify antenna connection
The L1/L5 antenna plugs into the IPEX socket on the HAT. It should click firmly into place. A loose connection kills signal reception entirely.
-
Check sky visibility
GNSS signals do not penetrate buildings, metal roofs, or dense tree canopy. The antenna needs a direct line of sight to the sky. L5 signals are more sensitive to obstructions than L1.
Terminal window # Check how many satellites the module can seelc29h satellitesYou need at least 4 satellites for a 3D fix. Fewer than that means obstructed sky or antenna problem.
-
Watch the PPS LED
When the PPS LED blinks once per second, the module has a fix. No blink means no fix.
-
Try a cold restart
If the module has stale ephemeris data (moved a long distance while powered off, or battery died), a cold restart forces it to reacquire from scratch:
Terminal window lc29h restart coldThis resets to a 26-second TTFF under open sky.
-
Check module orientation
The module label should face downward (toward ground) with the antenna facing sky. Upside-down mounting inverts the antenna pattern.
Serial Port Issues
Section titled “Serial Port Issues”Permission Denied
Section titled “Permission Denied”PermissionError: [Errno 13] Permission denied: '/dev/ttyS0'Add your user to the dialout group:
sudo usermod -aG dialout $USERThen log out and back in (or reboot). The group change does not take effect in your current session.
Wrong Device Path
Section titled “Wrong Device Path”| Connection | Device |
|---|---|
| GPIO UART (jumper B) | /dev/ttyS0 |
| USB (jumper A) | /dev/ttyUSB0 |
| Connection | Device |
|---|---|
| GPIO UART (jumper B) | /dev/ttyAMA0 |
| USB (jumper A) | /dev/ttyUSB0 |
| Connection | Device |
|---|---|
| USB (CP210x) | /dev/ttyUSB0 or /dev/ttyACM0 |
Check dmesg | tail after plugging in to see which device was assigned.
Baud Rate Mismatch
Section titled “Baud Rate Mismatch”The factory default baud rate is 115200 for GPIO UART and 460800 for USB. If you get no response at 115200, try:
# Try factory defaultlc29h --port /dev/ttyS0 --baud 9600 info
# Try USB defaultlc29h --port /dev/ttyUSB0 --baud 460800 infoIf the baud rate was previously changed and you don’t know the current value, you need to try common rates until one responds: 9600, 38400, 57600, 115200, 230400, 460800.
UART Not Enabled on Pi
Section titled “UART Not Enabled on Pi”If /dev/ttyS0 (Pi 4B) or /dev/ttyAMA0 (Pi 5) does not exist:
-
Enable serial port
Terminal window sudo raspi-config# Interface Options -> Serial Port -> Yes -
Add UART overlay (if raspi-config alone does not create the device)
Add to
/boot/firmware/config.txt(Pi 5) or/boot/config.txt(Pi 4B):dtoverlay=uart0 -
Reboot
Terminal window sudo reboot
No Data at All
Section titled “No Data at All”If the device exists but you get zero output:
-
Verify the yellow jumper matches your connection method (B = UART, A = USB)
-
Check that the antenna is connected (module may not output NMEA without a satellite search in progress on some firmware versions)
-
Try reading raw serial data to rule out CLI issues:
Terminal window # Read raw bytes from the port (Ctrl+C to stop)stty -F /dev/ttyS0 115200 raw -echocat /dev/ttyS0If you see NMEA sentences here but
lc29hdoes not work, the issue is in the CLI configuration, not the hardware.
NTRIP Connection Failures
Section titled “NTRIP Connection Failures”rtk2go.com Rejects Connection
Section titled “rtk2go.com Rejects Connection”lc29h ntrip start \ --host rtk2go.com \ --port 2101 \ --mount YOUR_MOUNT \ --user your@email.com \ --password noneMount Point Not Found
Section titled “Mount Point Not Found”The mount point name is case-sensitive and must exist on the caster. Browse available mount points:
# List all mount points from a casterlc29h ntrip sources --host rtk2go.com --port 2101Or check the web status page: rtk2go.com:2101/SNIP::STATUS
Connection Timeout
Section titled “Connection Timeout”Common causes:
| Symptom | Likely Cause | Fix |
|---|---|---|
| Connection refused | Wrong port | Standard NTRIP port is 2101 |
| Timeout after 10s | Firewall blocking outbound TCP | Open port 2101 outbound |
| DNS resolution failure | No internet | Check ping rtk2go.com |
| Intermittent drops | Unstable network | Use wired ethernet instead of WiFi |
Base Station Too Far Away
Section titled “Base Station Too Far Away”NTRIP corrections degrade with distance. As a rule of thumb:
| Baseline Distance | Expected Accuracy |
|---|---|
| < 10 km | 1—2 cm (RTK Fixed typical) |
| 10—30 km | 2—5 cm (RTK Fixed possible) |
| 30—50 km | Float only in many cases |
| > 50 km | Corrections effectively useless |
Use lc29h ntrip sources to find the closest mount point to your location. If nothing is within 30 km, consider setting up your own base station with the LC29H(BS).
RTK Not Getting Fix
Section titled “RTK Not Getting Fix”Float vs. Fixed
Section titled “Float vs. Fixed”RTK Float (GGA quality 5) means the module is receiving and applying corrections, but has not resolved the carrier-phase integer ambiguities. This gives decimeter accuracy (~20 cm) rather than centimeter.
RTK Fixed (GGA quality 4) means full ambiguity resolution — centimeter accuracy.
The typical progression after starting corrections:
No Fix (0) -> Autonomous (1) -> RTK Float (5) -> RTK Fixed (4)If you are stuck at Float:
-
Check baseline distance — move to a closer mount point if possible (see table above)
-
Verify constellation overlap — the base and rover must track the same satellites. A single-band (L1-only) base station paired with the LC29H’s dual-band receiver will still work, but convergence is slower.
-
Confirm RTCM message types — for full dual-band RTK, the base should send:
Message Content 1005 Station coordinates (antenna reference point) 1077 GPS MSM7 (full observables) 1087 GLONASS MSM7 1097 Galileo MSM7 1127 BeiDou MSM7 Missing messages reduce the number of satellites used for ambiguity resolution.
-
Wait longer — in marginal conditions (long baseline, partial sky), convergence from Float to Fixed can take 5+ minutes. Do not move the antenna during initial convergence.
-
Check antenna quality — multipath from nearby buildings, metal surfaces, or the ground degrades carrier-phase measurements. Raise the antenna above obstructions.
Frequent Fix Drops
Section titled “Frequent Fix Drops”If the fix oscillates between Fixed and Float:
- Multipath — metal roofs, glass buildings, and vehicles near the antenna cause carrier-phase cycle slips. Move the antenna to a clearer location.
- Baud rate too low — RTCM3 data at 1 Hz with MSM7 for 4 constellations is roughly 2—3 KB/s. At 9600 baud (~960 bytes/s), the serial link cannot keep up. Use 115200 or higher.
- Correction stream interruptions — check your internet connection stability. A 10-second gap in RTCM data can cause the module to drop from Fixed back to Float.
Pi 5 Specific Issues
Section titled “Pi 5 Specific Issues”Different UART Device Path
Section titled “Different UART Device Path”The Pi 5 uses /dev/ttyAMA0 for GPIO serial, not /dev/ttyS0 like the Pi 4B. This is because the Pi 5 uses the PL011 UART peripheral rather than the mini UART.
# Pi 4Blc29h --port /dev/ttyS0 info
# Pi 5lc29h --port /dev/ttyAMA0 infoBluetooth Conflict
Section titled “Bluetooth Conflict”On both Pi 4B and Pi 5, Bluetooth uses the PL011 UART by default, which can conflict with GPIO serial. If you see garbled data or intermittent communication failures:
Add to /boot/firmware/config.txt (Pi 5) or /boot/config.txt (Pi 4B):
dtoverlay=disable-btThis frees the PL011 UART entirely for the LC29H.
If you need Bluetooth, move it to the mini UART instead:
dtoverlay=miniuart-btThis gives the LC29H the full PL011 UART while Bluetooth runs on the less capable mini UART.
Reboot after changing config.txt.
Common Error Messages
Section titled “Common Error Messages”$PAIR001,<cmd>,0*XX — Command Acknowledged
Section titled “$PAIR001,<cmd>,0*XX — Command Acknowledged”This is not an error. Result code 0 means success. The module accepted and executed the command.
$PAIR001,<cmd>,1*XX — Command Failed
Section titled “$PAIR001,<cmd>,1*XX — Command Failed”The command was recognized but could not be executed. Common causes:
- Sending an RTK command to a non-RTK variant (e.g., PAIR432 to an LC29H(AA))
- Module is in a state that does not support the command
$PAIR001,<cmd>,2*XX — Not Supported
Section titled “$PAIR001,<cmd>,2*XX — Not Supported”The command ID is not recognized by this firmware version or variant.
$PAIR001,<cmd>,3*XX — Invalid Parameter
Section titled “$PAIR001,<cmd>,3*XX — Invalid Parameter”A parameter is out of range. Check the PAIR Command Reference for valid ranges.
No Response At All
Section titled “No Response At All”If you send a command and get nothing back:
- Check baud rate — the module will not respond if you are transmitting at the wrong speed
- Check wiring — TX from the host must connect to RX on the module, and vice versa
- Verify command format — every command needs the
$prefix,*checksum delimiter, and correct two-character hex checksum followed by\r\n - Check for echo — if you see your own command echoed back, TX and RX may be swapped
PQTMSVINSTATUS Shows valid=0
Section titled “PQTMSVINSTATUS Shows valid=0”During base station survey-in, the module reports status periodically. valid=0 means the survey has not yet converged to the configured accuracy threshold.
$PQTMSVINSTATUS,1,0,3600,542,2.3451*XX| Field | Meaning |
|---|---|
1 | Survey-in mode active |
0 | Not yet valid |
3600 | Target duration (seconds) |
542 | Elapsed time so far |
2.3451 | Current 3D accuracy estimate (meters) |
This is normal — survey-in for a 1 m accuracy target typically takes the full configured duration. Wait for valid=1 before switching to fixed mode.
Quick Diagnostic Checklist
Section titled “Quick Diagnostic Checklist”If nothing else has worked, run through this sequence to isolate the problem layer by layer:
# 1. Does the serial device exist?ls -la /dev/ttyS0 # or /dev/ttyAMA0 on Pi 5
# 2. Can we open the port?lc29h --port /dev/ttyS0 info
# 3. Is the module producing NMEA data?lc29h --port /dev/ttyS0 monitor
# 4. How many satellites are visible?lc29h satellites
# 5. What is the current fix status?lc29h --port /dev/ttyS0 monitor# Look for "Fix: 3D" vs "Fix: No Fix"If step 1 fails, the problem is OS/driver configuration. If step 2 fails, the problem is serial communication (baud rate, wiring, permissions). If step 3 shows data but no fix, the problem is antenna/sky view. If satellites are visible but fix quality is poor, the problem is environmental (multipath, obstructions) or configuration (wrong variant for your use case).