[chrony-users] setserial low_latency - is it necessary?

[ Thread Index | Date Index | More chrony.tuxfamily.org/chrony-users Archives ]


Hello,

I have a Garmin 18x LVC GPS receiver, which is connected to a serial RS232 port using a DB9 connector. This receiver outputs 1PPS signal on pin # 1 (DCD), in addition to the usual NMEA sentences on the transmit/receive pin. The computer is running linux mint debian edition (LMDE).

According to the setup instructions found here: https://www.rjsystems.nl/en/2100-ntpd-garmin-gps-18-lvc-gpsd.php, in step # 2 the author instructs to edit the setserial configuration file in order to configure the serial port for "low_latency", explaining that modern UARTs have internal buffers, which slow down the serial port traffic by 5-10 ms. I question whether that really is necessary.

I am not very familiar with the serial hardware design, but my understanding is that the buffer is used for receiving and transmitting data, and under certain conditions such as when the buffers become nearly full, or when there is an error, or when there has been no data sent/received for some time and it times out, the hardware asserts an interrupt, which causes the CPU to retrieve and process the buffered data. This is all in reference to the data, which is NMEA sentences in my case. Is the 1PPS signal on DCD pin buffered as well? To me it makes any sense to store the 1PPS signal in the buffer... but I am no expert in this field, so not sure, and this brings me to my questions:

  1. Is the 1PPS signal buffered if "low_latency" is NOT set?
  2. Is it necessary to configure the serial port for "low_latency" if 1PPS signal is available on the DCD pin, when the goal is to maximize the accuracy of the 1PPS signal?

I value your expert opinions, thank you in advance!

Sviatoslav



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/