Do you have issues with the time configuration on Raspberry Pi?
Or maybe you want to sync time with another server?
I’ll help you in this post with all the stuff around time synchronization on Raspberry Pi (and on Linux)
How to sync time with a server on Raspberry Pi?
Depending on your distribution and version, your Raspberry Pi may already have time sync enabled by default
Use the command timedatectl to see the current configuration
But most of the time you need to select the proper time zone and then the servers to use in the configuration
And alternatively you can also use the Linux NTP services
I’ll explain you how the time synchronization works on Linux and how to configure it the way you want
We’ll see the two ways of doing this on a Raspberry Pi:
– Timedatectl: included out of the box, pretty easy to configure
– NTP: classic way to do this on Linux, for more compatibility with other systems
And finally, I’ll give you other useful commands for date and time on Raspberry Pi
About time synchronization
Before going further with technical information and commands, I want to introduce how the time synchronization works on Linux, on Raspberry Pi and on most of the modern devices
On a network, it’s very important to get all the computers with the same time
For example, you can’t connect to Active Directory or Samba shares even if your computer is only 5 minutes late
So we need to set up time-synchronization systems on the networks
The NTP protocol has this role
Basically, you configure your computer to ask time to another, and use the answer to set its current time (it’s a little more complex that that, but remembering this is ok)

Network Time Protocol (source: Wikipedia)
Generally, you have a master server on each network which get the current time from an Internet server
And then all computers synchronize with this master
In this post I’ll show you how to do this configuration using timedatectl or NTP directly
Timedatectl
Timedatectl introduction
The last Raspbian version (lite or desktop) includes timedatectl by default
It’s a tool to manage the date and time on the Raspberry Pi
The first command I’ll teach you is how to check the current status
timedatectl status
This should give you something like this:
So you’ll get:
- The local time
- The universal time (same thing by default)
- The RTC time if configured (module not included on Raspberry Pi)
- The current time zone (GMT by default)
- The current network time synchronization status
As you can see, my Raspberry Pi is already time synchronized by default (except the time zone)
Timedatectl commands
Before going further in the timedatectl configuration, I want to show you some useful commands you can use directly
List time zones
If you need to change the default time zone, you first need to know all available values
To do this, use this command:
timedatectl list-timezones
As the list is big, you can filter it with the grep command
timedatectl list-timezones | grep America timedatectl list-timezones | grep Sydney
Note your local time zone and use it with the next command
Set time zone
To set the current time zone, use this command:
sudo timedatectl set-timezone <time zone>
For example:
sudo timedatectl set-timezone America/New_York sudo timedatectl set-timezone Europe/Paris sudo timedatectl set-timezone Australia/Sydney
Use again the timedatectl status to check that the current time is correct
You can also change the time zone in raspi-config > Localization options > Change time zone
Set the time manually
It’s not really in the state of mind of this post, but you can set the time manually with timedatectl
Here is how:
sudo timedatectl set-time 'A:M:J HH:mm:ss' sudo timedatectl set-time 'A:M:J' sudo timedatectl set-time 'HH:mm:ss'
For example:
sudo timedatectl set-time '12:00:00'
But to do this, you need to disable the time synchronization (see next paragraph)
Enable or disable the time synchronization
If you want to disable or enable the time synchronization, use these commands:
sudo timedatectl set-ntp false sudo timedatectl set-ntp true
That’s it, you know the basic timedatectl commands
Timedatectl configuration
The last thing you need to know about timedatectl is how to change the synchronization server
You can do this in the configuration file:
- Open the file
sudo nano /etc/systemd/timesyncd.conf
- Comment out the last line and replace default servers by the servers you want to use (on Internet or from the local network)
- For example:
[Time] #NTP= FallbackNTP=0.us.pool.ntp.org 1.us.pool.ntp.org
NTP
NTP introduction
The other way to do time synchronization on Linux is to use NTP
Even if Debian and Ubuntu are replacing it by timedatectl on new versions, it’s still a common software on Linux systems
I’m not sure to understand all the differences between both and why they are moving to timedatectl
But in my mind I think that timedatectl is for clients, easy to use and configure out of the box.
And NTP is probably better on a server, to sync time with it and have more configuration options
NTP configuration
NTP installation
As I said, NTP is not available by default on Raspbian
You need to install it with apt:
sudo apt install ntp
NTP configuration
The configuration file for NTP is available here: /etc/ntpd.conf
You can edit it to set a new server for time synchronization (lines beginning with “pool”)
If you want to use your Raspberry Pi as an NTP server, it’s also in this file that you can change the server configuration (restrict access, broadcast time, …)
NTP commands
NTP has less commands than timedatectl as everything is in the configuration file
But you can use this one to manage the ntp server daemon:
service ntp status | start | stop | restart
NTPDate
ntpdate is an additional command you can install and use to force time synchronization
Installation:
sudo apt install ntpdate
Check your current time delay compared to a server:
sudo ntpdate -q 0.us.pool.ntp.org
In my case I got a 0.005s offset. It confirms that the NTP server is working fine
Fix the delay now:
The NTP daemon will fix the delay step by step
But if you want to fix it now, you can use:
sudo service ntp stop sudo ntpdate 0.us.pool.ntp.org sudo service ntp start
You need to stop the NTP daemon before using ntpdate to free the port
You’ll get something like this:
Conclusion
You now know how to change the date and time on your Raspberry Pi and how to synchronize the clock from several Linux computers on the same network
This may seem not so useful at home or in a small network, but it’s an essential component in big networks