I recently noticed my Arch Linux system time was consistently 1 hour behind, despite having the correct timezone configured. Here’s how I fixed it using systemd’s built-in NTP client.
The Problem
My system showed the wrong time even though the timezone was correctly set to Europe/Berlin:
❯ date
Thu Feb 12 09:45:36 AM CET 2026
❯ stat /etc/localtime
File: /etc/localtime -> /usr/share/zoneinfo/Europe/Berlin
Checking the time sync status revealed the issue:
❯ timedatectl status
Local time: Thu 2026-02-12 09:48:17 CET
Universal time: Thu 2026-02-12 08:48:17 UTC
RTC time: Thu 2026-02-12 08:48:17
Time zone: Europe/Berlin (CET, +0100)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
The NTP service was inactive, meaning the system wasn’t synchronizing with any time servers.
The Solution
Step 1: Configure NTP Servers
Edit the systemd-timesyncd configuration file:
sudoedit /etc/systemd/timesyncd.conf
I configured German NTP pool servers for better accuracy and lower latency:
[Time]
NTP=0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org 3.de.pool.ntp.org
#FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
Step 2: Enable and Start the NTP Service
# Restart the service to apply changes
sudo systemctl restart systemd-timesyncd.service
# Enable NTP synchronization
sudo timedatectl set-ntp true
Step 3: Verify the Fix
Check that everything is working:
❯ timedatectl status
Local time: Thu 2026-02-12 08:49:38 CET
Universal time: Thu 2026-02-12 07:49:38 UTC
RTC time: Thu 2026-02-12 07:49:38
Time zone: Europe/Berlin (CET, +0100)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Perfect! The system clock is now synchronized and the NTP service is active.
Step 4: Check Sync Details
To see which NTP server you’re connected to and the sync status:
❯ timedatectl timesync-status
Server: 88.99.101.252 (0.de.pool.ntp.org)
Poll interval: 1min 4s (min: 32s; max 34min 8s)
Leap: normal
Version: 4
Stratum: 2
Reference: ED11CC5F
Precision: 1us (-24)
Root distance: 22.536ms (max: 5s)
Offset: -3.401ms
Delay: 22.195ms
Jitter: 1.285ms
Packet count: 2
Frequency: +0.000ppm
The offset of -3.401ms shows the system is now properly synchronized with minimal drift.
Useful Commands
Here are some helpful commands for monitoring NTP status:
# Overall time/NTP status
timedatectl status
# Detailed sync status with NTP server info
timedatectl timesync-status
# Show all timesyncd settings
timedatectl show-timesync --all
# View sync logs
journalctl -u systemd-timesyncd -n 50
# Monitor sync attempts in real-time
journalctl -u systemd-timesyncd -f
Choosing NTP Servers
You can use different NTP server pools based on your location:
- Germany:
0.de.pool.ntp.orgthrough3.de.pool.ntp.org - Europe:
0.europe.pool.ntp.orgthrough3.europe.pool.ntp.org - Global:
0.pool.ntp.orgthrough3.pool.ntp.org - Arch Linux:
0.arch.pool.ntp.orgthrough3.arch.pool.ntp.org
Using geographically closer servers generally provides better accuracy and faster sync times.
Conclusion
Time synchronization is crucial for many system functions, from file timestamps to SSL certificate validation. With systemd-timesyncd, keeping your Arch Linux system’s clock accurate is straightforward and requires minimal configuration.
The key steps are:
- Configure NTP servers in
/etc/systemd/timesyncd.conf - Restart the systemd-timesyncd service
- Enable NTP synchronization with
timedatectl set-ntp true - Verify with
timedatectl status
Now my system clock stays accurate automatically!