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.
Popular Compatible GPS Chips
| Manufacturer | Models / Chipsets | Protocol | Multi-GNSS | Multi-Band |
|---|---|---|---|---|
| u-blox | 5/6/7/8/9/10 series | UBX (u-blox proprietary binary) | Yes (GPS, GLONASS, Galileo, BeiDou) | Yes (u-blox 9/10 support L1+L5) |
| Quectel | L76/L80/L86 (MTK-based); LC79/LC86/LG77/LG69 (modern) | NMEA + proprietary binary | Yes (depends on model) | - |
| SkyTraq | Venus 6/7/8 chipsets; NavSpark modules | SkyTraq binary protocol | Yes (GPS, GLONASS, Galileo, BeiDou) | - |
| Unicore Communications | UM220/UM230/UM330; UM430/UM442/UM482 (high-precision) | Unicore binary protocol | Yes (all constellations) | - |
| MediaTek (MTK) | MT3318/MT3329/MT3333/MT3339 | MTK binary (PMTK commands) | Limited (mostly GPS + GLONASS) | - |
| Trimble | Copernicus/Copernicus II; Thunderbolt/Thunderbolt-E; Resolution T/SMT 360 | TSIP (Trimble Standard Interface Protocol) | Varies by model | - |
| Garmin | Various GPS devices | Garmin binary protocol | Depends on model | - |
| SiRF Technology | SiRFstar II/III/IV/V chipsets | SiRF binary protocol | SiRFstar IV/V support GLONASS | - |
| Broadcom | BCM4752/BCM47755/BCM47765 | NMEA (standard) | Yes (modern chips) | - |
| Telit | Jupiter/Super Jupiter series; GL868 modules | NMEA + proprietary extensions | Limited | - |
| Generic NMEA Devices | Any GPS outputting standard NMEA-0183 sentences | NMEA-0183 | If device supports it | - |
How Compatibility Works
GPSd as Universal Translator
flowchart LR
subgraph rcvr ["GPS Receivers"]
A1["u-blox
UBX binary"]
A2["Quectel
MTK binary"]
A3["Trimble
TSIP"]
A4["Generic
NMEA text"]
end
B["gpsd
universal translator"]
C["JSON
standard output"]
D["ChroGPS Dash
Shows satellites!"]
A1 --> B
A2 --> B
A3 --> B
A4 --> B
B --> C
C --> D
Field Normalization
ChroGPS Dash handles different field naming conventions:
PRNorsvid→ Satellite identifierssorsnrorcn0→ Signal strengthelorelevation→ Elevation angleazorazimuth→ Azimuth anglegnssid→ Constellation identifiersigid→ Signal/frequency identifier (for multi-band)
Constellation Detection (Enhanced Three-Tier Fallback)
ChroGPS Dash uses intelligent constellation detection that handles both NMEA and u-blox numbering schemes:
flowchart LR
P1["Priority 1: gnssid (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)"]
P2["Priority 2: PRN/SVID Ranges (standard ranges)
GPS: 1-32 • SBAS: 33-64, 120-158
GLONASS: 65-96 • etc."]
P3["Priority 3: Talker ID (NMEA only, legacy)
GP=GPS • GL=GLONASS • GA=Galileo • etc."]
P1 -->|"gnssid unavailable or invalid"| P2
P2 -->|"ambiguous"| P3
Different GPS manufacturers use different gnssid numbering schemes:
- 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.
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
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/cgpsd-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
GPS Data Performance Cache
ChroGPS Dash caches the full live gpsd response to avoid blocking on the gpsd socket on every AJAX request. Multi-constellation receivers send each constellation’s data (GPS, GLONASS, Galileo, BeiDou, QZSS, SBAS, NavIC, etc.) as separate messages roughly 1 second apart, making a complete cold read take 3-5 seconds. The cache eliminates this overhead on most requests.
How it works:
- Cache location:
/var/tmp/cgpsd-gps-data-cache.json - TTL: 10 seconds
- Written after each cold gpsd read; subsequent requests within the TTL are served instantly
- Results in a repeating pattern of several fast AJAX refreshes (~200 ms) followed by one slower cold-read refresh (~3-5 s)
What is cached:
- Live satellite data (SNR, elevation, azimuth, used flags)
- GPS position, fix mode, and DOP values
- GPSd version and device info
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.
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
Running into wrong constellation colors, missing or duplicate satellites, or no position fix? Those are covered in the GPS & Satellite Data Issues section of the Troubleshooting guide , which has dedicated entries for each:
- Wrong constellation colors
- Missing satellites
- Duplicate satellites on a multi-band receiver
- Satellites showing but no position 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
Quick Compatibility Test
Run the following command on your GPS server to verify GPSd is working and your receiver is communicating correctly:
curl -fssL https://chro.gpsda.sh/gpsd-test | bash
A passing 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 & Signal ID Reference
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
BeiDou:
- 0 = B1I D1
- 2 = B1I
- 3 = B1C
- 5 = B2a
- 6 = B2b I
- 8 = B2 I+Q
- 9 = B3I
QZSS:
- 0 = L1 C/A
- 8 = L5 I
- 10 = L5 I+Q
NavIC:
- 0 = L5 A
- 1 = S A
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.
- Universal GPSd protocol support
- NMEA + u-blox
gnssidscheme auto-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)