TimeNIC — PCIe I226 NIC with SMA Timing Ports and TCXO

TimeNIC — PCIe I226 NIC with SMA Timing Ports and TCXO

$225.00
Sale price  $225.00 Regular price 
Skip to product information
TimeNIC — PCIe I226 NIC with SMA Timing Ports and TCXO

TimeNIC — PCIe I226 NIC with SMA Timing Ports and TCXO

$225.00
Sale price  $225.00 Regular price 

TimeNIC — PCIe I226 NIC with SMA Timing Ports and TCXO

The TimeNIC is a small form-factor PCIe NIC designed to bring precision timing and advanced network functionality to any system with a PCIe slot. Built around the Intel I226 Ethernet controller, it integrates front-panel SMA connectors for 1PPS input and output, a high-stability TCXO, and full support for PTM (Precision Time Measurement) over PCIe — making it one of the most capable and affordable precision timing NICs available.

If you’re familiar with the TimeHAT, the TimeNIC is its PCIe sibling — the same core I226 timing design, now in a standard PCIe card for desktops, servers, and embedded systems.

GitHub: https://github.com/Time-Appliances-Project/TimeNIC


What’s in the Box

  • TimeNIC PCIe card
  • PCIe full-height bracket, installed with 2x M2.5×6 screws and 2x M2.5 nuts

Key Features

SMA Ports for 1PPS Input and Output

The only I226 NIC on the market with easy front-panel SMA connectors for SDP0 (1PPS output) and SDP1 (1PPS input). Use them to:

  • Validate PTP and PTM performance
  • Inject a 1PPS reference from GPS or an atomic clock and distribute time over PTP
  • Measure precise time intervals with external equipment

TCXO — High-Stability Oscillator

The only I226 NIC — and likely the most affordable PTP NIC — on the market with a Temperature-Compensated Crystal Oscillator (TCXO) backing the chipset. This delivers low-jitter timing distribution and stable frequency across temperature variations.

TCXO used: ECS-TXO53-S3-33-250-BN-TR datasheet

PTM — Precision Time Measurement over PCIe

The biggest capability the TimeNIC has over the TimeHAT: PTM (Precision Time Measurement). PTM is essentially PTP over PCIe, transferring nanosecond-accurate time from the NIC directly to the CPU and userland code — without needing a network packet.

TimeHAT Relationship

The TimeNIC shares its core design with the TimeHAT — both are I226-based precision timing platforms. Most TimeHAT software documentation applies here. The main difference is the kernel patch process for fixing the 1PPS input rising-edge behavior, which is documented on the TimeNIC GitHub repo.


Setup & Usage Guide

Tested on Ubuntu 24.04 fresh install.

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. Find which PTP interface maps to the TimeNIC using ethtool:

On the example system below, the NIC is enp1s0 and the PTP Hardware Clock is 0, so the device is /dev/ptp0:

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:

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

Setup SDP0 (SMA1, furthest from PCIe fingers, above RJ45) as periodic output:

sudo testptp -d /dev/ptp0 -L0,2
sudo testptp -d /dev/ptp0 -p 1000000000

Read 1PPS SMA Input

A. Setup SDP1 (SMA2, 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 a demo.

Note: The I226 driver passes both rising and falling edges to Linux. A fix requiring a kernel patch is documented on the GitHub repo.

sudo testptp -d /dev/ptp0 -e 5

Discipline to 1PPS SMA Input

Note: For best results, install the PPS input kernel patch fix first (see GitHub).

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 discipline 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)

Full instructions are on the TimeNIC GitHub repo (easier to read and follow there).

You may also like