<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Generator" content="MS Exchange Server version 16.0.18827.20164"/>
<title></title>
</head>
<body>
<!-- Converted from text/rtf format -->

<p dir="LTR"><span lang="en-us"><font face="Calibri">Hi,</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">  </font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">Not new to ntp, but for unrelated reasons I had to migrate one RPi 2 to the current RPi-OS bookworm, which</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">only offered ntpsec. </font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">T</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">here issue is that ntpq -pn fails</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">,</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> so I can’t verify time is synced.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">TL,DR; the issue with ntpq and ntpmon failing is that I’d added the -4 option to /etc/default/ntpsec</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">If ipv6 is</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">enabled, ntpd -4 will cause these failures.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">This was the response initially:</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">lora2e:/etc/ntpsec# ps uaxw | grep ntp</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">ntpsec    1822  0.0  1.7  17476 16204 ?        SLs  14:18   0:01 /usr/sbin/ntpd -p /run/ntpd.pid -c /etc/ntpsec/ntp.conf -4 -g -N -D 3 -u ntpsec:ntpsec</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">lora2e:/etc/ntpsec# netstat -apn | grep 123</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp        0      0 192.168.2.29:123        0.0.0.0:*                           1822/ntpd           </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp        0      0 192.168.4.40:123        0.0.0.0:*                           1822/ntpd           </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp        0      0 127.0.0.1:123           0.0.0.0:*                           1822/ntpd           </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp        0      0 0.0.0.0:123             0.0.0.0:*                           1822/ntpd           </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">But this fails:</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri"># ntpq -pn</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">***Socket error; probably ntpd is not running</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">Gary Miller was kind enough to respond when it looked like my subscription requests failed.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">  I ended up downloading</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">the 1.2.4 source code, which was very informative (docs as we as the code). I found the</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">source of the error message in</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">pylibs/packet.py and ended up writing a small script to duplicate</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">the parts of</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">class ControlSession</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> that were failing.  Along</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">the way I’d edited the installed packet.py with a</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">few print statements in openhost and</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">__lookuphost</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">.  When I re-tried ntpq</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">I realized that the failure was because of this block:</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">        # C implementation didn't use multiple responses, so we don't either</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">        (family, socktype, protocol, canonname, sockaddr) = res[0]</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">Turns out, res[0] is the ipv6 info for local host.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> res[1] has the working ipv4 information.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">lora2e_/home/crichmon/bin> ntpq -pn</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri"> start of openhost</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri"> self.__lookuphost: [(<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('::1', 123, 0, 0)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('127.0.0.1', 123))]</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri"> middle of openhost</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri"> end of openhost, return True</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">***Socket error; probably ntpd is not running</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">So,</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> the code</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> in</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">openhost</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"></font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">processing the return from</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">self.__lookuphost</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"></font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">doesn’t loop over the results to try the ipv4 result. </font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">Running ntpd with</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">ipv6 disabled meant that</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"></font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">the socket use/check later on failed (nobody was listening there).</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">  Once I re-enabled ipv6, ntpq and ntpmon</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">were happy again.</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">lora2e_/home/crichmon/bin> !net</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">netstat -an | grep 123</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp        0      0 192.168.2.29:123        0.0.0.0:*                          </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp        0      0 192.168.4.40:123        0.0.0.0:*                          </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp        0      0 127.0.0.1:123           0.0.0.0:*                          </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp        0      0 0.0.0.0:123             0.0.0.0:*                          </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp6       0      0 ::1:123                 :::*                               </font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">udp6       0      0 :::123                  :::*                              </font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> </span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">lora2e_/home/crichmon/bin> ntpq -pn</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">     remote                                   refid      st t when poll reach   delay   offset   jitter</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">=======================================================================================================</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">*192.168.2.17                            127.127.20.0     2 u   53   64   17   3.6956  -0.1879   0.6256</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">In case anyone thinks to ask; At one point I had disabled ipv6 for the whole computer, and that caused other</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">i</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">ssues</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">,</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> flooding /var/log/syslog,</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">so I re-enabled it.  I may try that again since I know what’s going on with ntp</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">sec</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> now.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">Which I did.  Restarted the computer with</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">ipv6.disable=1</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> in</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">/boot/firmware/cmdline.txt</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">, and -4</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">in the ntpsec args.</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">Both ntpq and ntpmon start and run as expected</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">, and no</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">message</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">flood in syslog.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">ntpd startup looks like this:</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.856236-06:00 lora2e systemd[1]: Starting ntpsec.service - Network Time Service...</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.927063-06:00 lora2e ntpd[11396]: INIT: ntpd ntpsec-1.2.2: Starting</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.928937-06:00 lora2e ntp-systemd-wrapper[11396]: 2025-06-28T14:17:01 ntpd[11396]: INIT: ntpd ntpsec-1.2.2: Starting</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.929509-06:00 lora2e ntp-systemd-wrapper[11396]: 2025-06-28T14:17:01 ntpd[11396]: INIT: Command line: /usr/sbin/ntpd -p /run/ntpd.pid -c /etc/ntpsec/ntp.conf -g -N -u ntpsec:ntpsec</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.929928-06:00 lora2e ntpd[11396]: INIT: Command line: /usr/sbin/ntpd -p /run/ntpd.pid -c /etc/ntpsec/ntp.conf -g -N -u ntpsec:ntpsec</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.931738-06:00 lora2e systemd[1]: Started ntpsec.service - Network Time Service.</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.958498-06:00 lora2e ntpd[11398]: INIT: precision = 1.354 usec (-19)</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.961133-06:00 lora2e ntpd[11398]: INIT: successfully locked into RAM</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.962150-06:00 lora2e ntpd[11398]: CONFIG: readconfig: parsing file: /etc/ntpsec/ntp.conf</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.963108-06:00 lora2e ntpd[11398]: CONFIG: restrict notrap ignored</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.964035-06:00 lora2e ntpd[11398]: CLOCK: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): good hash signature</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.964751-06:00 lora2e ntpd[11398]: CLOCK: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): loaded, expire=2025-12-28T00:00Z last=2017-01-01T00:00Z ofs=37</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.965174-06:00 lora2e ntpd[11398]: INIT: Using SO_TIMESTAMPNS(ns)</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.965611-06:00 lora2e ntpd[11398]: IO: Listen and drop on 0 v6wildcard [::]:123</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.966061-06:00 lora2e ntpd[11398]: IO: Listen and drop on 1 v4wildcard 0.0.0.0:123</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.966438-06:00 lora2e ntpd[11398]: IO: Listen normally on 2 lo 127.0.0.1:123</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.966841-06:00 lora2e ntpd[11398]: IO: Listen normally on 3 eth0 192.168.4.40:123</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.967242-06:00 lora2e ntpd[11398]: IO: Listen normally on 4 wlan0 192.168.2.29:123</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.967614-06:00 lora2e ntpd[11398]: IO: Listen normally on 5 lo [::1]:123</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.967961-06:00 lora2e ntpd[11398]: IO: Listening on routing socket on fd #22 for interface updates</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.968308-06:00 lora2e ntpd[11398]: INIT: This system has a 32-bit time_t.</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.968642-06:00 lora2e ntpd[11398]: INIT: This ntpd will fail on 2038-01-19T03:14:07Z.</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.968966-06:00 lora2e ntpd[11398]: INIT: MRU 13107 entries, 13 hash bits, 32768 bytes</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.969312-06:00 lora2e ntpd[11398]: INIT: Built with OpenSSL 3.0.9 30 May 2023, 30000090</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.969774-06:00 lora2e ntpd[11398]: INIT: Running with OpenSSL 3.0.16 11 Feb 2025, 30000100</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">2025-06-28T14:17:01.973346-06:00 lora2e ntpd[11398]: NTSc: Using system default root certificates.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">Another thing I don’t under</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">stand, is that this code</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> in</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">packet.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">open</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">host</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"> doesn’t seem to fail</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri">.  You can open and connect to a</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">socket on</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"><font face="Calibri"></font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">an IP that doesn’t exist.  I tried a non-existent IP in</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"> <font face="Calibri">my test script and none of this failed.</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">        try:</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">            self.sock = socket.socket(family, socktype, protocol)</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">        except socket.error as e:</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">            raise ControlException("Error opening %s: %s [%d]"</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">                                   % (hname, e.strerror, e.errno))</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">        print(" middle of openhost")</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">        try:</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">            self.sock.connect(sockaddr)</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">        except socket.error as e:</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">            raise ControlException("Error connecting to %s: %s [%d]"</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">                                   % (hname, e.strerror, e.errno))</font></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">        print(" end of openhost")</font></span><span lang="en-us"></span><span lang="en-us"></span><span lang="en-us"></span></p>

<p dir="LTR"><span lang="en-us"><font face="Calibri">Thx, Chris</font></span></p>
<br/>
<br/>


</body></html>