> does anyone know of a successful deployment of LinuxPPS with newer > kernel (4.4), ntp (4.2.8p?) and PPS over serial interface on x86-based > PCs? Or of any known issues that linuxpps has with such a configuration?
I am running ntp 4.2.8p9 successfully on a Raspberry Pi with kernel 4.4.39 and kernel-bound PPS, albeit via a GPIO input rather than a serial interface. I think your issue may be that you are building NTP with a local copy of linuxpps rather than the version now integrated into newer kernels. When I execute ./configure prior to compiling ntp, I get: configure:28418: checking for sys/timepps.h configure:28418: gcc -c -g -O2 conftest.c >&5 configure:28418: $? = 0 configure:28418: result: yes : configure:29839: checking timepps.h usability configure:29839: gcc -c -g -O2 conftest.c >&5 conftest.c:233:21: fatal error: timepps.h: No such file or directory #include <timepps.h> ^ compilation terminated. and in the generated config.h file I get: /* Define to 1 if you have the <sys/timepps.h> header file. */ #define HAVE_SYS_TIMEPPS_H 1 : /* Define to 1 if you have the <timepps.h> header file. */ /* #undef HAVE_TIMEPPS_H */ These 2 defines are used in file ntpd/ppsapi_timepps.h to select which timepps.h to include in the compile. <timepps.h> is used in preference to <sys/timepps.h> if the former exists. The <sys/timepps.h> include file (located in my system at /usr/include/sys/timepps.h) contains 2 versions of time_pps_kcbind(): ifdef PPS_KC_BIND static __inline int time_pps_kcbind(pps_handle_t handle, const int kernel_consumer, const int edge, const int tsformat) { struct pps_bind_args __bind_args; __bind_args.tsformat = tsformat; __bind_args.edge = edge; __bind_args.consumer = kernel_consumer; return ioctl(handle, PPS_KC_BIND, &__bind_args); } #else /* !PPS_KC_BIND */ static __inline int time_pps_kcbind(pps_handle_t handle, const int kernel_consumer, const int edge, const int tsformat) { /* LinuxPPS doesn't implement kernel consumer feature */ errno = EOPNOTSUPP; return -1; } #endif /* PPS_KC_BIND */ In my system, PPS_KC_BIND is defined in a file /usr/include/linux/pps.h and so the first version of the function, which does not return EOPNOTSUPP, is used. I would suggest you check that HAVE_TIMEPPS_H is not being defined in your build (i.e. the 'checking timepps.h usability' test fails) and, if it is, find your local copy of timepps.h and delete it. There is a discussion of this part of the ntp config process on this mailing list here: http://lists.ntp.org/pipermail/questions/2014-December/039424.html Good luck, Richard _______________________________________________ questions mailing list questions@lists.ntp.org http://lists.ntp.org/listinfo/questions