Hồi sinh máy chủ GPS 1995 thành NTP Server hiện đại với Raspberry Pi
Một kỹ sư đã khôi phục chiếc máy chủ thời gian GPS TrueTime XL-AK từ năm 1995, biến nó thành một stratum 1 NTP server hiện đại sử dụng Raspberry Pi 5 và GNSS HAT. Dự án bao gồm việc cấu hình Chrony, tối ưu độ ổn định xung nhịp, và giữ nguyên vỏ máy cổ điển với màn hình LCD — tạo nên sự kết hợp độc đáo giữa công nghệ cũ và mới.

Hồi sinh máy chủ GPS 1995 thành NTP Server hiện đại với Raspberry Pi
Một dự án "restomod" đầy thú vị vừa được thực hiện: biến chiếc máy chủ thời gian GPS TrueTime XL-AK sản xuất năm 1995 thành một stratum 1 NTP server hoạt động hoàn chỉnh nhờ Raspberry Pi 5 và GNSS HAT. Dự án không chỉ giữ nguyên vẻ ngoài cổ điển với màn hình LCD 16x2 và đèn LED hai màu, mà còn cung cấp thời gian chính xác cấp độ microsecond cho mạng nội bộ.
Điểm đặc biệt của dự án nằm ở việc tối ưu độ ổn định xung nhịp của Pi thông qua các kỹ thuật như cô lập CPU core cho xử lý PPS (Pulse Per Second), ép xung ổn định nhiệt, và sử dụng kỹ thuật wire wrapping để kết nối GPIO trong không gian chật hẹp. Kết quả là một thiết bị vừa có giá trị lịch sử, vừa đáp ứng được các yêu cầu kỹ thuật khắt khe của việc đồng bộ thời gian hiện đại.
TrueTime Pi với màn hình LCD hoạt động hiển thị thời gian GPS
Hình ảnh TrueTime Pi với màn hình LCD hiển thị trạng thái GPS sau khi hoàn thành
Phần cứng và thiết lập ban đầu
Trái tim của dự án là một Raspberry Pi 5 4GB, nhưng tác giả Jeff Geerling cho biết hoàn toàn có thể dùng bản 1GB giá 44 USD nếu chỉ chạy các dịch vụ thời gian cho mạng nhỏ. GNSS HAT của Jimmy Paputto được gắn trực tiếp lên Pi thông qua GPIO riser, cung cấp khả năng thu tín hiệu GPS với độ chính xác cao.
Sau khi cài đặt Pi OS Lite, phần mềm GNSS HAT được biên dịch từ mã nguồn, bao gồm cả data bridge để chuyển câu NMEA (dữ liệu thời gian) sang gpsd và chrony. Người dùng cũng có thể truy cập trực tiếp vào module u-blox NEO-M9N qua cổng USB-C nếu cần.
Cấu hình Chrony cho độ chính xác tối ưu
Phần quan trọng nhất của một NTP server nằm ở cấu hình Chrony. Cấu hình được sử dụng bao gồm:
# GNSS + PPS time server
refclock SHM 0 offset 0.0 delay 0.05 refid NMEA noselect
refclock PPS /dev/pps0 refid PPS lock NMEA prefer trust poll 3 filter 16
# Giới hạn lỗi xung nhịp tối đa
maxclockerror 0.5
# Hardware timestamping trên Pi 5
hwtimestamp *
# Fallback internet pools
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
# Cho phép LAN clients
allow 10.0.0.0/16
allow 172.17.0.0/16
Điểm thú vị là việc sử dụng cả hai nguồn thời gian: NMEA qua SHM (Shared Memory) và PPS trực tiếp từ GPIO. Trong đó PPS được ưu tiên cao hơn vì cung cấp độ chính xác tốt hơn nhiều — chỉ vài chục microsecond so với vài mili giây.
GNSS HAT gắn trên Raspberry Pi với tín hiệu PPS đo bằng oscilloscope
GNSS HAT L1 được gắn trên Raspberry Pi, tín hiệu PPS được đo bằng oscilloscope
Tối ưu độ ổn định xung nhịp Raspberry Pi
Một trong những thách thức lớn nhất khi dùng Pi làm NTP server là độ ổn định của bộ tạo dao động (XO). Con chip này nằm gần SoC, nên khi CPU hoạt động mạnh, nhiệt độ tăng đột biến sẽ làm sai lệch tần số. Jeff đã áp dụng nhiều kỹ thuật để giải quyết vấn đề này:
- Ép xung liên tục với
force_turbo=1để CPU duy trì nhiệt độ ổn định - Chạy quạt ở duty cycle cố định (50%) thay vì điều chỉnh theo nhiệt độ
- Cách nhiệt đáy Pi nơi đặt tinh thể thạch anh
- Bọc kín toàn bộ trong vỏ TrueTime nguyên bản
"Luồng không khí, đặc biệt từ hệ thống HVAC, khiến bộ dao động của Pi hoạt động thất thường — đồng hồ ổn định cần độ trôi nhất quán vì có thể đo lường được."
Một kỹ thuật đáng chú ý khác là cô lập CPU core thứ 4 để xử lý riêng ngắt PPS:
# Thêm vào /boot/firmware/cmdline.txt
isolcpus=3
# Script gán IRQ PPS vào CPU core 3
#!/bin/sh
irq=$(awk '/pps@/ {sub(":","",$1); print $1}' /proc/interrupts)
[ -n "$irq" ] && echo 3 > /proc/irq/$irq/smp_affinity_list
Kết quả cho thấy sự cải thiện rõ rệt, dù không phải là "game-changing" như tác giả mong đợi.
Dashboard giám sát và màn hình LCD cổ điển
Sử dụng sự hỗ trợ của AI (Claude), Jeff đã xây dựng chrony-dashboard — công cụ giám sát hiệu suất NTP qua web. Đây là một ví dụ điển hình cho việc AI giúp đỡ trong các tác vụ frontend graphing vốn nhàm chán.
Chrony Dashboard hiển thị thông số đồng bộ thời gian
Chrony Dashboard được phát triển với sự hỗ trợ của AI, hiển thị thông số thời gian chi tiết
Điểm nhấn đặc biệt là việc kết nối màn hình LCD Densitron 16x2 nguyên bản từ năm 1995 với Raspberry Pi. Jeff sử dụng kỹ thuật wire wrapping — phương pháp quấn dây quanh chân GPIO thay vì hàn — tạo kết nối khí kín có điện trở thấp hơn cả mối hàn. Đây là lựa chọn bắt buộc do không gian chật hẹp bên trong vỏ TrueTime.
Tính năng mở rộng: Time/ Daytime và TimeLord cho Mac cổ
Ngoài NTP hiện đại, máy chủ còn được cấu hình hỗ trợ các giao thức thời gian cổ điển:
- RFC 867/868 (Time và Daytime) — tiền thân của NTP, dễ cài qua xinetd
- AppleTalk TimeLord — giúp những chiếc Mac cổ đồng bộ thời gian qua giao thức AppleTalk, sử dụng netatalk trong Docker
services:
netatalk:
image: netatalk/netatalk:latest
network_mode: host
cap_add:
- NET_ADMIN
environment:
AFP_USER: myname
AFP_PASS: mypass
SERVER_NAME: "TrueTime Pi"
TZ: America/Chicago
Kết luận và hướng phát triển
Dự án cho thấy sự kết hợp hài hòa giữa phần cứng cổ điển và công nghệ hiện đại có thể tạo ra những sản phẩm vừa có giá trị sử dụng thực tế, vừa mang ý nghĩa lịch sử. Với độ chính xác cấp microsecond, TrueTime Pi hoàn toàn có thể phục vụ các sự kiện công nghệ hoặc làm nguồn thời gian cho các hệ thống khác.
Jeff Geerling chia sẻ hai hướng phát triển tiếp theo: thiết kế PCB với GPIO header SMT để dễ thay thế hơn, và làm cho bàn phím TrueTime nguyên bản hoạt động để chuyển đổi giữa các màn hình hiển thị thời gian, GPS, Chrony và thông tin mạng.
"Tôi đo lường càng nhiều, tôi càng nhận ra rằng việc giữ thời gian có thể chậm và buồn tẻ. Bạn thay đổi một thứ, rồi cần ít nhất 6-12 giờ để mọi thứ ổn định trước khi có thể đo lường lại một cách chính xác!"
Bài viết này dựa trên trải nghiệm thực tế của Jeff Geerling — một kỹ sư phần mềm nổi tiếng trong cộng đồng Raspberry Pi và open source. Đối với độc giả Việt Nam, dự án này cũng là nguồn cảm hứng tốt để bắt đầu tìm hiểu về NTP server, GPS và các kỹ thuật tối ưu thời gian thực.