I226 Ethernet PCIe NIC with TCXO and PTM, exposes 2 SMAs from I226 for Timing Input and Output
Designed by TimeAppliances in United States of America
Buy with confidence.
Our Tindie Guarantee protects your purchase from fraud. Learn More
Announcement: TimeNIC boards are ready but I'm waiting for PCIe bracket fabrication. If you care about mechanical stability in your chassis, I recommend waiting until I have the brackets ready soon.…
Read More…The TimeNIC PCIe card is designed to bring precision timing and advanced network functionality to any platform with a PCIe slot. A small form factor PCIe NIC, the TimeNIC integrates a high-performance I226 Ethernet NIC with precise timing inputs and outputs via SMA connectors. It’s a powerful tool for building small form-factor PTP (Precision Time Protocol) clients or even grandmasters, ideal for time-sensitive networking applications.
The default BOM includes a TCXO as the oscillator behind the I226, allowing high stability timing. The specification of the TCXO used is here:
ECS-TXO53-S3-33-250-BN-TR , https://ecsxtal.com/store/pdf/ECS-TXO53-S3.pdf
A. TimeNIC
B. PCIe full height bracket (If ordered and when available)
SMA for PPS input and output
Only I226 NIC on the market with easy front panel SMAs for SDP0 and SDP1, allowing PPS input and PPS output. Allows validation of PTP and PTM performance, or injecting 1PPS from a valid source like GPS or atomic clock and then distribute that time over PTP.
TCXO
Only I226 NIC, and (probably?) cheapest PTP NIC, on the market with a TCXO backing the chipset. This high stability TCXO allows for low jitter timing distribution and stable frequency across temperature.
TimeHAT reference
Very similar design to TimeHAT, intended for Raspberry Pi 5 use case. TimeHAT is available here: https://www.tindie.com/products/timeappliances/timehat-i226-nic-with-pps-inout-for-rpi5/
Most of the description for TimeHAT also applies here, since it's at its core a I226 NIC. The main differences come in installing the kernel patch to fix PPS input.
PTM (Precision Time Measurement) over PCIe
The biggest feature this card can do that TimeHAT can not is PTM. PTM is basically PTP over PCIe, allowing you to transfer nanosecond time from the NIC to the CPU and userland code. Newer Consumer Intel CPUs (Gen 11 and newer) support PTM, as well as others.
As part of OCP TAP, we maintain a list of devices, both CPU and endpoints, that support PTM. You can find this list here: https://www.opencompute.org/wiki/PTM_Readiness
Kevin Stanton, formerly of Intel, was the architect behind PTM, and gave talks about how PTM works and what it does through OCP TAP Tech Talks. Kevin's talk about PTM is here: https://www.youtube.com/watch?v=JOucm1vjk8o , slides are here: https://docs.google.com/presentation/d/1e0Ls-H9d8yR4pjitUA0gvdg7iETZVhNe/edit?usp=sharing&ouid=104727018165459345315&rtpof=true&sd=true
You can find a list of all OCP talks, including by Kevin about PTM, here: https://www.opencompute.org/wiki/Time_Appliances_Project .
Pre-setup steps
A. Install linuxptp and utilities
sudo apt install linuxptp
sudo apt install gcc
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. Figure out which ptp interface maps to the NIC, use ethtool -T
On my system, the NIC is enp1s0, the PTP Hardware clock is the number to use with /dev/ptp0
homemachine@homemachine:~/testptp$ ethtool -T enp1s0
Time stamping parameters for enp1s0:
Capabilities:
hardware-transmit
software-transmit
hardware-receive
software-receive
software-system-clock
hardware-raw-clock
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
off
on
Hardware Receive Filter Modes:
none
all
F. Verify testptp works
sudo testptp -d /dev/ptp0 -l
Should see
homemachine@homemachine:~/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, below RJ45) 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: I226 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
a. To have this work properly, you'll need to install the PPS in kernel patch fix below
A. Verify PPS input on SMA2 using the testptp steps above
B. Set NIC PHC based on system time to get Time-Of-Day
sudo phc_ctl enp1s0 "set;" adj 37
C. Use ts2phc to disicpline NIC from 1PPS
sudo ts2phc -c /dev/ptp0 -s generic --ts2phc.pin_index 1 -m -l 7
Fix 1PPS input to only use rising edge (Advanced) (Work in Progress instructions Method 0)
Instructions detailed on Github (easier to format and read on Github): https://github.com/Time-Appliances-Project/Products/tree/main/TimeNIC
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 TimeNIC - I226 PCIe NIC with PPS In/Out and TCXO 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
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!