I have used Linux for more than 20 years now, and as long as I can remember, dual-booting with Windows has caused troubles with the clock. Windows prefers to set the hardware clock to local time, whereas Linux uses UTC by default. I’m 99.9% on Linux now, so it always felt wrong to change Linux defaults to accommodate Windows when I need it maybe a few times per year.

Just recently, when I was trying to enforce immediate time synchronizationexternal link , I saw that timedatectl complains about my non-UTC configuration, and I googled it and accidentally spotted a Reddit postexternal link about changing Windows behavior and enforcing it to use UTC for the hardware clock.

Hell froze over! 20 years I’ve been waiting to bend Windows to my will and do that!

Setting both Windows and Linux hardware clock to UTC

  1. We start on Linux by disabling RTC in local TZ:
Disable RTC in local TZ
timedatectl set-local-rtc 0

You can check it by:

Check timedatectl status
timedatectl status
...
          RTC in local TZ: no

  1. Now boot into Windows and enforce it to use UTC as the hardware TZ (use Administrator elevated cmd):
Set Windows to use UTC for hardware clock
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

  1. You have the best support on Linux, and it stays in sync on Windows.

Enjoyed this post? Buy Me a Coffee at ko-fi.com