I use a Comet in my LAN, disconnected from the internet. I would like the Comet to be able to retrieve the time from my local NTP for log handling and 2FA. Would it be possible to add an option for users to select their NTP host/address? If not, where could I put the NTP host/address so that it persists through firmware upgrade?
This worked. I edited the ntp.conf to set the NTP server to the local NTP address. You can use the date command to check that it worked.
vi /etc/ntp.conf
server [host] iburst
ntpd -gq
date
After the recent firmware update, I had to reset the Comet. The .conf does not appear to persist. It may also be necessary to kill the existing ntpd before reloading it.
Firmware updates replace the built in files, if you edit the built in files, they will be reverted on updates.
But if you factory-reset the Comet, I would expect that everything would be reset back to defaults.
According to this you may be able to create a script like /etc/kvmd/user/scripts/S20update_ntp.sh that echos the appropriate config to the appropriate file.
Any chance we can get a feature request to add ntp server settings under the Settings → System menu?
[root@glkvm:/run]# cat /etc/ntp.conf
restrict default ignore
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
server time.cloudflare.com iburst
server time.windows.com iburst
server ntp.tencent.com iburst
restrict 0.pool.ntp.org nomodify notrap noquery
restrict 1.pool.ntp.org nomodify notrap noquery
restrict 2.pool.ntp.org nomodify notrap noquery
restrict 3.pool.ntp.org nomodify notrap noquery
restrict time.cloudflare.com nomodify notrap noquery
restrict time.windows.com nomodify notrap noquery
restrict ntp.tencent.com nomodify notrap noquery```
edit it by yourself
We've always wanted to avoid adding meaningless elements to the UI. I just don't see how configuring an NTP server would be useful for over 90% of users. It would only cause confusion.
Then how about allowing the setting to be picked up during DHCP using option 42.
That wouldn't add clutter. Would allow those whom have reasons of their own to provide NTP server address and not have to edit the files manually, and prevent more novice users making a miske and increasing your support load.
I manually edited the /etc/ntp.conf file to point to my NTP GPS+PPS server and rebooted GLKVM
restrict default ignore
server 192.168.69.5 iburst minpoll 10 maxpoll 12
#server 0.pool.ntp.org iburst
#server 1.pool.ntp.org iburst
#server 2.pool.ntp.org iburst
#server 3.pool.ntp.org iburst
#server time.cloudflare.com iburst
#server time.windows.com iburst
#server ntp.tencent.com iburst
restrict 192.168.69.5 nomodify notrap noquery
#restrict 0.pool.ntp.org nomodify notrap noquery
#restrict 1.pool.ntp.org nomodify notrap noquery
#restrict 2.pool.ntp.org nomodify notrap noquery
#restrict 3.pool.ntp.org nomodify notrap noquery
#restrict time.cloudflare.com nomodify notrap noquery
#restrict time.windows.com nomodify notrap noquery
#restrict ntp.tencent.com nomodify notrap noquery
When I perform a packet capture, the GLKVM continuously sends NTP requests.
08:32:20.357159 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 26770, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.42044 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969865940.089455395 (2025-10-19T12:32:20Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969865940.089455395 (2025-10-19T12:32:20Z)
08:32:20.357323 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 12062, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.42044: [bad udp cksum 0x0bdc -> 0x001c!] NTPv4, Server, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 3969865940.089455395 (2025-10-19T12:32:20Z)
Receive Timestamp: 3969865940.089455395 (2025-10-19T12:32:20Z)
Transmit Timestamp: 3969865940.089455395 (2025-10-19T12:32:20Z)
Originator - Receive Timestamp: -0.000000000
Originator - Transmit Timestamp: -0.000000000
08:32:25.359476 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 26920, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.55372 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969865945.090006506 (2025-10-19T12:32:25Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969865945.090006506 (2025-10-19T12:32:25Z)
08:32:27.354787 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 27131, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.55372 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969865947.088925007 (2025-10-19T12:32:27Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969865947.088925007 (2025-10-19T12:32:27Z)
08:32:31.357571 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 27974, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.55372 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969865951.089587410 (2025-10-19T12:32:31Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969865951.089587410 (2025-10-19T12:32:31Z)
08:32:31.357803 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 49665, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.55372: [bad udp cksum 0x0bdc -> 0xd748!] NTPv4, Server, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 3969865951.089587410 (2025-10-19T12:32:31Z)
Receive Timestamp: 3969865951.089587410 (2025-10-19T12:32:31Z)
Transmit Timestamp: 3969865951.089587410 (2025-10-19T12:32:31Z)
Originator - Receive Timestamp: -0.000000000
Originator - Transmit Timestamp: -0.000000000
08:32:36.359644 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 28817, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.33116 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969865956.090086599 (2025-10-19T12:32:36Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969865956.090086599 (2025-10-19T12:32:36Z)
08:32:38.353766 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 29261, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.33116 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969865958.088725937 (2025-10-19T12:32:38Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969865958.088725937 (2025-10-19T12:32:38Z)
Even when I disable to daemon the GLKVM still sends out NTP requests.
[root@glkvm:~]# sh /etc/init.d/S49ntp stop
Stopping ntpd: OK
[root@glkvm:~]# ps -ef | grep -i ntp
root 300 1635 0 08:35 pts/0 00:00:00 grep -i ntp
08:36:27.353879 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 61055, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.35001 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969866187.089426059 (2025-10-19T12:36:27Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969866187.089426059 (2025-10-19T12:36:27Z)
08:36:29.351801 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 61620, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.35001 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969866189.088947825 (2025-10-19T12:36:29Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969866189.088947825 (2025-10-19T12:36:29Z)
08:36:33.355240 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 62458, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.35001 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969866193.089769950 (2025-10-19T12:36:33Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969866193.089769950 (2025-10-19T12:36:33Z)
08:36:33.355422 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 5340, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.35001: [bad udp cksum 0x0bdc -> 0x4062!] NTPv4, Server, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 3969866193.089769950 (2025-10-19T12:36:33Z)
Receive Timestamp: 3969866193.089769950 (2025-10-19T12:36:33Z)
Transmit Timestamp: 3969866193.089769950 (2025-10-19T12:36:33Z)
Originator - Receive Timestamp: -0.000000000
Originator - Transmit Timestamp: -0.000000000
08:36:38.351975 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 63465, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.37914 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969866198.089014647 (2025-10-19T12:36:38Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969866198.089014647 (2025-10-19T12:36:38Z)
08:36:40.352523 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 63800, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.37914 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969866200.089152948 (2025-10-19T12:36:40Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969866200.089152948 (2025-10-19T12:36:40Z)
08:36:44.355088 94:83:c4:bb:17:1f > 64:62:66:21:c8:41, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 64885, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.37914 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3969866204.089763663 (2025-10-19T12:36:44Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3969866204.089763663 (2025-10-19T12:36:44Z)
08:36:44.355257 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 60422, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.37914: [bad udp cksum 0x0bdc -> 0x7149!] NTPv4, Server, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 3969866204.089763663 (2025-10-19T12:36:44Z)
Receive Timestamp: 3969866204.089763663 (2025-10-19T12:36:44Z)
Transmit Timestamp: 3969866204.089763663 (2025-10-19T12:36:44Z)
Originator - Receive Timestamp: -0.000000000
Originator - Transmit Timestamp: -0.000000000
I have KOD packets enabled on my NTP server, which the GLKVM does not honor. I also have my NTP server defined on my DHCP server.
All my other clients play correctly with my NTP server.
08:51:36.011148 88:12:ac:c1:b7:11 > 64:62:66:21:c8:40, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 34774, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.32.123 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: (0), Stratum 2 (secondary reference), poll 10 (1024s), precision -24
Root Delay: 0.005599, Root dispersion: 0.039306, Reference-ID: 0xc0a84505
Reference Timestamp: 3969866019.016867807 (2025-10-19T12:33:39Z)
Originator Timestamp: 3969866019.010926630 (2025-10-19T12:33:39Z)
Receive Timestamp: 3969866019.016867807 (2025-10-19T12:33:39Z)
Transmit Timestamp: 3969867096.010394833 (2025-10-19T12:51:36Z)
Originator - Receive Timestamp: +0.005941177
Originator - Transmit Timestamp: +1076.999468203
08:51:36.011289 64:62:66:21:c8:40 > 88:12:ac:c1:b7:11, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 44975, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.32.123: [bad udp cksum 0x0bc0 -> 0x58c8!] NTPv4, Server, length 48
Leap indicator: (0), Stratum 1 (primary reference), poll 10 (1024s), precision -22
Root Delay: 0.000000, Root dispersion: 0.000991, Reference-ID: GPS^@
Reference Timestamp: 3969867095.885608366 (2025-10-19T12:51:35Z)
Originator Timestamp: 3969867096.010394833 (2025-10-19T12:51:36Z)
Receive Timestamp: 3969867096.011181399 (2025-10-19T12:51:36Z)
Transmit Timestamp: 3969867096.011253227 (2025-10-19T12:51:36Z)
Originator - Receive Timestamp: +0.000786565
Originator - Transmit Timestamp: +0.000858393
Either I have something configured incorrectly on the GLKVM, or the GLKVM is using some other configuration file other than /etc/ntp.conf or a there is another NTP daemon running. Either way, it seems like the GLKVM is not playing well with others and polluting the network with NTP requests. I have tried turning off the NTP daemon, using NTPDATE 192.168.69.5 to update the clock, then reenabling the NTP daemon. I also notice the NTPQ command is not available to check which servers the GLKVM is using and their status.
Update:
Not sure if this is something, but appears GLKVM might be using connman.
[root@glkvm:~]# connmanctl technologies
/net/connman/technology/ethernet
Name = Wired
Type = ethernet
Powered = True
Connected = True
Tethering = False
TetheringFreq = 2412
Timeservers list is blank.
[root@glkvm:/usr/sbin]# connmanctl clock
Time = 1760879356
TimeUpdates = auto
TimezoneUpdates = auto
Timeservers = [ ]
TimeserverSynced = False
There is an extra “;” in the timeservers entry
[root@glkvm:/etc/kvmd/user/connman/ethernet_9483c4bb171f_cable]# cat settings
[ethernet_9483c4bb171f_cable]
Name=Wired
AutoConnect=true
Modified=1969-12-31T20:00:16Z
IPv4.method=dhcp
IPv4.DHCP.LastAddress=192.168.69.60
IPv6.method=auto
IPv6.privacy=disabled
Timeservers=192.168.69.5;
Update 2:
I had to disable the ntp daemon, remove the iburst option, restart my NTP server to clean any cashed rate limit exceedance, manually run the ntpdate 192.168.69.5 command to sync the GLKVM clock, then reenable the ntp daemon. That’s the only way I could stoop the GLKVM to stop continuously sending NTP requests.
[root@glkvm:~]# connmanctl clock
Time = 1760886761
TimeUpdates = auto
TimezoneUpdates = auto
Timeservers = [ ]
TimeserverSynced = True
But as soon as I reboot the GLKVM, the clock is not synchronized and the GLKVM continuously sends NTP requests.
[root@glkvm:~]# connmanctl clock
Time = 1760887113
TimeUpdates = auto
TimezoneUpdates = auto
Timeservers = [ ]
TimeserverSynced = False
So it seems like the GLKVM continuously sends NTP requests (every 2 seconds) if the GLKVM clock is not synchronized yet, which the NTP sever will detect rate limit exceedance and send KOD. This is even with the NTP daemon not running. Seems like a bug in the GLKVM implementation of NTP.
BACKGROUND
During initialization, CONNMAND daemon is sending repeated NTP requests every 2 seconds until the clock in synchronized. Unfortunately, CONNMAND does not honor KOD responses from the NTP server. The CONNMAND daemon uses a random source port
At the same time, the NTPD daemon is also sending NTP iburst requests followed by any polling rate specified in the /etc/ntp.conf file, but because the CONNMAND continuously sends NTP requests, the NTP sever will keep replying with KOD responses. The NTPD daemon uses source port 123
So there are basically two daemons sending NTP requests, which results in neither being able to synchronize the clock.
WHY IS THIS IMPORTANT?
- The default behavior will result in bombarding public NTP servers.
- If you do not have a firewall rule to block outbound NTP requests to public NTP servers, it may result in your IP getting blocked.
- The default behavior results in unnecessary additional network traffic.
- It is important for clocks to all be synchronized if you are trying to correlate logs from multiple sources.
HOW TO MITIGATE THE PROBLEM
Unfortunately, the version of IPTABLES included in GLKVM does not support rate limiting.
- Disable CONNMAND time sync by adding TimeUpdates=manual to the /etc/kvmd/user/connman/settings file.
[global]
OfflineMode=false
TimeUpdates=manual
- Create a S20update_ntp.sh with your preferred NTP severs in the /etc/kvmd/user/scripts folder. Since I do not know for sure if the CONNMAND settings persist on firmware upgrade, I added an IPTABLES rule to block NTP requests not originating from port 123
#! /bin/sh
echo "server 192.168.69.5 iburst minpoll 6 maxpoll 8" > /etc/ntp.conf
iptables -A OUTPUT -p udp --dport 123 ! --sport 123 -j DROP
- Make sure the file has execute permissions
chmod a+x S20update_ntp.sh
- reboot
reboot
END RESULT
The end result is CONNMAND daemon will no longer bombard the NTP server during initialization, and the NTPD daemon will send the normal iburst NTP requests followed by what ever polling rate you specify.
OBJECTIVE EVIDENCE
You can see the NTPD daemon initially reports the clock is unsynchronized, stratum 0, and populates the Timestamps with zeros.
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -20
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3970467044.679772961 (2025-10-26T11:30:44Z)
Once the NTPD daemon has synchronize the clock, it will report as synchronized, stratum 2, and start populating the Timestamps
Leap indicator: (0), Stratum 2 (secondary reference), poll 6 (64s), precision -20
Root Delay: 0.001037, Root dispersion: 0.940368, Reference-ID: 0xc0a84505
Reference Timestamp: 3970467050.680706213 (2025-10-26T11:30:50Z)
Originator Timestamp: 3970467050.678397202 (2025-10-26T11:30:50Z)
Receive Timestamp: 3970467050.680706213 (2025-10-26T11:30:50Z)
Transmit Timestamp: 3970467052.679576588 (2025-10-26T11:30:52Z)
07:30:44.678563 94:83:c4:bb:17:1f > 64:62:66:21:c8:40, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 47664, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.123 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -20
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3970467044.679772961 (2025-10-26T11:30:44Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3970467044.679772961 (2025-10-26T11:30:44Z)
07:30:44.678713 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 52989, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.123: [bad udp cksum 0x0bdc -> 0xfb8a!] NTPv4, Server, length 48
Leap indicator: (0), Stratum 1 (primary reference), poll 6 (64s), precision -22
Root Delay: 0.000000, Root dispersion: 0.001068, Reference-ID: GPS^@
Reference Timestamp: 3970467039.029292630 (2025-10-26T11:30:39Z)
Originator Timestamp: 3970467044.679772961 (2025-10-26T11:30:44Z)
Receive Timestamp: 3970467044.678601183 (2025-10-26T11:30:44Z)
Transmit Timestamp: 3970467044.678668587 (2025-10-26T11:30:44Z)
Originator - Receive Timestamp: -0.001171777
Originator - Transmit Timestamp: -0.001104373
07:30:46.678402 94:83:c4:bb:17:1f > 64:62:66:21:c8:40, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 48074, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.123 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -20
Root Delay: 0.000000, Root dispersion: 0.000030, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 3970467044.678668587 (2025-10-26T11:30:44Z)
Receive Timestamp: 3970467044.680723079 (2025-10-26T11:30:44Z)
Transmit Timestamp: 3970467046.679646618 (2025-10-26T11:30:46Z)
Originator - Receive Timestamp: +0.002054491
Originator - Transmit Timestamp: +2.000978031
07:30:46.678566 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 63801, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.123: [bad udp cksum 0x0bdc -> 0x2a27!] NTPv4, Server, length 48
Leap indicator: (0), Stratum 1 (primary reference), poll 6 (64s), precision -22
Root Delay: 0.000000, Root dispersion: 0.001098, Reference-ID: GPS^@
Reference Timestamp: 3970467039.029292630 (2025-10-26T11:30:39Z)
Originator Timestamp: 3970467046.679646618 (2025-10-26T11:30:46Z)
Receive Timestamp: 3970467046.678433444 (2025-10-26T11:30:46Z)
Transmit Timestamp: 3970467046.678502132 (2025-10-26T11:30:46Z)
Originator - Receive Timestamp: -0.001213174
Originator - Transmit Timestamp: -0.001144486
07:30:48.678320 94:83:c4:bb:17:1f > 64:62:66:21:c8:40, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 48384, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.123 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -20
Root Delay: 0.000000, Root dispersion: 0.000061, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 3970467046.678502132 (2025-10-26T11:30:46Z)
Receive Timestamp: 3970467046.680729474 (2025-10-26T11:30:46Z)
Transmit Timestamp: 3970467048.679600463 (2025-10-26T11:30:48Z)
Originator - Receive Timestamp: +0.002227341
Originator - Transmit Timestamp: +2.001098331
07:30:48.678493 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 19453, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.123: [bad udp cksum 0x0bdc -> 0xdc86!] NTPv4, Server, length 48
Leap indicator: (0), Stratum 1 (primary reference), poll 6 (64s), precision -22
Root Delay: 0.000000, Root dispersion: 0.001007, Reference-ID: GPS^@
Reference Timestamp: 3970467047.029311995 (2025-10-26T11:30:47Z)
Originator Timestamp: 3970467048.679600463 (2025-10-26T11:30:48Z)
Receive Timestamp: 3970467048.678365991 (2025-10-26T11:30:48Z)
Transmit Timestamp: 3970467048.678433157 (2025-10-26T11:30:48Z)
Originator - Receive Timestamp: -0.001234472
Originator - Transmit Timestamp: -0.001167306
07:30:50.678291 94:83:c4:bb:17:1f > 64:62:66:21:c8:40, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 48603, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.123 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -20
Root Delay: 0.000000, Root dispersion: 0.000091, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 3970467048.678433157 (2025-10-26T11:30:48Z)
Receive Timestamp: 3970467048.680586726 (2025-10-26T11:30:48Z)
Transmit Timestamp: 3970467050.679597376 (2025-10-26T11:30:50Z)
Originator - Receive Timestamp: +0.002153569
Originator - Transmit Timestamp: +2.001164219
07:30:50.678443 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 45525, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.123: [bad udp cksum 0x0bdc -> 0xb671!] NTPv4, Server, length 48
Leap indicator: (0), Stratum 1 (primary reference), poll 6 (64s), precision -22
Root Delay: 0.000000, Root dispersion: 0.001037, Reference-ID: GPS^@
Reference Timestamp: 3970467047.029311995 (2025-10-26T11:30:47Z)
Originator Timestamp: 3970467050.679597376 (2025-10-26T11:30:50Z)
Receive Timestamp: 3970467050.678331008 (2025-10-26T11:30:50Z)
Transmit Timestamp: 3970467050.678397202 (2025-10-26T11:30:50Z)
Originator - Receive Timestamp: -0.001266367
Originator - Transmit Timestamp: -0.001200174
07:30:52.679069 94:83:c4:bb:17:1f > 64:62:66:21:c8:40, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 49056, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.123 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: (0), Stratum 2 (secondary reference), poll 6 (64s), precision -20
Root Delay: 0.001037, Root dispersion: 0.940368, Reference-ID: 0xc0a84505
Reference Timestamp: 3970467050.680706213 (2025-10-26T11:30:50Z)
Originator Timestamp: 3970467050.678397202 (2025-10-26T11:30:50Z)
Receive Timestamp: 3970467050.680706213 (2025-10-26T11:30:50Z)
Transmit Timestamp: 3970467052.679576588 (2025-10-26T11:30:52Z)
Originator - Receive Timestamp: +0.002309011
Originator - Transmit Timestamp: +2.001179386
:
BAD NEWS
Looks like 1.7.0r2 removed the NTPD daemon altogether, so you have to use CONNMAND to sync the clock. I think this aligns with the developer feedback posted on my GitHub Issue
GOOD NEWS
Because there are no longer two daemons running trying to sync the clock, forcing the NTP server to respond with KOD, CONNMAND can sync the clock.
MITIGATION UPDATES
If you implemented my suggested mitigation above, you have to configure CONNMAND to auto and remove the IPTABLES rule that blocks NTP requests not originating from port 123
/etc/kvmd/user/connman/settings
[global]
OfflineMode=false
TimeUpdates=auto
/etc/kvmd/user/scripts/S20update_ntp.sh
#! /bin/sh
echo "server 192.168.69.5 iburst minpoll 6 maxpoll 8" > /etc/ntp.conf
#iptables -A OUTPUT -p udp --dport 123 ! --sport 123 -j DROP
UNKNOWN
CONNMAND is not using public NTP servers in my case, so not exactly sure where it is getting my local NTP server IP from. Although, I do have my local NTP server defined in my pfSense DHCP server, so perhaps it is retrieving it from there.
connmanctl clock
Time = 1762857000
TimeUpdates = auto
TimezoneUpdates = auto
Timeservers = [ ]
TimeserverSynced = True
05:46:09.352740 94:83:c4:bb:17:1f > 64:62:66:21:c8:40, ethertype IPv4 (0x0800), length 90: (tos 0x10, ttl 64, id 46095, offset 0, flags [DF], proto UDP (17), length 76)
192.168.69.60.41179 > 192.168.69.5.123: [udp sum ok] NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 10 (1024s), precision 0
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3971846769.085080508 (2025-11-11T10:46:09Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3971846769.085080508 (2025-11-11T10:46:09Z)
05:46:09.352956 64:62:66:21:c8:40 > 94:83:c4:bb:17:1f, ethertype IPv4 (0x0800), length 90: (tos 0xb8, ttl 64, id 16565, offset 0, flags [none], proto UDP (17), length 76)
192.168.69.5.123 > 192.168.69.60.41179: [bad udp cksum 0x0bdc -> 0xfc5e!] NTPv4, Server, length 48
Leap indicator: (0), Stratum 1 (primary reference), poll 10 (1024s), precision -22
Root Delay: 0.000000, Root dispersion: 0.001083, Reference-ID: GPS^@
Reference Timestamp: 3971846762.881682391 (2025-11-11T10:46:02Z)
Originator Timestamp: 3971846769.085080508 (2025-11-11T10:46:09Z)
Receive Timestamp: 3971846769.352830248 (2025-11-11T10:46:09Z)
Transmit Timestamp: 3971846769.352905782 (2025-11-11T10:46:09Z)
Originator - Receive Timestamp: +0.267749740
Originator - Transmit Timestamp: +0.267825274
If your DHCP options specify an NTP server, ConnMan should use the one provided by DHCP. Otherwise, it will use these fallback servers shown in the image.
I tested this on my Comet. DHCP-provided Timeserver does not show up in the connmanctl output.
