Small tools for NMEA2000 bus problems on the boat.
Retransmits PGN 126992 (System Time) with a corrected date on the NMEA2000 bus.
The Furuno SC-30 (and possibly other Furuno GPS compass models) is affected by the GPS week rollover: it reports a date that is exactly 1024 GPS weeks (7168 days) behind the correct date. The time of day is unaffected. This script listens for PGN 126992 from the compass, adds the missing offset, and sends a corrected PGN 126992 from its own, address-claimed NMEA2000 node, so that other devices (AIS, etc.) can read the correct UTC date from the bus.
Note: the Furuno SC-30 itself keeps broadcasting the wrong date, so the bus will have two PGN 126992 sources at the same time. Whether receiving equipment actually uses the corrected message instead of the original depends on how that device is implemented - this is a best-effort workaround, not a guaranteed fix. The permanent solution is still a Furuno firmware update.
- Python 3
python-can(pip install python-can)- A SocketCAN interface (
can0) connected to the NMEA2000 bus
python3 n2k_time_corrector.pyThe script claims a free NMEA2000 address in the 128-199 range, listens for the first PGN 126992 source it sees (assumed to be the Furuno SC-30), and continuously retransmits it with the corrected date until interrupted with Ctrl+C.
GPLv3 - see LICENSE.