How to Inspect Network Time and Automatic Clock Synchronization on Android Using ADB dumpsys time_detector

Modern mobile applications and operating system security frameworks rely heavily on accurate system time. TLS certificate validation, Kerberos and OAuth authentication tokens, multi-factor authenticator codes (TOTP), and database synchronization all fail if a device’s internal clock drifts significantly from Coordinated Universal Time (UTC).

Android manages system time through the Time Detector Service (time_detector). Rather than simply synchronizing with a single time server, Android aggregates multiple external time sources—including cellular telephony (NITZ), Network Time Protocol (NTP), GNSS satellite clocks, and external accessory inputs—evaluating them through a prioritized scoring engine. Using the Android Debug Bridge (ADB), developers and cellular test engineers can inspect active time sources, origin priority rankings, and clock adjustment history using dumpsys time_detector.

How the Android Time Detector Framework Operates

The time_detector system service evaluates time suggestions submitted by internal system providers and decides when to adjust the Linux kernel clock (CLOCK_REALTIME):

  • Telephony (NITZ): Time signals broadcast by cellular base stations through Network Identity and Time Zone packets. Telephony signals are traditionally prioritized when a cellular SIM is registered.
  • Network (NTP): Network Time Protocol suggestions queried over active Wi-Fi or cellular data connections (typically querying pool.ntp.org or Google time servers).
  • GNSS: Satellite atomic clock signals provided by the device GPS/GNSS receiver.
  • Manual: User-configured manual time input entered in system settings.
  • External: Inputs from automotive infotainment head units or USB accessory connections.

Connecting to ADB and Inspecting the Service State

Connect your Android test device to your workstation with USB debugging enabled. Confirm device connectivity:

adb devices

Query the complete diagnostic state of the time detector subsystem:

adb shell dumpsys time_detector

The resulting output details the active time suggestions, origin priority hierarchy, and recent clock changes:

TimeDetectorService:
  mAutoDetectionStatus: ENABLED
  mOriginPriorities: [telephony, network, gnss, external]
  mLatestSuggestions:
    Origin: telephony, Slot: 0, Suggestion: UnixEpochTime{1762512000000}, Confidence: HIGH
    Origin: network, Suggestion: UnixEpochTime{1762512000125}, Confidence: HIGH
  mCurrentTime: 2026-11-07 18:30:00 UTC
  mLastSystemClockChangeReason: "Telephony suggestion slotIndex=0"

Interpreting Critical Time Synchronization Metrics

When diagnosing clock sync failures or testing edge cases, evaluate the following sections in the output of dumpsys time_detector:

Metric / Field Reported Value Diagnostic Meaning
mAutoDetectionStatus ENABLED or DISABLED Indicates whether automatic time synchronization is enabled in device settings
mOriginPriorities List of origins (e.g. [telephony, network]) The order of precedence Android follows when multiple time signals are available
mLatestSuggestions Origin names and epoch timestamps The most recent time proposals delivered by each respective subsystem
mLastSystemClockChangeReason Descriptive string The specific provider and event that triggered the last kernel clock update

Inspecting Time Zone Resolution with time_zone_detector

Time calculation is paired with time zone determination. To inspect how Android determines the active geographic time zone offset, inspect the companion service:

adb shell dumpsys time_zone_detector

The time zone detector reveals whether the device relies on cellular MCC/MNC country codes, telephony NITZ offsets, or location-based geofence detection (available in modern Android versions) to calculate local time offsets.

Simulating Time Suggestions and Clock Updates via ADB

Testing time-sensitive application logic (such as session expiration, certificate expiry, or time-based one-time passwords) requires precise clock adjustments. Administrators can inject manual time suggestions directly into time_detector through the command shell:

# Disable automatic time detection first
adb shell cmd time_detector set_auto_detection_enabled false

# Verify status
adb shell dumpsys time_detector | grep mAutoDetectionStatus

To inject a simulated network time signal for testing (epoch time in milliseconds):

adb shell cmd time_detector suggest_manual_time 1762515600000

Verify that the kernel system clock updated to the specified epoch timestamp:

adb shell date

To re-enable automatic carrier and NTP synchronization after completing tests:

adb shell cmd time_detector set_auto_detection_enabled true

Monitoring Live Clock Synchronization Events

When troubleshooting devices that drop cellular time or fail to sync over corporate Wi-Fi firewalls blocking UDP port 123 (NTP), monitor the system logcat stream for time detector tags:

adb logcat -s TimeDetectorService:* NtpNetworkTimeHelper:* TimeZoneDetectorService:*

By reviewing dumpsys time_detector, mobile developers, QA engineers, and network administrators can identify whether clock synchronization issues stem from cellular base station inaccuracies, blocked network NTP sockets, or invalid carrier NITZ packets.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.