Here's a puzzle for all of you that have too much time on your hands. I just finished adding support for syncing the time to libprs500, unfortunately there's one field of 4 bytes I cant interpret. Here are the time set command packets
Code:
# 16:11 11th dec 2006
00000000: 0401 0000 0100 0000 0000 0000 1c00 0000 ................
00000010: 20fe ffff d607 0000 0c00 0000 0c00 0000 ...............
00000020: 0000 0000 0b00 0000 0800 0000 ............
# 16:20odd 11th nov 2006
00000000: 0401 0000 0100 0000 0000 0000 1c00 0000 ................
00000010: 20fe ffff d607 0000 0b00 0000 0c00 0000 ...............
00000020: 0000 0000 1500 0000 0a00 0000 ............
# 16:25odd 16th dec 2006
00000000: 0401 0000 0100 0000 0000 0000 1c00 0000 ................
00000010: 20fe ffff d607 0000 0c00 0000 1100 0000 ...............
00000020: 0000 0000 1c00 0000 2200 0000 ........"...
# 04:34odd 11th dec 2006
00000000: 0401 0000 0100 0000 0000 0000 1c00 0000 ................
00000010: 20fe ffff d607 0000 0c00 0000 0b00 0000 ...............
00000020: 0c00 0000 2200 0000 3500 0000 ...."...5...
As you can see the time information starts from byte 20 in 4byte blocks that are encoded little-endian (least significant first). Thus d6070000=2006. From byte 20 its year, month, day, hour, minute and second. The first 4 bytes are the command number, the next four are the command type and 1c is the command length. The question is what are bytes 16-19? They are the same in all time set packets I've seen (20fe ffff) and I can't figure them out? Are they and epoch, an offset of some sort, random garbage? Changing the value doesn't seem to affect the time set operation as far as I can tell, but you never know.
For those of you who actually read this far, as a reward for your patience, here's a link that documents the progress (or lack of it) I'm making with libprs500 and its GUI.
https://libprs500.kovidgoyal.net/timeline