Raspberry Pi 5 HAT, with I225 2.5G Ethernet NIC over PCIe, exposes 2 SMAs from I225 for Timing Input and Output. OCP M.2 GNSS 2242 Slot
Designed by TimeAppliances in United States of America
Buy with confidence.
Our Tindie Guarantee protects your purchase from fraud. Learn More
Raspberry Pi 5 PCIe HAT with I225 NIC and GNSS Support The Raspberry Pi 5 PCIe HAT is designed to bring precision timing and advanced network functionality to the Raspberry Pi 5 platform. Leveraging…
Read More…The Raspberry Pi 5 PCIe HAT is designed to bring precision timing and advanced network functionality to the Raspberry Pi 5 platform. Leveraging the PCIe interface via an FPC connection, this HAT expands the Pi’s capabilities by integrating a high-performance I225 2.5G Ethernet NIC, precise timing inputs and outputs via SMA connectors, and a GNSS module slot for global time synchronization. It’s a powerful tool for building small form-factor PTP (Precision Time Protocol) clients or even grandmasters, ideal for time-sensitive networking applications.
A. TimeHAT
B. 40 pin spacer
C. 16-pin FPC PCIe cable
I225 2.5G Ethernet NIC
The HAT features an Intel I225 NIC connected to the Raspberry Pi 5 over the PCIe interface, delivering fast, reliable 2.5G Ethernet connectivity. This makes it suitable for applications requiring high-speed networking combined with precise timing.
2.5G Ethernet: Take full advantage of the I225’s support for faster Ethernet speeds, perfect for data-intensive and time-critical applications.
Precision Timing via SMA Ports
The HAT includes two SMA connectors for timing signal input and output:
SMA Input (SDP1 on I225): Allows the HAT to receive a 1PPS (one pulse per second) signal, which can be used as a reference to discipline the NIC’s internal clock.
SMA Output (SDP0 on I225): Provides a 1PPS output signal from the NIC, which can be used to measure precise time intervals or synchronize external equipment.
Spare U.FL (SDP3 on I225): A raw unbuffered connection from SDP3 on the I225 goes to a spare U.FL, can be used as input or output.
These timing features enable the HAT to act as either a PTP client or a PTP grandmaster, providing precise time synchronization for your network.
OCP M.2 GNSS Slot (2242 Form Factor)
The HAT includes an M.2 slot designed for OCP-compliant GNSS modules, allowing you to add GNSS functionality to your Raspberry Pi setup:
UART Connection: The GNSS module communicates with the Pi via the standard Pi HAT header.
1PPS from GNSS to SDP2 on I225: The 1PPS signal from the GNSS module connects directly to the NIC, allowing the NIC to discipline itself to GPS time. This feature is essential for building a reliable grandmaster clock, providing accurate time sourced directly from satellites.
Optional TCXO and DCTCXO Upgrade
For enhanced timing stability, the HAT supports an upgrade to a high-precision Temperature-Compensated Crystal Oscillator (TCXO). For even more advanced use cases, a Digitally Controlled TCXO (DCTCXO) can be installed, allowing software control over the clock frequency:
Improved Holdover Performance: The TCXO ensures that the NIC’s timing remains stable even during GNSS signal loss.
Digital Tuning: The DCTCXO upgrade allows for digital adjustments to the NIC’s PTP clock, making it easier to maintain precision over time.
This HAT is designed for a variety of precision timing and networking applications:
PTP Client or Grandmaster: Use the HAT to synchronize your network devices with sub-microsecond accuracy.
GNSS Disciplined Clock: Leverage the GNSS module to create a highly accurate, satellite-synchronized clock.
1PPS Signal Measurement: Measure and verify 1PPS signals for precise timekeeping in your system.
Edge Networking: Deploy the HAT in edge computing environments where precise timing is crucial.
The Raspberry Pi 5 PCIe HAT combines high-speed networking with advanced timing features in a compact, easy-to-deploy form factor. It allows makers, hobbyists, and professionals to build small yet powerful PTP solutions using the versatile Raspberry Pi 5 ecosystem. The HAT's ability to act as both a PTP client and a grandmaster, combined with GNSS support and optional TCXO upgrades, makes it a unique offering in the world of precision timing hardware.
Home Labs: Create a PTP grandmaster for your home lab with ease.
IoT Gateways: Build precise IoT gateways that require synchronized time across devices.
Research and Development: Ideal for experimenting with PTP, GNSS, and timing protocols in various network configurations.
Whether you’re building a precise timekeeping device or exploring the world of networked time protocols, the Raspberry Pi 5 PCIe HAT is your gateway to advanced timing applications. Designed to integrate seamlessly with the Raspberry Pi 5, this HAT empowers you to bring professional-grade timing and networking to your projects.
Pre-setup steps
A. Install linuxptp
sudo apt install linuxptp
B. Download testptp
cd ~ ; mkdir testptp; cd testptp
wget https://raw.githubusercontent.com/torvalds/linux/refs/heads/master/tools/testing/selftests/ptp/testptp.c
wget https://raw.githubusercontent.com/torvalds/linux/refs/heads/master/include/uapi/linux/ptp_clock.h
sudo cp ptp_clock.h /usr/include/linux/ptp_clock.h
C. Compile testptp
gcc -Wall -lrt testptp.c -o testptp
D. Install testptp
sudo cp testptp /usr/bin/
E. Verify testptp works
sudo testptp -d /dev/ptp0 -l
Should see
pi@raspberrypi:~/testptp $ sudo testptp -d /dev/ptp0 -l
name SDP0 index 0 func 0 chan 0
name SDP1 index 1 func 0 chan 0
name SDP2 index 2 func 0 chan 0
name SDP3 index 3 func 0 chan 0
Configure 1PPS Output
sudo testptp -d /dev/ptp0 -L0,2
sudo testptp -d /dev/ptp0 -p 1000000000
Read 1PPS SMA Input
A. Setup SDP1 (SMA2 , furthest from HAT header) as timestamp input
sudo testptp -d /dev/ptp0 -L1,1
B. Read timestamps, use -1 to read forever and ctrl+C to stop, using 5 here as demo. Note: I225 driver passes both edges to Linux, so both rising and falling edges will be listed. A fix for this is listed below, requires patching and building kernel
sudo testptp -d /dev/ptp0 -e 5
Discipline to 1PPS SMA Input
Access GNSS UART
A. Enable UART, but not serial console for Raspberry Pi. Use raspi-config, 3. Interface Options -> I6 Serial port.
sudo raspi-config
Login shell -> No Serial port hardware -> Yes Finish
reboot
B. Once rebooted, you'll need to link GNSS UART to a ttySX name for tools to use it
sudo ln -s /dev/ttyAMA0 /dev/ttyS10
C. Simple serial check using tio, use ctrl+t q to quit
tio -b 38400 /dev/ttyS10
Use gpsd / cgps to see GPS status
A. Install gpsd and cgps
sudo apt-get install gpsd gpsd-clients
B. Configure gpsd to point to /dev/ttyAMA0 , the GNSS UART
sudo vim /etc/default/gpsd
C. Add /dev/ttyAMA0 to GPSD_OPTIONS, and set baud rate
GPSD_OPTIONS="/dev/ttyAMA0 -s 38400"
D. Enable gpsd on startup
sudo systemctl enable gpsd
E. Start gpsd now
sudo systemctl start gpsd
F. Use cgps to see the GPS status, use ctrl+c to exit
sudo cgps
Use pygpsclient to see GPS status (requires monitor)
A. Install pygpsclient, https://github.com/semuconsulting/PyGPSClient?tab=readme-ov-file#installation
python3 -m pip install --upgrade pygpsclient
B. Once installed, run it with pygpsclient in terminal
pygpsclient
C. Select /dev/ttyS10 as serial port, set baud rate as 38400, then click USB/UART button.
Discipline to 1PPS from GNSS module
a. To have this work properly, you'll need to install the PPS in fix below
A. Install GPS and make sure it's locked properly. You should also see a blinking LED on the M.2 module if 1PPS is being generated.
B. Enable PPS input on GNSS -> I226 SDP2 pin
sudo testptp -d /dev/ptp0 -L 2,1
C. Set NIC PHC based on system time to get Time-Of-Day
sudo phc_ctl eth1 "set;" adj 37
D. Use ts2phc to discipline NIC from 1PPS
sudo ts2phc -c /dev/ptp0 -s generic --ts2phc.pin_index 2 -m -l 7
E. TODO: Figure out how to get NMEA stream direct from GPS to work with ts2phc or into NIC PHC
Fix 1PPS input to only use rising edge (Advanced)
A. Build the kernel, https://www.raspberrypi.com/documentation/computers/linux_kernel.html , commands below as of 1-10-2025
cd ~ ; mkdir kernel; cd kernel
sudo apt install git
git clone --depth=1 https://github.com/raspberrypi/linux
sudo apt install bc bison flex libssl-dev make
cd linux ; KERNEL=kernel_2712 ; make bcm2712_defconfig;
make -j6 Image.gz modules dtbs
sudo make -j6 modules_install
sudo cp /boot/firmware/$KERNEL.img /boot/firmware/$KERNEL-backup.img
sudo cp arch/arm64/boot/Image.gz /boot/firmware/$KERNEL.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/
B. Reboot and make sure kernel is installed from your build, as the steps list
C. Apply patch from TAP github. Run below commands to apply the patch and rebuild
cd ~ ; cd kernel ; cd linux
wget https://raw.githubusercontent.com/opencomputeproject/Time-Appliance-Project/refs/heads/master/Incubation/Software/I225_ppsin_fix/i225_pps_rising_edge_only_1-31-2025.patch
patch -p1 < i225_pps_rising_edge_only_1-31-2025.patch
KERNEL=kernel_2712 ; make bcm2712_defconfig;
make -j6 Image.gz modules dtbs
sudo make -j6 modules_install
sudo cp /boot/firmware/$KERNEL.img /boot/firmware/$KERNEL-backup.img
sudo cp arch/arm64/boot/Image.gz /boot/firmware/$KERNEL.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/
D. reboot and now testptp / ts2phc / any use of 1pps input on I225 will only use rising edge
No country selected, please select your country to see shipping options.
No rates are available for shipping to .
Enter your email address if you'd like to be notified when TimeHAT can be shipped to you:
Thanks! We'll let you know when the seller adds shipping rates for your country.
Shipping Rate | Tracked | Ships From | First Item | Additional Items |
---|---|---|---|---|
:
|
Buy with confidence.
Our Tindie Guarantee protects your purchase from fraud. Learn More
$24.00
Free Shipping!
$65.00
Free Shipping!
$33.95
Free Shipping!
$35.00
Free Shipping!
By clicking Register, you confirm that you accept our Terms & Conditions
We recognize our top users by making them a Tindarian. Tindarians have access to secret & unreleased features.
We look for the most active & best members of the Tindie community, and invite them to join. There isn't a selection process or form to fill out. The only way to become a Tindarian is by being a nice & active member of the Tindie community!