Skip to main content...

W0CHP.radio

Ham Radio, Tech, Software & Projects

ChroGPS Dash GNSS Receiver Compatibility Guide

Overview

ChroGPS Dash is universally compatible with all GPS/GNSS receivers supported by GPSd. The dashboard communicates with GPSd via its JSON protocol, which acts as a universal translator for dozens of different GPS chip protocols.

u-blox

  • u-blox 5/6/7/8/9/10 series
  • Protocol: UBX (u-blox proprietary binary)
  • Multi-GNSS: Yes (GPS, GLONASS, Galileo, BeiDou)
  • Multi-Band: Yes (u-blox 9/10 support L1+L5)

Quectel

  • L76/L80/L86 series (MTK-based)
  • LC79/LC86/LG77/LG69 series (modern)
  • Protocol: NMEA + proprietary binary
  • Multi-GNSS: Yes (depends on model)

SkyTraq

  • Venus 6/7/8 chipsets
  • NavSpark modules
  • Protocol: SkyTraq binary protocol
  • Multi-GNSS: Yes (GPS, GLONASS, Galileo, BeiDou)

Unicore Communications

  • UM220/UM230/UM330 series
  • UM430/UM442/UM482 (high-precision)
  • Protocol: Unicore binary protocol
  • Multi-GNSS: Yes (all constellations)

MediaTek (MTK)

  • MT3318/MT3329/MT3333/MT3339
  • Protocol: MTK binary (PMTK commands)
  • Multi-GNSS: Limited (mostly GPS + GLONASS)

Trimble

  • Copernicus/Copernicus II
  • Thunderbolt/Thunderbolt-E
  • Resolution T/SMT 360
  • Protocol: TSIP (Trimble Standard Interface Protocol)
  • Multi-GNSS: Varies by model

Garmin

  • Various GPS devices
  • Protocol: Garmin binary protocol
  • Multi-GNSS: Depends on model

SiRF Technology

  • SiRFstar II/III/IV/V chipsets
  • Protocol: SiRF binary protocol
  • Multi-GNSS: SiRFstar IV/V support GLONASS

Broadcom

  • BCM4752/BCM47755/BCM47765
  • Protocol: NMEA (standard)
  • Multi-GNSS: Yes (modern chips)

Telit

  • Jupiter/Super Jupiter series
  • GL868 modules
  • Protocol: NMEA + proprietary extensions
  • Multi-GNSS: Limited

Generic NMEA Devices

  • Any GPS outputting standard NMEA-0183 sentences
  • Protocol: NMEA-0183
  • Multi-GNSS: If device supports it

How Compatibility Works

1. GPSd as Universal Translator

Step 1          Step 2         Step 3        Step 4         Step 5
-------         -------        -------       -------        -------
GPS Chip   →    Protocol   →   gpsd     →    JSON      →    ChroGPS Dash
(hardware)      (language)     (translator)  (standard)

Examples:
u-blox     →    UBX binary →   gpsd     →    JSON      →    Shows satellites!
Quectel    →    MTK binary →   gpsd     →    JSON      →    Shows satellites!
Trimble    →    TSIP       →   gpsd     →    JSON      →    Shows satellites!
Generic    →    NMEA text  →   gpsd     →    JSON      →    Shows satellites!

2. Field Normalization

ChroGPS Dash handles different field naming conventions:

  • PRN or svid → Satellite identifier
  • ss or snr or cn0 → Signal strength
  • el or elevation → Elevation angle
  • az or azimuth → Azimuth angle
  • gnssid → Constellation identifier
  • sigid → Signal/frequency identifier (for multi-band)

3. Constellation Detection (Enhanced Three-Tier Fallback)

ChroGPS Dash uses intelligent constellation detection that handles both NMEA and u-blox numbering schemes:

Priority 1: gnssid with dual-scheme support
   - Tries NMEA 4.10+ mapping first (2=GLONASS, 3=Galileo)
   - Validates against PRN range
   - Falls back to u-blox mapping if mismatch (6=GLONASS, 2=Galileo)
   ↓ (if gnssid not available or invalid)
Priority 2: PRN/SVID ranges (standard ranges)
   - GPS: 1-32
   - SBAS: 33-64, 120-158
   - GLONASS: 65-96
   - etc.
   ↓ (if ambiguous)
Priority 3: Talker ID (NMEA only, legacy)
   - GP=GPS, GL=GLONASS, GA=Galileo, etc.

Important: Different GPS manufacturers use different gnssid numbering:

  • NMEA 4.10+ standard: gnssid 2=GLONASS, 3=Galileo
  • u-blox proprietary: gnssid 6=GLONASS, 2=Galileo

ChroGPS Dash automatically detects which scheme your receiver uses by validating gnssid against PRN ranges!

4. Multi-Band Receiver Support

Modern dual/tri-band receivers (L1+L5, L1+L2+L5) report the same satellite on multiple frequencies. ChroGPS Dash handles this intelligently:

Backend Storage:

  • Tracks each signal separately: PRN_gnssid_sigid
  • Example: GPS PRN 10 on L1 = 10_0_0, on L5I = 10_0_6
  • Preserves all signal data in cache

Frontend Display:

  • Aggregates signals by PRN
  • Shows strongest signal per satellite
  • One dot per satellite on skyview
  • No duplicate PRNs in tables

Supported Signal Types:

  • GPS: L1C/A, L2C, L5
  • GLONASS: L1OF, L2OF
  • Galileo: E1, E5a, E5b
  • BeiDou: B1, B2, B3
  • QZSS: L1, L2, L5

5. Satellite Caching System

ChroGPS Dash maintains a persistent satellite cache to show ALL satellites even when gpsd sends them in batches:

How it works:

  • Cache location: /var/tmp/chrogps-sat-cache.json
  • TTL: 30 seconds per satellite
  • Accumulates satellites across refreshes
  • Individual satellite expiration (not whole cache)
  • Automatically filters out stale satellites

Benefits:

  • See 25+ satellites instead of just 15-17
  • Satellites persist across page refreshes
  • No missing satellites from batched gpsd messages

6. Ghost Satellite Filtering

ChroGPS Dash filters out “ghost” satellites that GPS receivers report from almanac data but aren’t actually visible:

Filtered when ALL of:

  • Elevation = 0°
  • Azimuth = 0°
  • Signal strength = 0 dBHz
  • Not used in position fix

Example: QZSS satellites (PRN 193-197) visible only in Japan/Asia will be filtered out for users in other locations.

7. Multi-GNSS Support

Automatically detects and displays:

  • 🇺🇸 GPS (USA)
  • 🇷🇺 GLONASS (Russia)
  • 🇪🇺 Galileo (European Union)
  • 🇨🇳 BeiDou (China)
  • 🇯🇵 QZSS (Japan)
  • 🇮🇳 NavIC (India)
  • 🛰️ SBAS (WAAS/EGNOS/MSAS/GAGAN)

Troubleshooting

“Wrong constellation colors”

Your GPS receiver may be using u-blox-style gnssid values instead of NMEA standard. ChroGPS Dash handles both automatically by validating gnssid against PRN ranges.

To verify:

gpspipe -w | grep '"class":"SKY"' | head -3 | jq '.satellites[]? | {PRN, gnssid}'

If you see GLONASS satellites (PRN 65-96) with gnssid=6, that’s u-blox numbering (correct). If you see gnssid=2, that’s NMEA numbering (also correct). ChroGPS handles both!

Note

Note: requires gpspipe and jq programs. If any of those commands are not found, run:

sudo apt-get install -y gpsd-clients jq

Then you can re-run the test command.

“Missing satellites”

  • Some chips report satellites in multiple gpsd messages
  • ChroGPS caches satellites for 30 seconds to accumulate all of them
  • Satellite count should grow from 15→20→25 over a few refreshes
  • Check cache: cat /tmp/chrogps-sat-cache.json | jq '.satellites | length'

“Duplicate satellites on multi-band receiver”

ChroGPS automatically aggregates multiple signals per satellite and shows only the strongest. You should see one entry per PRN regardless of how many bands are being tracked.

“Satellites showing but no position fix”

Check that you have:

  • Clear view of sky
  • At least 4 satellites with good signal (>25 dBHz)
  • HDOP < 5.0
  • Wait 30-60 seconds for initial fix

Protocol Details

Protocols Supported by GPSd (and thus ChroGPS Dash):

Protocol Chips Using It Binary/Text Multi-GNSS Multi-Band
UBX u-blox 5/6/7/8/9/10 Binary Yes 9/10 only
NMEA-0183/4.1 Almost all GPS Text Depends 4.1+ only
TSIP Trimble Binary Yes Yes
SiRF SiRF chipsets Binary Limited No
MTK MediaTek, Quectel Binary Limited No
SkyTraq SkyTraq Venus Binary Yes Limited
Unicore Unicore UM series Binary Yes Yes
Garmin Garmin devices Binary Varies Varies
Zodiac Rockwell Zodiac Binary No No
EverMore GlobalSat, iBlue Binary No No

Testing Your GPS

To run a quick compatibility test, simply run this command:

curl -ssL https://w0chp.radio/gpsd-test | bash
Note

Note: requires gpspipe and jq programs. If any of those commands are not found, run:

sudo apt-get install -y gpsd-clients jq

Then you can re-run the test script.

The test will show:

  • ✓ GPS fix status (Mode 0/1/2/3)
  • ✓ Satellite count and signal strengths
  • ✓ Position accuracy
  • ✓ Message types received
  • ✓ Compatibility verdict

Technical Details

GNSS ID Numbering Schemes

ChroGPS Dash supports both NMEA and u-blox gnssid numbering:

NMEA 4.10+ Standard:

gnssid Constellation
0 GPS
1 SBAS
2 GLONASS
3 Galileo
4 BeiDou
5 QZSS
6 NavIC

u-blox Proprietary:

gnssid Constellation
0 GPS
1 SBAS
2 Galileo
3 BeiDou
5 QZSS
6 GLONASS

ChroGPS detects which scheme by validating gnssid against PRN ranges and automatically uses the correct mapping!

Signal ID (sigid) Values

Signal IDs vary by constellation and are used to identify different frequency bands:

GPS:

  • 0 = L1C/A
  • 3 = L2 CL
  • 4 = L2 CM
  • 6 = L5 I
  • 7 = L5 Q

GLONASS:

  • 0 = L1 OF
  • 2 = L2 OF

Galileo:

  • 0 = E1 C
  • 1 = E1 B
  • 3 = E5 aI
  • 4 = E5 aQ
  • 5 = E5 bl
  • 6 = E5 bQ

Source: gpsd JSON Protocol Documentation

Conclusion

Bottom line: If your GPS works with GPSd, it works with ChroGPS Dash. No special configuration needed beyond normal GPSd setup.

The robust constellation detection with dual-scheme support, multi-band aggregation, satellite caching, and ghost filtering ensure accurate display across all GPS chip manufacturers and protocols.

Key Features:

  • Universal gpsd protocol support
  • NMEA + u-blox gnssid scheme detection
  • Multi-band receiver support (L1+L5)
  • 30-second satellite caching
  • Ghost satellite filtering
  • Field normalization across chip types
  • 7 constellation support (GPS/GLONASS/Galileo/BeiDou/QZSS/NavIC/SBAS)

Document Version: 95dff48 -- Last Revision: 2026-02-19
Permanent Link: <https://w0chp.radio/chrogps-dash/compatibility/>