Uploaded project files for the Beagleplay and BeagleBone Black to:
This project uses custom C code alongside the linux-ptp suite to achieve sub-microsecond time synchronization between a BeaglePlay Grandmaster and a BeagleBone Black Slave over Ethernet.
The BeaglePlay receives absolute time and a physical pulse-per-second signal from a u-blox GNSS receiver over serial UART and GPIO pins. It runs Linux 6.6 with the PREEMPT_RT patch, using ptp4l, phc2sys, and chrony to lock its local clock to GPS time. A custom pps-pulser.c application runs on both boards, using Linux timerfd to pulse a GPIO pin on every second boundary.
To verify precision, the Grandmaster and Slave GPIO outputs were connected to a dual-channel oscilloscope. Testing showed an internal user-space scheduling delay of 9.24 us on the local board, and an end-to-end network time offset of 65 us between the two devices. Complete SD card images, kernel configs, and build scripts are provided to easily flash and run the setup.