[LinuxPPS] Problems using Garmin 18x LVC, Debian src ntp_4.2.6.p2, NMEA ...

TomK forensic at milwpc.com
Fri Sep 17 14:29:25 CEST 2010


I figured it out. The serial card has 0.5 second delay. The NMEA driver
20 was changed slightly. I read the revised manual and set flag 1 1. I
set a custom ./configure script for the Debian ntp-4.2.6.p2-src as
follows: 

./configure --disable-all-clocks --disable-parse-clocks --enable-ATOM
--enable-SHM --enable-LOCAL-CLOCK --enable-NMEA

I didn't make a debian binary. I just built it in place and ran ntpd out
of the source directory. 

So, I've got (2) Garmin GPS 18x LVC 5m units connected to a Syba Best
Connectivity PCMCIA 4x Serial adapter on a laptop running the 2.6.34.1
kernel that includes linuxpps and the Debian testing (squeeze) ntp-src
package. 


ntpq -c rv -p

associd=0 status=041d leap_none, sync_uhf_radio, 1 event, kern,
version="ntpd 4.2.6p2 at 1.2194-o Thu Sep 16 12:15:07 UTC 2010 (1)",
processor="i686", system="Linux/2.6.34-pps", leap=00,
stratum=1, precision=-20, rootdelay=0.000, rootdisp=0.356, refid=GPS,
reftime=d03ddb54.86f44b89  Fri, Sep 17 2010  7:19:32.527,
clock=d03ddb5c.9abe695c  Fri, Sep 17 2010  7:19:40.604, peer=23568,
tc=4, mintc=3, offset=0.003, frequency=-24.042, sys_jitter=0.001,
clk_jitter=0.000, clk_wander=0.001

remote                   st t when poll reach   delay   offset  jitter
==============================================================================
oGPS_NMEA(0)             0 l    8   16  377    0.000    0.003   0.001
xGPS_NMEA(1)             0 l   39   64  377    0.000   -0.006   0.001
*thecakeisapie.n         2 u   25   64  377   32.199    1.690   0.879
+point2.adamants         3 u   58   64  377   62.112   -0.648   1.112
+clock-b.develoo         2 u   49   64  377   72.003   -3.598   1.194

ntpdc

ntpdc> kern
pll offset:           2e-06 s
pll frequency:        -24.029 ppm
maximum error:        0.005236 s
estimated error:      0 s
status:               0007  pll ppsfreq ppstime
pll time constant:    4
precision:            1e-06 s
frequency tolerance:  500 ppm
ntpdc> 

Here's the relevant lines in /etc/ntp.conf:

server 127.127.20.0 prefer minpoll 4
fudge 127.127.20.0 flag1 1 flag3 1 flag2 0 time1 0.0 time2 0.500

server 127.127.20.1
fudge 127.127.20.1 flag1 1 flag3 1 flag2 0 time1 0.0 time2 0.500

I said a prayer, and God showed me how to do it the right way. Father,
Thank You! 

> Hi Rodolfo,
> 
> Congratulations on inclusion in the kernel. Great work! I'm having a
> problem with the pristine 2.6.34.1 kernel source configured for PPS
> combined with Garmin 18x LVC with PPS on RS232 DCD pin 1, and the Debian
> src ntp package using the NMEA driver.
> 
> 
> This is a laptop using PCMCIA CardBus Quad Serial Adapter:
> 
> lspci -vvv
> 
> 04:00.0 Serial controller: Oxford Semiconductor Ltd OX16PCI954 (Quad
> 16950 UART) function 0 (Uart) (rev 01) (prog- if 06 [16950])
> Subsystem: Oxford Semiconductor Ltd Device 0000
> 
> Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-Status: Cap+ 66MHz- UDF- FastB2B+
> ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> 
> Interrupt: pin A routed to IRQ 17
> 
> Region 0: I/O ports at c000 [size=32]
> Region 1: Memory at c4000000 (32-bit, non-prefetchable) [size=4K]
> Region 2: I/O ports at c020 [size=32]
> Region 3: Memory at c4001000 (32-bit, non-prefetchable) [size=4K]
> 
> Capabilities: [40] Power Management version 2 Flags: PMEClk- DSI- D1- D2
> + AuxCurrent=0mA PME(D0+,D1-,D2+,D3hot+,D3cold-)
> 
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> 
> Kernel driver in use: serial
> 
> 
> 04:00.1 Bridge: Oxford Semiconductor Ltd OX16PCI954 (Quad 16950 UART)
> function 1 (8bit bus) (rev 01)
> Subsystem: Oxford Semiconductor Ltd Device 0000
> 
> Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> 
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> 
> Interrupt: pin A routed to IRQ 17
> 
> Region 0: I/O ports at c040 [size=32]
> Region 1: Memory at c4002000 (32-bit, non-prefetchable) [size=4K]
> Region 2: I/O ports at c060 [size=32]
> Region 3: Memory at c4003000 (32-bit, non-prefetchable) [size=4K]
> 
> Capabilities: [40] Power Management version 2
> Flags: PMEClk- DSI- D1- D2+ AuxCurrent=0mA PME(D0+,D1-,D2+,D3hot
> +,D3cold-)
> 
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> 
> Kernel driver in use: serial
> 
> setserial -g -a /dev/ttyS4
> 
> /dev/ttyS4, Line 4, UART: 16950/954, Port: 0xc000, IRQ: 17
> 	Baud_base: 115200, close_delay: 50, divisor: 0
> 	closing_wait: 3000
> 	Flags: spd_normal skip_test
> 
> setserial -g -a /dev/ttyS5
> 
> /dev/ttyS5, Line 5, UART: 16950/954, Port: 0xc008, IRQ: 17
> 	Baud_base: 115200, close_delay: 50, divisor: 0
> 	closing_wait: 3000
> 	Flags: spd_normal skip_test
> 
> 
> I run this script:
> 
> #!/bin/bash
> 
> sudo /etc/init.d/ntp stop
> 
> sudo ldattach 18 /dev/ttyS4
> sudo ldattach 18 /dev/ttyS5
> 
> sudo ln -s /dev/ttyS4 /dev/gps0
> sudo ln -s /dev/ttyS5 /dev/gps1
> 
> sudo ln -s /dev/pps0 /dev/gpspps0
> sudo ln -s /dev/pps1 /dev/gpspps1
> 
> sudo /usr/bin/ntpd -g
> 
> tail -f /var/log/messages
> 
> new PPS source serial4 at ID 
> PPS source #0 "/dev/ttyS4" added
> new PPS source serial5 at ID 1
> PPS source #0 "/dev/ttyS5" added
> 
> tail -f /var/log/ntpd.log
> 
> 0.0.0.0 c016 06 restart
> 14 Sep 20:00:47 ntpd[24461]: 0.0.0.0 c012 02 freq_set kernel -23.640 PPM
> 14 Sep 20:00:47 ntpd[24461]: GPS_NMEA(0) 802b 8b clock_event
> clk_no_reply
> 14 Sep 20:00:48 ntpd[24461]: GPS_NMEA(1) 8024 84 reachable
> 14 Sep 20:00:48 ntpd[24461]: GPS_NMEA(1) 963a 8a sys_peer
> 14 Sep 20:00:48 ntpd[24461]: 0.0.0.0 c41c 0c clock_step -2.650454 s
> 14 Sep 20:00:45 ntpd[24461]: 0.0.0.0 c414 04 freq_mode
> 14 Sep 20:00:46 ntpd[24461]: 169.229.70.183 8024 84 reachable
> 14 Sep 20:00:46 ntpd[24461]: 0.0.0.0 c418 08 no_sys_peer
> 14 Sep 20:00:47 ntpd[24461]: GPS_NMEA(0) 8034 84 reachable
> 14 Sep 20:00:47 ntpd[24461]: GPS_NMEA(0) 964a 8a sys_peer
> 14 Sep 20:00:49 ntpd[24461]: 64.6.144.6 8024 84 reachable
> 14 Sep 20:01:49 ntpd[24461]: GPS_NMEA(1) 8044 84 reachable
> 14 Sep 20:07:24 ntpd[24461]: 0.0.0.0 c428 08 no_sys_peer
> 14 Sep 21:59:34 ntpd[24461]: GPS_NMEA(0) 961a 8a sys_peer
> 14 Sep 21:59:34 ntpd[24461]: 0.0.0.0 c412 02 freq_set kernel 280.645 PPM
> 14 Sep 21:59:34 ntpd[24461]: 0.0.0.0 c41c 0c clock_step +2.169246 s
> 14 Sep 21:59:36 ntpd[24461]: 0.0.0.0 c415 05 clock_sync
> 14 Sep 21:59:36 ntpd[24461]: 64.6.144.6 8033 83 unreachable
> 14 Sep 21:59:36 ntpd[24461]: GPS_NMEA(1) 8014 84 reachable
> 14 Sep 21:59:36 ntpd[24461]: GPS_NMEA(1) 962a 8a sys_peer
> 14 Sep 21:59:36 ntpd[24461]: 0.0.0.0 c413 03 spike_detect +2.167394 s
> 14 Sep 21:59:36 ntpd[24461]: 64.6.144.6 8044 84 reachable
> 14 Sep 21:59:37 ntpd[24461]: GPS_NMEA(0) 8024 84 reachable
> 14 Sep 21:59:37 ntpd[24461]: GPS_NMEA(0) 963a 8a sys_peer
> 14 Sep 21:59:39 ntpd[24461]: 169.229.70.183 8014 84 reachable
> 14 Sep 21:59:53 ntpd[24461]: 0.0.0.0 c415 05 clock_sync
> 14 Sep 22:08:08 ntpd[24461]: 0.0.0.0 0418 08 no_sys_peer
> 
> 
> ntpq -c rv -p
> 
> associd=0 status=0018 leap_none, sync_unspec, 1 event, no_sys_peer,
> version="ntpd 4.2.6p2 at 1.2194-o Tue Sep 14 06:45:53 UTC 2010 (2)",
> processor="i686", system="Linux/2.6.34.1-pps", leap=00,
> stratum=1, precision=-19, rootdelay=0.000, rootdisp=92.948, refid=GPS,
> reftime=d03ab6d9.9290383e  Tue, Sep 14 2010 22:07:05.572,
> clock=d03ac871.271d0684  Tue, Sep 14 2010 23:22:09.152, peer=0, tc=4,
> mintc=3, offset=-9.443, frequency=171.048, sys_jitter=14.037,
> clk_jitter=13.748, clk_wander=4.329
> 
> remote                  st t when poll reach   delay   offset  jitter
> ==============================================================================
> xGPS_NMEA(0)            0 l    8   16  377    0.000  -856.17  15.785
> xGPS_NMEA(1)            0 l   25   64  377    0.000  -856.62  25.490
> xntp1                   3 u   25   64  377   72.080  -373.66  36.942
> xtriangle               2 u   60   64  177   68.474  -385.83  40.975
> 
> Something is not right! 
> 
> /usr/src/pps/ppstest /dev/pps0
>  
> trying PPS source "/dev/pps0"
> found PPS source "/dev/pps0"
> ok, found 1 source(s), now start fetching data...
> 
> source 0 - assert 1284526310.758731631, sequence: 13871 - clear
> 1284512561.252409406, sequence: 124
> 
> source 0 - assert 1284526311.758926030, sequence: 13872 - clear
> 1284512561.252409406, sequence: 124
> 
> source 0 - assert 1284526312.759120902, sequence: 13873 - clear
> 1284512561.252409406, sequence: 124
> 
> source 0 - assert 1284526313.759315161, sequence: 13874 - clear
> 1284512561.252409406, sequence: 124
> 
> source 0 - assert 1284526314.759510793, sequence: 13875 - clear
> 1284512561.252409406, sequence: 124
> 
> source 0 - assert 1284526315.759706681, sequence: 13876 - clear
> 1284512561.252409406, sequence: 124
> 
> source 0 - assert 1284526316.759901095, sequence: 13877 - clear
> 1284512561.252409406, sequence: 124
> 
> source 0 - assert 1284526317.760095568, sequence: 13878 - clear
> 1284512561.252409406, sequence: 124
> 
> source 0 - assert 1284526318.760291499, sequence: 13879 - clear
> 1284512561.252409406, sequence: 124
> 
> 
> Garmin 18x LVC are set to 200ms pps pulse width. The serial card is 8x,
> so I must set the GPS units to 38400 baud in order to communicate with
> them at 4800 baud. If I set them to 4800, programs communicate with them
> at 600 baud.
> 
> Relevant server entries in /etc/ntp.conf
> 
> server 127.127.20.0 prefer minpoll 4
> fudge 127.127.20.0 flag3 1 flag2 0 time1 0.0
> 
> server 127.127.20.1
> fudge 127.127.20.1 flag3 1 flag2 0 time1 0.0
> 
> 
> I don't really need microsecond accuracy on my laptop, but I post this
> mostly to help perfect linuxpps. If anyone has any ideas, let me know.
> The performance of this setup is clearly pretty bad, but I'm not sure
> why.
> 
> -Tom
> 




More information about the LinuxPPS mailing list