Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Log in or create an account to edit The Apple Wiki.

TimeZoneUpdate

From The Apple Wiki

com.apple.MobileAsset.TimeZoneUpdate is a MobileAsset used to update the system timezone database. It's present both in mesu (for every OS) and in pallas (for every OS's generic/data audience).

The manifest has a single asset with the latest version of the IANA timezone database. The BundleVersion property of the asset contains the upstream tzdata version number (for example "2024a.1.0" for tzdata 2024a).

Software

The asset is downloaded and installed by the /usr/libexec/tzd daemon, with parts of the code in /usr/lib/libtzupdate.dylib.

It seems the tzd daemon also takes care of notifying a paired Apple Watch (via alloy.timezonesync IDS messaging) that the timezone database was updated, probably to get the watch to update the database as well.

Asset contents

The AssetData directory inside the zip contains:

  • zoneinfo/: tzdata compiled database files, similar to what you would find on Linux /usr/share/zoneinfo
  • icutz/icutz*.dat: ICU timezone data file derived from tzdata
  • versions.plist: Contains a list of the "alert zones" for each version.

Update alerts

If a timezone database update affects the currently selected timezone, the user must reboot for the change to take effect. The versions.plist file has a dictionary like:

{
    "DataVersion": "2024a",
    "AlertZones": {,
        "2023d": [...]
        "2024a": [
            "Asia/...",
            "Asia/..."
        ]
    },
    "ShouldAlertAll": false
}

If the user is currently in a timezone in the AlertZones list for the version they are updating to (and presumably any intervening versions if the device has been offline for an extended period), the /usr/bin/tznotify agent will show the user a notification asking them to reboot the device:

Updated Time Zone Information Available
Restart to apply new time zone definitions.

ShouldAlertAll presumably means the reboot prompt will be shown for everyone regardless of their current timezone. This key is present both in AssetData/versions.plist and in the top-level Info.plist.