- You need to cut some parts of the plastic case to hold the protruding SMA connector from GR-M10-RP
- To keep the BBR info of u-blox MAX-M10S in GR-M10-RP, a CR1220 lithium battery must be installed
- The default UART speed is 38400bps
- You need to install Python3 gps package as
sudo apt install python3-gps
# disable autoconfiguration of gpsd
# by setting -p option
GPSD_OPTIONS="-s 38400 -n -p"
# For Ras Pi 3B
#DEVICES="/dev/ttyAMA0 /dev/pps0"
# For Ras Pi 4
DEVICES="/dev/ttyS0 /dev/pps0"
USBAUTO="false"
# Monitor BEIDOU reception status in RAM (current configuration)
ubxtool -P 34.10 -g CFG-SIGNAL-BDS_ENA,0
# Monitor BEIDOU reception status in BBR (battery-backed-up configuration)
ubxtool -P 34.10 -g CFG-SIGNAL-BDS_ENA,1
# DISABLE BEIDOU in RAM (You can use `ubxtool -d BEIDOU` for changing current configuration)
ubxtool -P 34.10 -z CFG-SIGNAL-BDS_ENA,0,1
# DISABLE BEIDOU in BBR (so that this configuration will be activated after power-on reset)
ubxtool -P 34.10 -z CFG-SIGNAL-BDS_ENA,0,2
- Set baudrate: CFG-UART1-BAUDRATE -> 115200
- Set measurement rate: CFG-RATE-MEAS -> 200
- Set QZSS SFRBX message: CFG-MSGOUT-USB_RXM_SFRBX_UART1 -> 1
- GPS disciplined Stratum-1 NTP Server with Raspberry PI - a HowTo
- ubxtool(1) manual
- ubxtool examples
- u-blox MAX M10 Series Documentation and Resources
- prioris.jp GR-M10-RP documents
- RPi4, Ubuntu22.04, GPS, 1PPS, chrony
- nbtk/azarashi: QZSS DCR Decoder
- switch ublox to 57600 or 115200 baudrate, NMEA only messages on output (DO keep ubx on input). Remember to setup "mode" in your ntp config accordingly on the serial line, also remember to setup ucenter to the new baudrate.
- In UBX/CFG/TP (for the PPS driver): verify pulse period is on 1000ms (or your clock will become instantly 'false ticker' in ntpd), switch Time source to UTC (GPS Time is wrong about leap seconds).
- In UBX/CFG/RATE: Time source set to UTC
- You can also disable useless NMEA sentences to keep only the GPGGA and GPZDA messages.
From Configuring NMEA Refclocks
- Time Pulse: µBLOX chips can (and do by default) toggle the PPS line at a different rate when the system is out of sync. This is not a good idea, since NTPD polls the changes of the DCD line, and PPS pulses not aligned to a full second will drive it crazy. It makes more sense to use a PPS pulse of greater length when the system is out of sync but keeping the 1s rate even then.
- Sentence Selection: For time sync purposes, $GNRMC and $GNZDA are the subset of messages I would recommend. So I disabled all other NMEA messages on UART1 of the module. $GNZDA alone is not a good choice, as it has no receiver status indicator.
- Timing Mode: The NEO-M8T supports a timing mode with a fixed geographic location. This has the advantage that 1 satellite is enough to get a reference, and that the system tries to minimize the timing error and TDOP with more sats available. The module also has a survey-in procedure that tries to find out the receiver position. The default minimum acquisition time of 1 day and the maximum position deviation of 1 meter seemed a bit excessive to me, so I switched to 1 hour and 20m, which worked well under the urban conditions I'm living in.
- GPS week base: The NEO-M8 has a configurable GPS base week. (And a factory default, which is depending on the version and the release date.) If this is maintained properly, GPS era rollovers can be dealt with on the module level without doing a firmware update. I have not used this feature so far -- the last era flip was not long ago, and I obtained the module afterwards. But it looks like a very useful feature compared to my Garmin GPS18x which needed two firmware updates in 2019 to deal properly with the era flip.