Somewhere along the way, my System 76 laptop stopped automatically updating the time zone based on its location. This annoyed me for a few months, but only today did I finally take some time to explore what was happening and how to fix it.

The Short Version

It seems to matter the sequence of enabling the two relevant settings: Location Services and Automatic Time Zone.

  1. Turn both Location Services and Automatic Time Zone off.
  2. Breathe for 10 seconds.
  3. First, turn Location Services on.
  4. Breathe for 10 seconds.
  5. Next, turn Automatic Time Zone on.

This changed my time zone to the one I find myself in right now, which is not my home time zone. Problem solved.

How I Got Here

Somewhere along the way I turned off Location Services in Pop!_OS 22.04 settings, presumably for privacy reasons. Unfortunately, I had also turned on the Automatic Time Zone setting, not knowing that it needed Location Services to do its work. There was no way to get the correct location in order to find the correct current time zone. I consider this a UI defect, but at least I can make sense of it.

Sadly, when I turned Location Services on, nothing changed. I looked for ways to force the Time Synchronization service to, you know, synchronize the time, but nothing worked. I learned a little about timedatectl along the way. The system time never changed, but neither did I find any error messages in the systemd journal for the systemd-timesyncd service. I couldn’t find any sign that anything was wrong. I infer now that the operating system was trying to ask for the current time zone, didn’t have access to Location Services, and quietly failed to even ask the question. As a result, my laptop remained stuck in Atlantic Daylight Time when I was clearly sitting in Eastern Daylight Time.

And then I thought of something.

My computer programmer mind told me that there was probably some silly dependency between the services, so it probably mattered in which sequence I turned these two services on.

Bingo.

Related: https://youtu.be/Jtq1EBMe1gQ?t=96

Do you know how I could have reliably discovered this problem, rather than guessing and getting lucky? Please tell me; otherwise, this seems like two defects to me:

  • the settings UI doesn’t signal the dependency between these two services
  • the “synchronize time” command doesn’t signal that since Location Services is disabled, it doesn’t know which current location to use to ask for the time zone