Since it uses GLONASS I needed to write a custom parser for these messages : GNRMC , GNGGA
Ah, I see. After a little research, I see that this is the same as the GPRMC, except the “talker ID” is “Mixed GNSS”, not GPS alone. It’s also one of the things that the Linux
gpsd watches for, and basically ignores (discussion here). I’ll investigate incorporating different talker IDs into NeoGPS. This explains (to me) why TinyGPS doesn’t work with this device.
For anyone else using this device, there is a way to make it always send GPxxx instead of choosing GPxxx / GNxxx / GBxxx / GLxxx / GAxxx messages (e.g., GPRMC, not GNRMC). These all contain the same information, they just have different talker IDs.
The ublox M8 device family has a configuration command called CFG_NMEA (see section 184.108.40.206, Extended NMEA protocol configuration V1). This command allows you to set the
mainTalkerID to “GP” (value 1). If you also use the GPGSV message, you would also want to force the
gsvTalkerID to use the
mainTalkerID. I suspect you would also have to set the Beidou talker ID to “GP” (two characters).
I think the bytes to send during
setup would be:
const char cfg_nmea __PROGMEM =
0xB5, // sync 1
0x62 // sync 2
0x06, // CFG class ID
0x17, // CFG_NMEA msg id
20, 0, // bytes to follow
0, // filters disabled
0x40, // NMEA version 4.0
0, // Number of satellites reported in GSV = unlimited
0x02, // compatibility disabled, consideration mode enabled, limit to 82 char maximum disabled
0, 0, 0, 0, // no GNSS satellites filtered
0, // strict satellite numbering
1, // main talker ID = GP
1, // GSV talker ID = main talker ID
1, // CFG_NMEA message version
'G', 'P', // Beidou talker ID = GP
0,0,0,0,0,0, // fill
0x0D // CK_A
0xC1 // CK_B
This would allow GPS-only NMEA parsers like TinyGPS to work with this device.
BTW, the UBX parser in NeoGPS (like any binary parser) is not affected by the talker ID; this is an NMEA-only “feature”.
if you need it I can post the code.
Of course! We all like code!