Skip to main content

lc29h

CLI tool and MCP server for Quectel LC29H dual-band (L1+L5) GNSS modules on Linux.

A native Linux replacement for the Windows-only QGNSS tool. Provides position monitoring, satellite tracking, constellation configuration, NTRIP-based RTK corrections for centimeter-level accuracy, base station survey-in, and dead reckoning control -- all from the terminal or through an MCP server for LLM integration.

Supports all five LC29H module variants: AA, BA, CA, DA, and BS.

Documentation: https://lc29h.warehack.ing/

Installation

Requires Python 3.11 or later.

# Recommended
uv tool install lc29h

# Alternative
pipx install lc29h

Serial Port

The module communicates over UART. Specify the port with --port or the LC29H_PORT environment variable:

lc29h --port /dev/ttyS0 info       # Pi 4B (built-in UART)
lc29h --port /dev/ttyAMA0 info     # Pi 5
lc29h --port /dev/ttyUSB0 info     # USB-to-serial adapter

Default: /dev/ttyS0. Baud rate defaults to 115200, configurable via --baud or LC29H_BAUD.

CLI Reference

Module Information

lc29h info
Model:    LC29HDANR11A07S
Firmware: LC29HDANR11A07S_RSA
Built:    2024/07/16 17:50:56
Chip:     AG3335A
Chip FW:  AXN_5.3.0_p2

Position Monitoring

lc29h monitor                          # Live table (default)
lc29h monitor --format csv             # CSV output for logging
lc29h monitor --format nmea            # Raw NMEA sentences
lc29h monitor --count 10               # Stop after 10 fixes

Satellite Status

lc29h satellites

Displays dual-band (L1/L5) signal-to-noise ratios per satellite, grouped by physical PRN:

  PRN    Const  Elev  Azim    L1    L5  Used
--------------------------------------------
    2      GPS    51   283    34    30     *
    5      GPS    14   180    22   ---
    7      GPS    63    47    38    34     *
   10      GPS    27   130    30    28     *
   24      GPS    41   314    33    32     *
    3  GALILEO    32    73    31    28     *
    8  GALILEO    19   210    27    25
   26  GALILEO    68   155    36    33     *

8 satellites tracked (14 signal observations)

Configuration

# Enable/disable constellations
lc29h config constellation --gps --galileo --no-glonass --no-beidou

# Set position fix rate (100-10000 ms)
lc29h config fix-rate 200                # 5 Hz updates

# Change serial baud rate
lc29h config baud 230400

# Save current settings to flash (persist across reboots)
lc29h config save

# Restore factory defaults
lc29h config restore

Module Restart

lc29h restart hot                       # Keep all data (~1s TTFF)
lc29h restart warm                      # Clear ephemeris (~30s TTFF)
lc29h restart cold                      # Full reacquisition (~60s TTFF)

NTRIP (RTK Corrections)

For centimeter-level positioning on DA and BA variants:

# List available mount points
lc29h ntrip sources --host rtk2go.com

# Stream RTK corrections (auto-detects NTRIP 1.0/2.0, exponential backoff)
lc29h ntrip start --host rtk2go.com --mount NEAR_ME \
    --user user@example.com --password none

Base Station Survey-In (BS Variant)

# Start survey-in (average position for 1 hour, target 0.5m accuracy)
lc29h survey-in start-survey --duration 3600 --accuracy 0.5

# Check progress (shows WGS84 position converted from ECEF)
lc29h survey-in status

# Stop survey-in
lc29h survey-in stop

JSON Output

All commands support --json for machine-readable output:

lc29h --json info
lc29h --json monitor --count 1

MCP Server

The package includes lc29h-mcp, a FastMCP server that exposes GNSS functionality as tools for LLM integration. The server maintains a persistent serial connection with background NMEA parsing, so position and satellite data are always current.

Setup

# Add to Claude Code
claude mcp add lc29h -- uvx lc29h-mcp

# Or run directly
lc29h-mcp

Configure via environment variables: LC29H_PORT, LC29H_BAUD.

Tools (20)

Position and Status

  • get_position -- Current lat/lon/alt, fix type, satellites, HDOP, speed, course
  • get_satellites -- All tracked satellites with PRN, elevation, azimuth, SNR, constellation
  • get_module_info -- Firmware version, model, chip identification

Configuration

  • configure_constellations -- Enable/disable GPS, GLONASS, Galileo, BeiDou, QZSS
  • set_fix_rate -- Position update rate (100ms to 10s)
  • save_config -- Persist settings to flash
  • restart_module -- Hot/warm/cold restart

NTRIP (RTK Corrections)

  • ntrip_connect -- Connect to caster, or list mount points if no mountpoint given
  • ntrip_status -- Check connection state
  • ntrip_disconnect -- Stop correction stream

Base Station (BS Variant)

  • survey_in_start -- Begin position averaging with duration/accuracy targets
  • survey_in_status -- Progress, accuracy, WGS84 position from ECEF

Dead Reckoning (BA/CA Variants)

  • dead_reckoning_config -- Get/set DR mode (GNSS only, DR only, auto)

EASY / AGNSS (AA Variant)

  • easy_status -- Query ephemeris prediction status
  • easy_enable -- Enable/disable orbit prediction for faster TTFF

Power and Performance

  • odometer -- Enable/disable/reset distance accumulation
  • elevation_mask -- Get/set satellite elevation cutoff angle
  • speed_clamping -- Zero-speed reporting when stationary
  • gnss_suspend_resume -- Idle the GNSS engine to save power
  • periodic_mode -- Duty-cycled tracking (run/sleep windows)

Resources

  • gnss://position -- Live position summary
  • gnss://satellites -- Current constellation view
  • gnss://status -- Module and NTRIP connection state

Supported Variants

Variant Features
LC29H(AA) SBAS augmentation, EASY self-generated ephemeris
LC29H(BA) Dead Reckoning + RTK
LC29H(CA) Dead Reckoning (inertial navigation, no RTK)
LC29H(DA) RTK with fast convergence
LC29H(BS) Base Station (RTCM3 output, survey-in)

License

MIT

Metadata

Release files for lc29h 2026.2.27

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lc29h 2026.2.27
File Size Uploaded Provenance
lc29h-2026.2.27.tar.gz 178.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for lc29h 2026.2.27
File Interpreter ABI Platform
lc29h-2026.2.27-py3-none-any.whl Python 3 none any Details

Total release size: 241.4 kB

Release files / lc29h-2026.2.27.tar.gz

Download URL lc29h-2026.2.27.tar.gz
Size 178.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2095f18bf90f66c14b3a6e8ebbd9279448030f7df8c86de3cc0c6d4a99db0772
BLAKE2b-256 checksum
How to use checksums
f82a8347f15a1ee440f34d1ce7ec1ffa0a8255ad3436e3314519e4576254eaf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / lc29h-2026.2.27-py3-none-any.whl

Download URL lc29h-2026.2.27-py3-none-any.whl
Size 62.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20663155fe63ff2c642b1b7a5a73e155d37ad84a4bba26aaa4b8d047161ffb6d
BLAKE2b-256 checksum
How to use checksums
bb111e4923360e2aa510fa5f74faed1bdb061e2333d63cf3f8db154ccdb2544f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for lc29h 2026.2.27

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

2026.2.27 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page