Force Windows 8 to use UTC when dealing with BIOS clock

18

8

I have Arch Linux + Windows 8 on my laptop. In previous versions of Windows, there is a DWORD in the registry (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal) that switches between localtime and UTC, but this doesn't seem to be working in Windows 8 anymore.

I am now getting UTC time in Windows since it thinks BIOS gives it localtime which is actually UTC time, and after reboot into Arch Linux, the clock becomes localtime-0400, because Arch thinks BIOS is having the correct UTC time.

I do not want to let Arch Linux use localtime. Under this prerequisite, is there any possible solution?

jiehanzheng

Posted 2012-10-28T05:28:32.667

Reputation: 283

1The RealTimeIsUniversal key worked fine for me, dual booting Arch Linux also. – numbers1311407 – 2012-11-22T17:23:49.480

Answers

3

RealTimeIsUniversal is really buggy and not an officially recommended solution (maybe that's why they disabled it in Win8?) See IBM PC Real Time Clock should run in UT and a response from Raymond Chen here: Why does Windows keep your BIOS clock on local time?. As of date I don't think there's a proper solution for this.

Karan

Posted 2012-10-28T05:28:32.667

Reputation: 51 857

@Stijn Great link, I think you should make it into an answer for more visibility. – Marc.2377 – 2017-06-22T07:39:58.680

5buggy? never had any problems with it, and forcing windows to use a UTC system clock really is the only sane solution. and the key is not disabled in win8. real solution is to set the registry key, turn off windows’ time sync, and let linux handle the syncing if you boot there often enough. – flying sheep – 2014-01-08T19:19:08.847

1

@flyingsheep Over the years a few hotfixes have been released, see Current support status in Windows on http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html

– Stijn – 2014-05-12T21:16:13.400

15

The default Windows Time service will always write local time to the hardware clock on shutdown, regardless of what the registry says about the real time being in UTC. Outside of this caveat, Windows will treat the hardware time clock correctly, if the registry is set correctly. Try this:

  1. If the time is messed up from trying to get Windows to use UTC, boot into Windows, and set the time as it would be normally (correct timezone, no regedit, Windows Time service enabled, recently synced, etc)
  2. Do the regedit you mentioned already
  3. Sync the time w32tm /config /update
  4. Disable Windows Time service sc config w32time start= disabled
  5. Install a 3rd party NTP client
  6. Verify that it works with a reboot

JumperPunk

Posted 2012-10-28T05:28:32.667

Reputation: 159

That software seems to be a repackaging of the official NTP distribution, with some extras. Anyway, I used it and also found it to work. – David Z – 2015-01-29T05:21:27.673

1

Just set this up myself after having Windows set the clock on each shutdown. Found the following NTP software for Windows which is very easy to setup and configure. http://www.meinbergglobal.com/english/sw/ntp.htm

– Dracs – 2013-09-05T05:19:13.207

11

RealTimeIsUniversal registry key still works in Windows 8 and 10! The instructions to use this method are explained lot of times everywhere, for example in this answer.

I will replicate the answer here:

  1. Win+S, regedit, Enter.

  2. Navigate to the key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation.

  3. Create new DWORD (32-bit) Value, name it RealTimeIsUniversal.

  4. Set its value to 1.

After this is done, just reboot your machine. After it is up and running again, let Windows set time automatically (click on the current time in tray, Date and Time Settings > Set Time Automatically), this time it will not mess with it.

Neurotransmitter

Posted 2012-10-28T05:28:32.667

Reputation: 996

0

@jiehanzheng yes, if you use NTP in Windows, it will mess up the clock. Sounds like the best workaround is to run NTP in whatever flavor of *NIX you're dual booting, disable NTP in Windows, and offset using whatever time zone you need to. Then you just have to adjust daylight savings time manually with a time zone shift in Windows, but eh..

wajeemba

Posted 2012-10-28T05:28:32.667

Reputation: 9

0

RealTimeIsUniversal works for me. To get it to work, after applying the registry entry, shut down Windows (not sleep or hibernate). Boot machine & enter BIOS before booting into Windows, change the time in BIOS, save, then continue booting into Windows. Alternatively, after shutting down Windows, boot into Linux & let time sync do its job. If time is updated from within Windows, Windows will somehow update an incorrect time to the system after a reboot.

user416162

Posted 2012-10-28T05:28:32.667

Reputation: 1

1Could you link to sources that explain RealTimeIsUniversal? I didn't know what it was until you mentioned it, and from a number of results, it looks like it comes with its own set of potentially negative side-effects. – killermist – 2015-02-06T05:44:29.393

-1

RealTimeIsUniversal worked for me in Windows 10. And at mid-December 2016, it's working for my Windows 7 Pro as well, without rebooting into Linux.

Kevin O'Gorman

Posted 2012-10-28T05:28:32.667

Reputation: 1

-4

You could just set your time-zone four hours off.

enter image description here

Caleb Jares

Posted 2012-10-28T05:28:32.667

Reputation: 2 629

Smart workaround... but the hardware and system clock will be messed up again when I use NTP (Internet Time), right? – jiehanzheng – 2012-10-28T17:46:08.990