SatPulse 0.2 hardware test matrix
I have set up 12 different machines for automated testing of SatPulse. I have chosen the hardware to provide coverage along multiple dimensions: CPU architecture, OS, PHC, GPS protocol and serial connection type.
| Hostname | Machine | OS | Ethernet | GPS |
|---|---|---|---|---|
| abondance | ASUS S500SD | Debian 13 | I225-T1 | ZED-F9P |
| I225-T1 | BG7TBL CM55 | |||
| brie | Intel 12th Gen PC | Ubuntu 24.04 | E810-XXVDA4T | NEO-F10T |
| gubbeen | Raspberry Pi 5 | Debian 13 | I210-T1 | M10050-KB |
| maasdam | Minisforum MS-01 | Fedora 43 | I226-T1 | ZED-F9T-20B |
| morbier | Raspberry Pi CM4 | Debian 11 | onboard | LEA-M8F |
| pecorino | Raspberry Pi CM4 | Fedora 42 | onboard | LEA-6T |
| roquefort | Raspberry Pi CM4 | Debian 12 | onboard | ZED-X20P |
| serpa | Raspberry Pi CM5 | Debian 13 | onboard | UM980 |
| taleggio | Raspberry Pi 5 | Debian 12 | TimeHAT | NEO-M9N |
| valencay | Raspberry Pi CM5 | Debian 12 | onboard | LEA-M8T |
| valtellina | Raspberry Pi CM5 | Debian 13 | onboard | NEO-F10N |
| wensleydale | Raspberry Pi CM4 | Debian 12 | onboard | UM960 |
More details:
- abondance
- ASUS S500SD desktop (Intel B660 chipset) with an Intel i5-12400 and 64 GB RAM. It has two Intel I225-T1 PCIe cards: one is connected to an internal ArduSimple simpleRTK2B M.2, which has a u-blox ZED-F9P, and the other is connected over RS232 to a BG7TBL CM55 GPSDO, which has a LEA-M8T. This supports cross-timestamping with PTM.
- brie
- MSI Z690I motherboard with an Intel i9-12900K and 32 GB RAM. It has an Intel E810-XXVDA4T PCIe card. GPS is a u-blox EVK-F10T connected by USB.
- gubbeen
- Raspberry Pi 5 with 16 GB RAM in a Geekworm X1010 expansion board with PCIe slot, which contains an Intel I210-T1. GPS is a u-blox M10050-KB (u-blox M10 standard-precision) connected to UART0.
- maasdam
- Minisforum MS-01 with an Intel i5-12600H and 32 GB RAM. It has an I226-T1 PCIe card. GPS is a u-blox ZED-F9T-20B in a gnss.store USB dongle. This supports cross-timestamping with PTM.
- morbier
- Raspberry Pi CM4 with 8 GB RAM and 32 GB eMMC, on the official IO board. GPS is a u-blox LEA-M8F on a Timebeat sandwich board.
- pecorino
- Raspberry Pi CM4 with 8 GB RAM and 32 GB eMMC, on the official IO board. GPS is a u-blox LEA-6T connected to UART3.
- roquefort
- Raspberry Pi CM4 with 4 GB RAM and 8 GB eMMC, on a Waveshare PoE board. GPS is a u-blox EVK-X20P connected by USB.
- serpa
- Raspberry Pi CM5 with 2 GB RAM and NVMe SSD, on a Geekworm X1500 carrier board. GPS is a Unicore UM980 connected to UART0.
- taleggio
- Raspberry Pi 5 with 4 GB RAM with a Timebeat TimeHAT, which uses an Intel I226-LM. GPS is a u-blox NEO-M9N in the TimeHAT’s M.2 slot.
- valencay
- Raspberry Pi CM5 with 2 GB RAM and 16 GB eMMC, on the official IO board. GPS is a u-blox LEA-M8T connected to UART0.
- valtellina
- Raspberry Pi CM5 Lite with 8 GB RAM and NVMe SSD, on the official IO board. GPS is a u-blox NEO-F10N connected to UART0.
- wensleydale
- Raspberry Pi CM4 with 8 GB RAM and 8 GB eMMC, on the official IO board. GPS is a Unicore UM960 connected to UART0.
The testing uses the Ansible playbooks in the systest directory. It runs both satpulsed and chrony on the target machines, with satpulsed supplying samples for chrony. The main checks are that
- satpulsed logs show that synchronization has been established and not lost; and
- chrony has selected the satpulsed refclock; chrony is also configured to use highly-accurate NTP servers on the LAN, and won’t select the satpulsed refclock if it diverges too much from those NTP servers.
It also uses the clocklog.py script to produce some statistics from the clock.log about the quality of synchronization.
I also have a Grafana dashboard which shows metrics from each test machine.
