{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreifjcvn3ids5gxeebzbj63fexsgrowtnx2ksdbszzv7t6xaavwzaz4",
"uri": "at://did:plc:4tuge3k3comfj4nfvqnwkemn/app.bsky.feed.post/3mgcvo2e7tk72"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreign5bgxjehqqy6hucynbjbaqnhl2rt4cikddalh2d42hhzfurgwxu"
},
"mimeType": "image/png",
"size": 71266
},
"path": "/user/jo__/diary/408317",
"publishedAt": "2026-03-04T20:47:22.000Z",
"site": "https://www.openstreetmap.org",
"tags": [
"https://www.rigacci.org/wiki/doku.php/doc/appunti/hardware/gps_logger_i_blue_747",
"https://www.technologyblog.de/2019/05/gps-rollover-zerstoert-gps-logger/",
"https://wiki.openstreetmap.org/wiki/Holux_M-241",
"mtkbabel"
],
"textContent": "Taking info from\n\nhttps://www.rigacci.org/wiki/doku.php/doc/appunti/hardware/gps_logger_i_blue_747\n\nand\n\nhttps://www.technologyblog.de/2019/05/gps-rollover-zerstoert-gps-logger/\n\nand\n\nhttps://wiki.openstreetmap.org/wiki/Holux_M-241\n\na modified mtkbabel can set the time when reading from the device. That should probably go into some check whether it’s really a M-241 that is connected, but as long as the battery lasts the device shows the correct time again and logs tracks in this year and not dated 2006..\n\n\n $ diff -u /usr/bin/mtkbabel ./mtkbabel\n --- /usr/bin/mtkbabel 2019-10-12 12:23:29.000000000 +0200\n +++ ./mtkbabel 2026-03-03 19:37:37.482923895 +0100\n @@ -166,7 +166,7 @@\n #-------------------------------------------------------------------------\n my $debug = $LOG_WARNING; # Default loggin level.\n my $port = '/dev/ttyUSB0'; # Default communication port.\n -my $baudrate = 115200; # Default port speed.\n +my $baudrate = 38400; # Default port speed.\n my $ro_weeks = 0; # Weeks offset to fix Weeks Rollover Bug\n\n # GPX global values.\n @@ -356,6 +356,18 @@\n set_data_types($model_id);\n }\n\n +# Set time to work around week rollover bug\n +\n +my ($sec,$min,$hour,$mday,$mon,$year) = gmtime;\n +\n +$year += 1900; # year is years since 1900\n +$mon += 1; # month is 0-11\n +\n +packet_send(sprintf('PMTK335,%04d,%02d,%02d,%02d,%02d,%02d', $year, $mon, $mday, $hour, $min, $sec));\n +$ret = packet_wait('PMTK001');\n +printf \"Set time string: $year, $mon, $mday, $hour, $min, $sec\\n\";\n +printf \"Return for setting time: $ret\\n\";\n +\n #-------------------------------------------------------------------------\n # Erase memory.\n #-------------------------------------------------------------------------\n",
"title": "Holux M-241, week rollover fixed with mtkbabel"
}