ntpd+gpsd problémák Raspberry PI-vel

Fórumok

Kedves Fórumozók!

5-6 éve építettem magamnak pár guide (1, 2) alapján, akkor még SlackwareARM 14.1 alapokon.
Mivel az a verzió már egy ideje EOL, így gondoltak itt lenne az ideje átállni a még támogatott 14.2-es verzióra. (A SlackwareARM -current-je nem működik már Raspberry PI 1-gyel.)

A konstrukció (egy GPS vevővel és elvezetett PPS erekkel) egészen jól működött eddig, azonban most az újratelepítés után látszólag nem működik a gpsd által átadandó idő, az ntpd-ben.
Annyi kiegészítés még szükséges, hogy az ntpd-t forrásból kell újraforgatnom, hogy legyen benne pps támogatás (--enable-ATOM), és a gpsd-t is nekem kellett fordítani. A PPS jel a GPS modulból jön, a szükséges kernel támogatás révén, a /dev/pps0 eszközfájlon keresztül, amit az ntpd közvetlenül használ.
Hogy miről is beszélek, íme az ntpd konfiguráció egy része:


# pps-gpio on /dev/pps0
server 127.127.22.0 minpoll 4 maxpoll 4
fudge 127.127.22.0 flag3 1 refid PPS  # enable kernel PLL/FLL clock discipline
# gpsd shared memory clock
server 127.127.28.0 minpoll 4 maxpoll 4 noselect
fudge 127.127.28.0 time1 0.000 flag1 1 refid GPSD stratum 15

#
# NTP server (list one or more) to synchronize with:
server ntp0.as34288.net minpoll 5 maxpoll 5 iburst prefer
server clock1.infonet.ee minpoll 5 maxpoll 5 iburst prefer
server ntps1-0.cs.tu-berlin.de minpoll 5 maxpoll 5 iburst
pool hu.pool.ntp.org minpoll 5 maxpoll 5 iburst
server 0.hu.pool.ntp.org minpoll 5 maxpoll 5 iburst
server 1.hu.pool.ntp.org minpoll 5 maxpoll 5 iburst
server 2.hu.pool.ntp.org minpoll 5 maxpoll 5 iburst
server 0.ru.pool.ntp.org minpoll 5 maxpoll 5 iburst
server 0.de.pool.ntp.org minpoll 5 maxpoll 5 iburst

Ez pedig az ntpq parancs kimenete:


root@ntp:~# ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
o127.127.22.0    .PPS.            0 l   12   16  377    0.000    0.011   0.004
 127.127.28.0    .GPSD.          15 l    -   16    0    0.000    0.000   0.000
 hu.pool.ntp.org .POOL.          16 p    -   32    0    0.000    0.000   0.004
*81.94.123.16    85.158.25.74     2 u   10   32  367   32.317    1.183   1.443
+212.7.1.131     .PPS0.           1 u    9   32  377   48.174    7.849   1.044
+130.149.17.21   .PPS.            1 u   15   32  377   39.092    2.429   1.243
-62.112.193.9    193.225.126.78   3 u    7   32  377   10.028    5.069   1.442
-82.141.152.3    193.6.222.47     3 u   25   32  377   15.423    2.445   1.565
+62.112.195.26   84.2.44.19       3 u   21   32  377    9.841    2.985   1.730
-85.21.78.8      89.109.251.21    2 u   12   32  377   66.787    5.531   0.833
+94.130.184.193  192.53.103.104   2 u   16   32  377   29.090    3.722   0.357

Ahogy látszik, az GPSD-s időforrás reach értéke 0, vagyis az ntpd-nek egyszer sem sikerült lekérdeznie.
A gpsd láthatóan fut, és szolgáltatja azokat az osztott memóriablokkokat (shared memory) ahonnan az ntpd le tudná kérdezni.
Meglepő módon az ntp meg is nyitja az egyik ilyen blokkot, de a reach ennek ellenére 0.


root@ntp:/usr/src# cat /etc/default/gpsd 
# Default settings for gpsd.
# Please do not edit this file directly - use `dpkg-reconfigure gpsd' to
# change the options.
START_DAEMON="true"
GPSD_OPTIONS=""
DEVICES="/dev/ttyAMA0"
USBAUTO="true"
GPSD_SOCKET="/var/run/gpsd.sock"
root@ntp:/usr/src# ps auxfw | grep -E "(ntp|gps)d"
nobody   31990  0.0  0.5   4756  2768 ?        S<s  jan26   0:00 /usr/local/sbin/gpsd -P /var/run/gpsd.pid -F /var/run/gpsd.sock /dev/ttyAMA0
root     32229  0.0  0.8   7612  4296 ?        Ss   jan26   0:37 /usr/sbin/ntpd -g -p /var/run/ntpd.pid
root@ntp:/usr/src# ipcs -m

------- Osztott memóriaszegmensek --------
kulcs      o.m.-az    tulajdonos jogok      bájt      csat.szám állapot    
0x4e545030 0          root       600        80         2                       
0x4e545031 32769      root       600        80         1                       
0x4e545032 65538      root       666        80         1                       
0x4e545033 98307      root       666        80         1                       
0x4e545034 131076     root       666        80         1                       
0x4e545035 163845     root       666        80         1                       
0x4e545036 196614     root       666        80         1                       
0x4e545037 229383     root       666        80         1                       
0x47505344 262152     root       666        8928       1                       
root@ntp:/usr/src# lsof | grep gpsd
gpsd      31990         nobody  cwd       DIR      179,3     4096          2 /
gpsd      31990         nobody  rtd       DIR      179,3     4096          2 /
gpsd      31990         nobody  txt       REG      179,3   450664     187572 /usr/local/sbin/gpsd
gpsd      31990         nobody  mem       REG      179,3    51948      39099 /lib/libnss_nis-2.23.so
gpsd      31990         nobody  mem       REG      179,3    97804      39096 /lib/libnsl-2.23.so
gpsd      31990         nobody  mem       REG      179,3    41152      39097 /lib/libnss_compat-2.23.so
gpsd      31990         nobody  mem       REG      179,3    47972      39098 /lib/libnss_files-2.23.so
gpsd      31990         nobody  mem       REG      179,3   122012         61 /lib/libudev.so.1.6.3
gpsd      31990         nobody  mem       REG      179,3  1624056      39100 /lib/libc-2.23.so
gpsd      31990         nobody  mem       REG      179,3   131264      10577 /lib/libpthread-2.23.so
gpsd      31990         nobody  mem       REG      179,3   258196     131860 /usr/lib/libdbus-1.so.3.14.6
gpsd      31990         nobody  mem       REG      179,3    37008      10579 /lib/librt-2.23.so
gpsd      31990         nobody  mem       REG      179,3   725028      10566 /lib/libm-2.23.so
gpsd      31990         nobody  mem       REG      179,3   124484     194676 /usr/lib/libbluetooth.so.3.18.16
gpsd      31990         nobody  mem       REG      179,3    78052     130400 /usr/lib/libusb-1.0.so.0.1.0
gpsd      31990         nobody  mem       REG      179,3   163624      39124 /lib/ld-2.23.so
gpsd      31990         nobody  DEL       REG        0,5              262152 /SYSV47505344
gpsd      31990         nobody  DEL       REG        0,5              229383 /SYSV4e545037
gpsd      31990         nobody  DEL       REG        0,5              196614 /SYSV4e545036
gpsd      31990         nobody  DEL       REG        0,5              163845 /SYSV4e545035
gpsd      31990         nobody  DEL       REG        0,5              131076 /SYSV4e545034
gpsd      31990         nobody  DEL       REG        0,5               98307 /SYSV4e545033
gpsd      31990         nobody  DEL       REG        0,5               65538 /SYSV4e545032
gpsd      31990         nobody  DEL       REG        0,5               32769 /SYSV4e545031
gpsd      31990         nobody  DEL       REG        0,5                   0 /SYSV4e545030
gpsd      31990         nobody    0u      CHR        1,3      0t0       4426 /dev/null
gpsd      31990         nobody    1u      CHR        1,3      0t0       4426 /dev/null
gpsd      31990         nobody    2u      CHR        1,3      0t0       4426 /dev/null
gpsd      31990         nobody    3u     unix 0xdc0ce4c0      0t0     198706 /var/run/gpsd.sock type=STREAM
gpsd      31990         nobody    4u     IPv4     198709      0t0        TCP localhost:2947 (LISTEN)
gpsd      31990         nobody    5u     IPv6     198710      0t0        TCP [::1]:2947 (LISTEN)
gpsd      31990         nobody    6u     unix 0xdc0ce980      0t0     198711 type=STREAM
root@ntp:/usr/src# lsof | grep ntpd
ntpd      32229           root  cwd       DIR      179,3     4096         12 /root
ntpd      32229           root  rtd       DIR      179,3     4096          2 /
ntpd      32229           root  txt       REG      179,3   638344     187641 /usr/sbin/ntpd
ntpd      32229           root  mem       REG      179,3   101416      10578 /lib/libresolv-2.23.so
ntpd      32229           root  mem       REG      179,3    26040      10571 /lib/libnss_dns-2.23.so
ntpd      32229           root  mem       REG      179,3    47972      39098 /lib/libnss_files-2.23.so
ntpd      32229           root  mem       REG      179,3   124816     130416 /usr/lib/libgcc_s.so.1
ntpd      32229           root  mem       REG      179,3    13936      39101 /lib/libdl-2.23.so
ntpd      32229           root  mem       REG      179,3  1624056      39100 /lib/libc-2.23.so
ntpd      32229           root  mem       REG      179,3   131264      10577 /lib/libpthread-2.23.so
ntpd      32229           root  mem       REG      179,3  1743724      10721 /lib/libcrypto.so.1.0.0
ntpd      32229           root  mem       REG      179,3   390668      10722 /lib/libssl.so.1.0.0
ntpd      32229           root  mem       REG      179,3   725028      10566 /lib/libm-2.23.so
ntpd      32229           root  mem       REG      179,3    14600         77 /lib/libcap.so.2.22
ntpd      32229           root  DEL       REG        0,5                   0 /SYSV4e545030
ntpd      32229           root  mem       REG      179,3   163624      39124 /lib/ld-2.23.so
ntpd      32229           root  mem       REG      179,3    14028         65 /lib/libattr.so.1.1.0
ntpd      32229           root    0r      CHR        1,3      0t0       4426 /dev/null
ntpd      32229           root    1r      CHR        1,3      0t0       4426 /dev/null
ntpd      32229           root    2r      CHR        1,3      0t0       4426 /dev/null
ntpd      32229           root    3u     unix 0xdc0cf0a0      0t0     199471 type=DGRAM
ntpd      32229           root    4u      CHR      244,0      0t0       6243 /dev/pps0
ntpd      32229           root   16u     IPv6     199476      0t0        UDP *:ntp 
ntpd      32229           root   17u     IPv4     199479      0t0        UDP *:ntp 
ntpd      32229           root   18u     IPv4     199484      0t0        UDP localhost:ntp 
ntpd      32229           root   19u     IPv4     199486      0t0        UDP ntp.lan:ntp 
ntpd      32229           root   20u     IPv6     199488      0t0        UDP [::1]:ntp 
ntpd      32229           root   21u     IPv6     199490      0t0        UDP [fe80::ba27:ebff:fe97:56b7]:ntp 
ntpd      32229           root   22u  netlink                 0t0     199491 ROUTE
root@ntp:/usr/src#

Ahogy láthattuk fentebb, az ntpd root-ként fut, és ennek ellenére az egyik osztott memóriaterületre reject-et kapott a hozzáférési kísérlete. (Legalábbis szerintem ezt jelentik ez a kimenet.)


root@ntp:/usr/src# ntpq -c peer -c as -c rl
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
oPPS(0)          .PPS.            0 l    4   16  377    0.000    0.008   0.004
 SHM(0)          .GPSD.          15 l    -   16    0    0.000    0.000   0.000
 hu.pool.ntp.org .POOL.          16 p    -   32    0    0.000    0.000   0.004
*ntp0.as34288.ne 85.158.25.74     2 u   11   32  377   32.965    1.413   1.389
+clock1.infonet. .PPS0.           1 u    4   32  377   48.560    7.746   1.775
+ntps1-0.eecsit. .PPS.            1 u   17   32  377   38.581    2.312   2.727
-quaen.fradi.hu  193.225.126.78   3 u    9   32  377   10.509    4.858   1.932
-www.kapos-net.h 193.6.222.47     3 u   26   32  377   15.126    1.992   2.301
+zearla.netinfor 84.2.44.19       3 u   24   32  377   10.268    3.051   2.964
-ftpshare1.corbi 192.36.133.17    2 u   14   32  377   67.035    5.796   1.155
+nbg01.muxx.net  192.53.103.104   2 u   14   32  377   28.883    3.459   1.729

ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 38258  973a   yes   yes  none  pps.peer    sys_peer  3
  2 38259  802b   yes    no  none    reject clock_alarm  2
  3 38260  8811   yes  none  none    reject    mobilize  1
  5 38262  963a   yes   yes  none  sys.peer    sys_peer  3
  6 38263  9424   yes   yes  none candidate   reachable  2
  7 38264  9424   yes   yes  none candidate   reachable  2
  8 38265  9324   yes   yes  none   outlier   reachable  2
  9 38266  933a   yes   yes  none   outlier    sys_peer  3
 10 38267  9424   yes   yes  none candidate   reachable  2
 11 38268  9324   yes   yes  none   outlier   reachable  2
 12 38269  9424   yes   yes  none candidate   reachable  2
associd=0 status=0115 leap_none, sync_pps, 1 event, clock_sync,
version="ntpd 4.2.8p8@1.3265-o Sun Jan 20 17:03:24 UTC 2019 (1)",
processor="armv6l", system="Linux/4.14.56-arm", leap=00, stratum=1,
precision=-18, rootdelay=0.000, rootdisp=1.090, refid=PPS,
reftime=dff86594.2c7b2bc0  Sun, Jan 27 2019 18:15:00.173,
clock=dff8659a.c9727f7c  Sun, Jan 27 2019 18:15:06.786, peer=38258, tc=4,
mintc=3, offset=0.008282, frequency=-60.195, sys_jitter=0.003815,
clk_jitter=0.004, clk_wander=0.002
root@ntp:/usr/src#

Próbáltam már pár kört google-özni a probléma megoldása végett, de egyik ötlet sem segített:

  • flags1 1-re állítása
  • az ntpd-t futtató user ellenőrzése (másutt nem root-ként fut, így nem fér hozzá az osztott memóriához)

Most a közösséghez fordulnék, hátha találkozott már valaki hasonló problémával.

Köszi!
János

Hozzászólások

senki?
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 14.2 | 4.4.37-janos

a google nem segitett?

http://www.catb.org/gpsd/gpsd-time-service-howto.html
https://blog.rapid7.com/2015/07/27/adding-a-gps-time-source-to-ntpd/

az st oszlop stratum-t jelent az ntpq kimeneten ahol a 0 maga az ora. gondolom itt a gps orakent mukodik:
https://ntpserver.files.wordpress.com/2008/09/clip_image002.jpg

esetleg a fentebb linkelt rendszerrel nem tudod kiprobalni?
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/

Köszi!
Átnéztem az első link gpsd+ntpd szekcióját, és megnéztem, hogy az ottani paraméterezéssel


...
# gpsd -n /dev/ttyXX
# sleep 2
# ntpd -gN

jobban működik-e a dolog, és láss csodát, elkezdett működni:


Every 20,0s: ntpq -pn | tee --append /tmp/GPSD_Offset.txt                                                                                                                                                       ntp: Sat Feb  2 12:34:42 2019

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
o127.127.22.0    .PPS.            0 l   12   16  377    0.000   -0.021   0.004
 127.127.28.0    .GPSD.          15 l   11   16  377    0.000  -129.88   1.958
 hu.pool.ntp.org .POOL.          16 p    -   64    0    0.000    0.000   0.004
-192.168.10.1    71.80.83.0       2 u   37   64   77    0.666    4.590   0.036
*81.94.123.16    85.158.25.72     2 u   19   32  377   32.799    1.297   1.943
+212.7.1.131     .PPS0.           1 u   18   32  377   49.224    8.318   2.479
+130.149.17.21   .PPS.            1 u   18   32  377   39.534    2.813   2.008
-62.112.194.89   193.225.126.76   3 u   18   32  377   10.544    2.940   3.279
+84.2.44.19      10.20.75.140     2 u   19   32  377   11.191    0.583   2.592
+62.112.195.56   212.24.187.220   2 u   19   32  377   10.508    2.233   1.767
-37.139.41.250   130.149.17.8     2 u   21   32  377   44.329    2.608   0.400
+85.214.38.116   192.53.103.108   2 u   22   32  377   47.488   -0.354   0.292

Pedig egyik paraméter sem tűnik olyan nagy jelentőségűnek:


# gpsd --help
usage: gpsd [-b] [-D n] [-F sockfile] [-G] [-h] [-n] [-N] [-P pidfile] [-S port] device...
  Options include: 
...
  -n                        = don't wait for client connects to poll GPS
...
# ntpd --help
ntpd - NTP daemon program - Ver. 4.2.8p8
Usage:  ntpd [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \
                [ <server1> ... <serverN> ]
  Flg Arg Option-Name    Description
...
   -g no  panicgate      Allow the first adjustment to be Big
                                - may appear multiple times
...
   -N no  nice           Run at high priority

-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 14.2 | 4.4.37-janos