9.7.0 -> stopped working "continuous tracking off"

rose 3 days ago

600s

Anton Tananaev 3 days ago

And how long have you waited? Remember that the timer is not exact.

rose 3 days ago

There had been a period of >8h without any updates.

Anton Tananaev 3 days ago

Do you see anything in the logs about it?

CyberMCM 3 days ago

just 4 info, 4 phones here (2 different Samsung and 2 different iphones), all 4 had tracking off after update. I was able to start all 4 again (within the app)

Anton Tananaev 3 days ago

There must have been some breaking change in the SDK that disabled tracking. But do they all work after update now?

CyberMCM 3 days ago

Currently I was only able to check 1 iphone but it seems that this one is working again

rose 3 days ago

Nothing in the logs that I could see.

mrmrm 3 days ago

I'm having the same issue. As of 2 days ago (Friday) continuous tracking worked perfectly in both foreground and background (app closed). Now if I open the app, turn on continuous tracking, it works as expected. Close app and I get no updates. Open the app and continuous tracking has been turned off.

Anton Tananaev 3 days ago

I'm not able to reproduce the continuous tracking getting turned off. What do you see in the logs?

Anton Tananaev 3 days ago

Also what exactly do you mean by close app?

C5roki 3 days ago

I have a log from Traccar Client on an iPhone at the time the 'continuous tracking' was spontaneously disabled. But it is a bit big to put it in a message here.

C5roki 3 days ago

Around 2026-01-18 15:45 it was noticed that Traccar Client was not responding anymore and 'continuous tracking' was off.
I extracted the data from the log around that time. Hopefully it holds the clue to this little mystery.

O = red circle, # = blue circle, C = check mark, D = diskette, i = Information, X = no/error, () = racket, G = gear, I = pin, L = lock, F = flash, T = clock, * = green circle

2026-01-18 16:14:33.481 i-[TSDBLogger db_save] Log committed
2026-01-18 16:08:56.107 i-[TSDBLogger db_delete] maxAge: 86400
2026-01-18 16:08:56.107 i-[TSDBLogger db_save] Log committed
2026-01-18 15:46:00.326 i-[TSAppState onEnterBackground] 
2026-01-18 15:45:58.567 IL-[TSLocationAuthorization applicationDidBecomeActive] Application became active - refreshing authorization state
2026-01-18 15:45:51.305 IL-[TSLocationAuthorization applicationDidBecomeActive] Application became active - refreshing authorization state
2026-01-18 15:45:51.305 i-[TSAppState onEnterForeground] 
2026-01-18 15:45:51.305 i-[TSAppState onEnterForeground] [TSAppState] Foreground (onEnterForeground) before heuristic timeout (dt=122 ms) — classifying as user-initiated launch
2026-01-18 15:45:51.225 
╔═══════════════════════════════════════════════════════════
║ -[TSHttpService finish:error:] success=1 queued_before=0 synced=0 pages=0 duration_ms=0
╚═══════════════════════════════════════════════════════════
2026-01-18 15:45:51.225 C-[TSLocationDAO unlock]_block_invoke UNLOCKED ALL RECORDS
2026-01-18 15:45:51.225 F-[TSEventBus on:listener:] config:persistence.maxRecordsToPersist
2026-01-18 15:45:51.225 
╔═══════════════════════════════════════════════════════════
║ -[TSHttpService flush:] 
╚═══════════════════════════════════════════════════════════
2026-01-18 15:45:51.224 B-[TSLocationManager ready] 
2026-01-18 15:45:51.224 i-[TSConfig onChange:] state.isMoving
2026-01-18 15:45:51.224 i-[TSConfig onChange:] geolocation.distanceFilter
2026-01-18 15:45:51.224 i-[TSConfig onChange:] geolocation.disableElasticity
2026-01-18 15:45:51.224 i-[TSConfig onChange:] geolocation.desiredAccuracy
2026-01-18 15:45:51.224 i-[TSConfig onChange:] geolocation.showsBackgroundLocationIndicator
2026-01-18 15:45:51.224 i-[TSConfig onChange:] geolocation.pausesLocationUpdatesAutomatically
2026-01-18 15:45:51.224 i-[TSConfig onChange:] http.url
2026-01-18 15:45:51.224 i-[TSConfig onChange:] http.params.device_id
2026-01-18 15:45:51.224 i-[TSConfig onChange:] http.autoSync
2026-01-18 15:45:51.224 i-[TSDBLogger db_delete] maxAge: 86400
2026-01-18 15:45:51.224 i-[TSConfig onChange:] app.heartbeatInterval
2026-01-18 15:45:51.224 i-[TSConfig onChange:] app.stopOnTerminate
2026-01-18 15:45:51.224 i-[TSConfig onChange:] app.startOnBoot
2026-01-18 15:45:51.224 i-[TSConfig onChange:] app.preventSuspend
2026-01-18 15:45:51.222 i-[TSConfig onChange:] logger.logMaxDays
2026-01-18 15:45:51.222 i-[TSConfig onChange:] logger.logLevel
2026-01-18 15:45:51.222 i-[TSConfig onChange:] logMaxDays
2026-01-18 15:45:51.222 i-[TSConfig onChange:] logLevel
2026-01-18 15:45:51.222 i-[TSConfig onChange:] locationTemplate
2026-01-18 15:45:51.222 i-[TSConfig onChange:] http.url
2026-01-18 15:45:51.222 i-[TSConfig onChange:] http.params.device_id
2026-01-18 15:45:51.222 i-[TSConfig onChange:] http.autoSync
2026-01-18 15:45:51.222 i-[TSConfig onChange:] heartbeatInterval
2026-01-18 15:45:51.222 i-[TSConfig onChange:] geolocation.showsBackgroundLocationIndicator
2026-01-18 15:45:51.222 i-[TSConfig onChange:] geolocation.pausesLocationUpdatesAutomatically
2026-01-18 15:45:51.222 i-[TSConfig onChange:] geolocation.distanceFilter
2026-01-18 15:45:51.222 i-[TSConfig onChange:] geolocation.disableElasticity
2026-01-18 15:45:51.222 i-[TSConfig onChange:] geolocation.desiredAccuracy
2026-01-18 15:45:51.222 i-[TSConfig onChange:] enabled
2026-01-18 15:45:51.222 i-[TSConfig onChange:] distanceFilter
2026-01-18 15:45:51.222 i-[TSConfig onChange:] disableElasticity
2026-01-18 15:45:51.222 i-[TSConfig onChange:] desiredAccuracy
2026-01-18 15:45:51.221 i-[TSConfig onChange:] autoSync
2026-01-18 15:45:51.221 i-[TSConfig onChange:] app.stopOnTerminate
2026-01-18 15:45:51.221 i-[TSConfig onChange:] app.startOnBoot
2026-01-18 15:45:51.221 i-[TSConfig onChange:] app.preventSuspend
2026-01-18 15:45:51.221 i-[TSConfig onChange:] app.heartbeatInterval
2026-01-18 15:45:51.207 IL-[TSLocationAuthorization onAuthorizationStatusChanged:] Authorization status changed: 3 (state: HasAlways)
2026-01-18 15:45:51.189 F-[TSEventBus on:listener:] config:app.schedule
2026-01-18 15:45:51.189 F-[TSEventBus on:listener:] config:http.autoSyncThreshold
2026-01-18 15:45:51.189 F-[TSEventBus on:listener:] config:http.autoSyncThreshold
2026-01-18 15:45:51.189 F-[TSEventBus on:listener:] config:http.autoSync
2026-01-18 15:45:51.189 F-[TSEventBus on:listener:] TSLocationRequest:complete:4
2026-01-18 15:45:51.189 F-[TSEventBus on:listener:] TSLocationRequest:complete:5
2026-01-18 15:45:51.189 F-[TSEventBus on:listener:] TSLocationRequest:complete:0
2026-01-18 15:45:51.188 F-[TSEventBus on:listener:] TSLocationRequest:complete:2
2026-01-18 15:45:51.188 F-[TSEventBus on:listener:] TSLocationRequest:complete:1
2026-01-18 15:45:51.188 F-[TSEventBus on:listener:] stopMonitoringSignificantLocationChanges
2026-01-18 15:45:51.188 F-[TSEventBus on:listener:] config:geolocation.geofenceProximityRadius
2026-01-18 15:45:51.188 i-[TSGeofenceDAO init] CREATE index IF NOT EXISTS identifier ON geofences (identifier);CREATE index IF NOT EXISTS latitude ON geofences (latitude);CREATE index IF NOT EXISTS longitude ON geofences (longitude);CREATE index IF NOT EXISTS sin_latitude ON geofences (sin_latitude);CREATE index IF NOT EXISTS cos_latitude ON geofences (cos_latitude);CREATE index IF NOT EXISTS sin_longitude ON geofences (sin_longitude);CREATE index IF NOT EXISTS cos_longitude ON geofences (cos_longitude);
2026-01-18 15:45:51.188 i-[TSGeofenceDAO init] CREATE TABLE IF NOT EXISTS geofences (id INTEGER PRIMARY KEY AUTOINCREMENT, identifier TEXT NOT NULL UNIQUE, latitude DOUBLE NOT NULL, sin_latitude DOUBLE NOT NULL, cos_latitude DOUBLE NOT NULL, longitude DOUBLE NOT NULL, sin_longitude DOUBLE NOT NULL, cos_longitude DOUBLE NOT NULL, radius DOUBLE NOT NULL, notifyOnEntry BOOLEAN NOT NULL DEFAULT 0, notifyOnExit BOOLEAN NOT NULL DEFAULT 0, notifyOnDwell BOOLEAN NOT NULL DEFAULT 0, loiteringDelay DOUBLE NOT NULL DEFAULT 0, extras TEXT, vertices TEXT, entry_state INTEGER NOT NULL DEFAULT 0, state_updated_at DOUBLE, hits INTEGER NOT NULL DEFAULT 0)
2026-01-18 15:45:51.187 i-[TSLocationManager init] 
╔═══════════════════════════════════════════════════════════
║ TSLocationManager (build 4007)
╠═══════════════════════════════════════════════════════════
{
    activity =     {
        activityRecognitionInterval = 10000;
        disableMotionActivityUpdates = 0;
        disableStopDetection = 0;
        minimumActivityRecognitionConfidence = 70;
        stopDetectionDelay = 0;
        stopOnStationary = 0;
        triggerActivities = "";
    };
    activityRecognitionInterval = 10000;
    activityType = 1;
    app =     {
        heartbeatInterval = 3456;
        preventSuspend = 1;
        schedule =         (
        );
        startOnBoot = 1;
        stopOnTerminate = 0;
    };
    authorization =     {
        accessToken = "<redacted>";
        expires = "-1";
        refreshHeaders =         {
            Authorization = "Bearer {accessToken}";
        };
        refreshPayload =         {
        };
        refreshToken = "<redacted>";
        refreshUrl = "";
        strategy = JWT;
    };
    autoSync = 0;
    autoSyncThreshold = 0;
    batchSync = 0;
    debug = 0;
    desiredAccuracy = "-2";
    didDeviceReboot = 0;
    didLaunchInBackground = 0;
    didRequestUpgradeLocationAuthorization = 0;
    disableAutoSyncOnCellular = 0;
    disableElasticity = 1;
    disableLocationAuthorizationAlert = 0;
    disableMotionActivityUpdates = 0;
    disableStopDetection = 0;
    distanceFilter = 0;
    elasticityMultiplier = 1;
    enableTimestampMeta = 0;
    enabled = 1;
    extras =     {
    };
    geofenceInitialTriggerEntry = 1;
    geofenceProximityRadius = 2000;
    geofenceTemplate = "";
    geolocation =     {
        activityType = 1;
        desiredAccuracy = "-2";
        disableElasticity = 1;
        disableLocationAuthorizationAlert = 0;
        distanceFilter = 0;
        elasticityMultiplier = 1;
        enableTimestampMeta = 0;
        filter =         {
            burstWindow = 10;
            filterDebug = 0;
            kalmanDebug = 0;
            kalmanProfile = 0;
            maxBurstDistance = 300;
            maxImpliedSpeed = 60;
            odometerAccuracyThreshold = 20;
            odometerUseKalmanFilter = 1;
            policy = 2;
            rollingWindow = 5;
            trackingAccuracyThreshold = 100;
            useKalman = 1;
        };
        geofenceInitialTriggerEntry = 1;
        geofenceProximityRadius = 2000;
        locationAuthorizationAlert =         {
            cancelButton = Cancel;
            instructions = "To use background location, you must enable '{locationAuthorizationRequest}' in the Location Services settings";
            settingsButton = Settings;
            titleWhenNotEnabled = "Background location is not enabled";
            titleWhenOff = "Location services are off";
        };
        locationAuthorizationRequest = Always;
        locationTimeout = 60;
        pausesLocationUpdatesAutomatically = 0;
        showsBackgroundLocationIndicator = 0;
        stationaryRadius = 25;
        stopAfterElapsedMinutes = "-1";
        stopTimeout = 5;
        useSignificantChangesOnly = 0;
    };
    headers =     {
    };
    heartbeatInterval = 3456;
    http =     {
        autoSync = 0;
        autoSyncThreshold = 0;
        batchSync = 0;
        disableAutoSyncOnCellular = 0;
        headers =         {
        };
        maxBatchSize = "-1";
        method = POST;
        params =         {
            "device_id" = xxxxx;
        };
        rootProperty = location;
        timeout = 60000;
        url = "http://xxxxx:56001/";
    };
    httpRootProperty = location;
    httpTimeout = 60000;
    iOSHasWarnedLocationServicesOff = 0;
    includeDeprecatedPropertiesInDictionary = 1;
    isFirstBoot = 0;
    isMoving = 0;
    lastLocationAuthorizationStatus = 0;
    locationAuthorizationAlert =     {
        cancelButton = Cancel;
        instructions = "To use background location, you must enable '{locationAuthorizationRequest}' in the Location Services settings";
        settingsButton = Settings;
        titleWhenNotEnabled = "Background location is not enabled";
        titleWhenOff = "Location services are off";
    };
    locationAuthorizationRequest = Always;
    locationTemplate = "{\"timestamp\": \"<%= timestamp %>\",\"coords\": {\"latitude\": <%= latitude %>,\"longitude\": <%= longitude %>,\"accuracy\": <%= accuracy %>,\"speed\": <%= speed %>,\"heading\": <%= heading %>,\"altitude\": <%= altitude %>},\"is_moving\": <%= is_moving %>,\"odometer\": <%= odometer %>,\"event\": \"<%= event %>\",\"battery\": {\"level\": <%= battery.level %>,\"is_charging\": <%= battery.is_charging %>},\"activity\": {\"type\": \"<%= activity.type %>\"},\"extras\": {},\"_\": \"&id=xxxxx&lat=<%= latitude %>&lon=<%= longitude %>&timestamp=<%= timestamp %>&\"}";
    locationTimeout = 60;
    locationsOrderDirection = ASC;
    logLevel = 5;
    logMaxDays = 1;
    logger =     {
        debug = 0;
        logLevel = 5;
        logMaxDays = 1;
    };
    maxBatchSize = "-1";
    maxDaysToPersist = 1;
    maxRecordsToPersist = "-1";
    method = POST;
    minimumActivityRecognitionConfidence = 70;
    odometer = "29.10381247634815";
    odometerError = "113.49621904905";
    params =     {
        "device_id" = xxxxx;
    };
    pausesLocationUpdatesAutomatically = 0;
    persistMode = 2;
    persistence =     {
        extras =         {
        };
        geofenceTemplate = "";
        locationTemplate = "{\"timestamp\": \"<%= timestamp %>\",\"coords\": {\"latitude\": <%= latitude %>,\"longitude\": <%= longitude %>,\"accuracy\": <%= accuracy %>,\"speed\": <%= speed %>,\"heading\": <%= heading %>,\"altitude\": <%= altitude %>},\"is_moving\": <%= is_moving %>,\"odometer\": <%= odometer %>,\"event\": \"<%= event %>\",\"battery\": {\"level\": <%= battery.level %>,\"is_charging\": <%= battery.is_charging %>},\"activity\": {\"type\": \"<%= activity.type %>\"},\"extras\": {},\"_\": \"&id=xxxxx&lat=<%= latitude %>&lon=<%= longitude %>&timestamp=<%= timestamp %>&\"}";
        locationsOrderDirection = ASC;
        maxDaysToPersist = 1;
        maxRecordsToPersist = "-1";
        persistMode = 2;
    };
    preventSuspend = 1;
    schedule =     (
    );
    schedulerEnabled = 0;
    showsBackgroundLocationIndicator = 0;
    startOnBoot = 1;
    stationaryRadius = 25;
    stopAfterElapsedMinutes = "-1";
    stopDetectionDelay = 0;
    stopOnStationary = 0;
    stopOnTerminate = 0;
    stopTimeout = 5;
    trackingMode = 1;
    triggerActivities = "";
    url = "http://xxxxx:56001/";
    useSignificantChangesOnly = 0;
}

2026-01-18 15:45:51.186 i-[TSDBLogger db_delete] maxAge: 86400
2026-01-18 13:28:22.697 O-[TSTimerService stop] T [timeAcquisitionBufferTimer]
2026-01-18 13:28:22.697 B-[BackgroundTaskManager startPreventSuspendTimer:] BG time remaining: 28 | Total tasks: 1
2026-01-18 13:28:22.697 *-[TSTimerService startWithInterval:repeating:callback:] T [preventSuspend] Starting timer: 23.07s repeating: 0
2026-01-18 13:28:19.597 *-[TSTimerService startWithInterval:repeating:callback:] T [timeAcquisitionBufferTimer] Starting timer: 3.00s repeating: 0
2026-01-18 13:28:19.578 i-[BackgroundTaskManager onPreventSuspendTimer]_block_invoke Authorization: 3
2026-01-18 13:28:19.578 O-[TSTimerService stop] T [preventSuspend]
2026-01-18 13:28:19.577 B-[BackgroundTaskManager onPreventSuspendTimer] Prevent-suspend timer fired! (bg time remaining: 4.998436)
Antony 2 days ago

I have a feeling it has something to do with the persistent notification, maybe some phones are killing traccar in the background without a persistent notification. Up till 9.7.0 update traccar have always had a low priority president notification even while stationary, however starting from 9.7.0 there is no longer a persistent notification while in stationary mode. None of my devices have this issue though, but I am guessing it might affect those who might have skipped excluding traccar from battery optimization

Gustl 2 days ago

I saw the comment about the "red" switch. To be honest, I never paid attention to this detail.
Are there more colors and if yes, what is their meaning?

In the linked document:
https://github.com/transistorsoft/flutter_background_geolocation/wiki/Philosophy-of-Operation
I find nothing about colors?