[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