voxl-mavlink-server incorrectly sets UTC clock from GPS time
- 
					
					
					
					
 We have experienced an issue where the system clock of the voxl is set based on a system time message received via mavlink which causes all kinds of timing issues resulting in an immediate drone landing/crash. The time which is set is incorrect. In one instance I even saw that it sets it to a day ahead. Note that it only sometimes happens. Most of our flights don't have this issue but when it happens it is a direct problem. In our logs we see the following log lines Oct 27 08:21:29 JOHN voxl-mavlink-server[2280]: setting UTC clock from GPS to: Mon Oct 27 08:20:15 2025 Oct 27 08:21:29 JOHN voxl-mavlink-server[2280]: setting UTC clock from GPS to: Mon Oct 27 08:20:16 2025 Oct 27 08:21:29 JOHN voxl-mavlink-server[2280]: setting UTC clock from GPS to: Mon Oct 27 08:20:17 2025 Oct 27 08:21:29 JOHN voxl-mavlink-server[2280]: setting UTC clock from GPS to: Mon Oct 27 08:20:18 2025 Oct 27 08:21:29 JOHN voxl-mavlink-server[2280]: setting UTC clock from GPS to: Mon Oct 27 08:20:19 2025 Oct 27 08:21:29 JOHN voxl-mavlink-server[2280]: setting UTC clock from GPS to: Mon Oct 27 08:20:20 2025 Oct 27 08:21:29 JOHN voxl-mavlink-server[2280]: setting UTC clock from GPS to: Mon Oct 27 08:20:21 2025The software versions on this drone are: ──────────────────────────────────────────────────────────────────────────────── system-image: 1.8.02-M0054-14.1a-perf kernel: #1 SMP PREEMPT Mon Nov 11 22:47:44 UTC 2024 4.19.125 ──────────────────────────────────────────────────────────────────────────────── hw platform: M0054 mach.var: 1.0.1 SKU: MCCA-M0054-C28-T0-M0-X0 ──────────────────────────────────────────────────────────────────────────────── voxl-suite: 1.4.5 ────────────────────────────────────────────────────────────────────────────────Service Name | Version | Enabled | Running | CPU Usage ─────────────────────────────────────────────────────────────────────────────── docker-autorun | 1.3.1 | Disabled | Not Running | modallink-relink | 1.1.6 | Disabled | Not Running | voxl-camera-server | 2.2.1 | Enabled | Not Running | voxl-cpu-monitor | 0.6.0 | Enabled | Running | 0.0% voxl-dfs-server | 0.2.0 | Disabled | Not Running | voxl-elrs-startup | 0.4.7 | Disabled | Not Running | voxl-feature-tracker | 0.5.2 | Disabled | Not Running | voxl-flow-server | 0.3.6 | Disabled | Not Running | voxl-imu-server | 1.1.3 | Enabled | Not Running | voxl-io-server | 0.0.5 | Disabled | Not Running | voxl-lepton-server | 1.3.3 | Disabled | Not Running | voxl-lepton-tracker | 0.0.4 | Disabled | Not Running | voxl-logger | 0.5.3 | Disabled | Not Running | voxl-mavcam-manager | 0.5.8 | Disabled | Not Running | voxl-mavlink-server | 1.4.7 | Enabled | Running | 3.8% voxl-modem | 1.1.6 | Disabled | Not Running | voxl-open-vins-server | 0.3.12 | Enabled | Not Running | voxl-osd | 0.1.7 | Disabled | Not Running | voxl-portal | 0.7.10 | Disabled | Not Running | voxl-px4-imu-server | 0.1.2 | Disabled | Not Running | voxl-px4 | 1.14.0 | Enabled | Running | 19.2% voxl-qvio-server | 1.2.0 | Disabled | Not Running | voxl-rangefinder-server | 0.1.5 | Disabled | Not Running | voxl-remote-id | 0.0.9 | Disabled | Not Running | voxl-seek-server | 0.3.12 | Disabled | Not Running | voxl-softap | 0.3.5 | Disabled | Not Running | voxl-state-estimator | 0.0.5 | Disabled | Not Running | voxl-static-ip | 0.3.5 | Disabled | Not Running | voxl-streamer | 0.7.5 | Disabled | Not Running | voxl-tag-detector | 0.0.4 | Disabled | Not Running | voxl-tflite-server | 0.4.1 | Disabled | Not Running | voxl-time-sync | 1.4.7 | Disabled | Not Running | voxl-uvc-server | 0.1.7 | Disabled | Not Running | voxl-vision-hub | 1.8.21 | Enabled | Not Running | voxl-vrx | 1.3.14 | Disabled | Not Running | voxl-vtx | 1.3.14 | Disabled | Not Running | voxl-wait-for-fs | 1.4.7 | Enabled | Completed |Where voxl-camera-server and voxl-open-vins-server are our own forked versions with some minor changes. We don't have GPS enabled on our drone: px4-param show -a | grep GPS ADSB_GPS_OFF_LAT [-1,5] : 0 ADSB_GPS_OFF_LON [-1,6] : 0 x COM_ARM_WO_GPS [208,483] : 1 x EKF2_GPS_CHECK [304,586] : 245 x + EKF2_GPS_CTRL [305,587] : 0 x EKF2_GPS_DELAY [306,588] : 110.0000 x EKF2_GPS_POS_X [307,589] : 0.0000 x EKF2_GPS_POS_Y [308,590] : 0.0000 x EKF2_GPS_POS_Z [309,591] : 0.0000 x EKF2_GPS_P_GATE [310,592] : 5.0000 x EKF2_GPS_P_NOISE [311,593] : 0.5000 x EKF2_GPS_V_GATE [312,594] : 5.0000 x EKF2_GPS_V_NOISE [313,595] : 0.3000 x EKF2_REQ_GPS_H [357,641] : 10.0000 FW_GPSF_LT [-1,721] : 30 FW_GPSF_R [-1,722] : 15.0000 GPS_1_GNSS [-1,841] : 0 GPS_1_PROTOCOL [-1,842] : 1 GPS_2_GNSS [-1,843] : 0 GPS_2_PROTOCOL [-1,844] : 1 GPS_DUMP_COMM [-1,845] : 0 GPS_PITCH_OFFSET [-1,846] : 0.0000 GPS_SAT_INFO [-1,847] : 0 GPS_UBX_BAUD2 [-1,848] : 230400 GPS_UBX_CFG_INTF [-1,849] : 0 x + GPS_UBX_DYNMODEL [418,850] : 6 GPS_UBX_MODE [-1,851] : 0 GPS_YAW_OFFSET [-1,852] : 0.0000 LPE_GPS_DELAY [-1,937] : 0.2900 LPE_GPS_VXY [-1,938] : 0.2500 LPE_GPS_VZ [-1,939] : 0.2500 LPE_GPS_XY [-1,940] : 1.0000 LPE_GPS_Z [-1,941] : 3.0000 x MAV_USEHILGPS [456,999] : 0 SENS_EN_GPSSIM [-1,1448] : 0 SENS_GPS_MASK [-1,1484] : 7 SENS_GPS_PRIME [-1,1485] : 0 SENS_GPS_TAU [-1,1486] : 10.0000 SIM_GPS_USED [-1,1555] : 10 x + SYS_HAS_GPS [764,1658] : 0 UAVCAN_SUB_GPS [-1,1930] : 1 UCAN1_GPS0_SUB [-1,2048] : -1 UCAN1_GPS1_SUB [-1,2049] : -1 UCAN1_GPS_PUB [-1,2050] : -1 UCAN1_UORB_GPS [-1,2053] : -1 UCAN1_UORB_GPS_P [-1,2054] : -1Have you seen this issues before and/or do you have any idea how this could be caused? 
- 
					
					
					
					
 @Tjark The drone shouldn't land or crash when the system time is updated. To disable GPS on the drone edit the /etc/modalai/voxl-px4.conf file to set GPS=NONE. Is the system time message coming from PX4 or from a GCS? 
- 
					
					
					
					
 @Eric-Katzfey Thanks for your prompt response! I think it is going down because it gets out of offboard mode because when the time is updated some of our processes also don't work properly anymore. But I don't know if it is only our processes which are affected. The drone already had GPS disabled when this happened: AIRFRAME=MULTICOPTER GPS=NONE RC=CRSF_MAV ESC=VOXL_ESC POWER_MANAGER=VOXLPM AIRSPEED_SENSOR=NONE DISTANCE_SENSOR=NONE OSD=DISABLE DAEMON_MODE=ENABLE SENSOR_CAL=ACTUAL ARTIFACT_MODE=DISABLE EXTRA_STEPS=()We are not connected to a GCS. Just PX4. We haven't seen this issue on sdk 1.1.3 (our previous version) but sometimes on sdk 1.4.5 (our current version) and also on multiple drones. 
- 
					
					
					
					
 @Tjark Probably don't want to apply the offset if clock is REALTIME here: https://github.com/modalai/px4-firmware/blob/96011c76dc9fffb2f2a2528df1767cdf926b24ce/platforms/posix/src/px4/common/drv_hrt.cpp#L464 
- 
					
					
					
					
 @Eric-Katzfey Only for MONOTONIC. I'll look at this more and try to figure out the correct thing to do. 
- 
					
					
					
					
 @Eric-Katzfey Ok, thanks. Looking forward to it. For now, we have put a forked version of voxl-mavlink-server on 1 drone which had this issue a few times. This forked version will log the requested time offset instead of applying it. If we get a log from that, we will post it here if that helps. 
- 
					
					
					
					
 @Tjark There is an updated voxl-px4 here: http://voxl-packages.modalai.com/dists/qrb5165/dev/binary-arm64/voxl-px4_1.14.0-2.0.116-202510301051_arm64.deb. You will also need an updated libfc-sensor library here: http://voxl-packages.modalai.com/dists/qrb5165/dev/binary-arm64/libfc-sensor_1.0.8-202508141142_arm64.deb. Can you try to update with these 2 and see if it solves the issue? 
