ArduPilot EU Dev Call 2026-06-24

Attendees (unique): 7

UTC0702

Peter: An error where you’re trying to switch to a full sector.
Andrew: Yes, there’s only one place it could be called from.

  • It means while it’s trying to change into a new sector, it’s trying to call it again.
  • That’s a new one.

P: It seems to be expected, since after we fill up a page, we can’t switch away and erase it.
A: Why? When we do that, we repack the parameters in the new page and erase the old sector.
P: We don’t do the erasing without triggering a watchdog.
A: No, we certainly can erase a single sector. But yes, not when armed.

  • It should be easy to reproduce this in SITL, by changing a lot of parameters.
  • But with an H7 it would take a VERY long time.

P: I seem to have a flash.dat in an old PR that would reproduce this error.
A: I suspect it’s related to the size of a write when the storage is almost full.

  • AI says it could happen if you remove power after a sector is declared full but the new one is not switched to yet.
  • If that’s true, then it would be possible to reproduce in SITL.

UTC0715

P: Updated boards which don’t have code to run a heater anyways. They don’t have a heater AFAIK.
A: I’m slightly concerned there’s a board that actually has a heater and we cook the board by removing the pin definition.

  • For example, the Pixhawk1 didn’t have a heater, but I don’t know about the various clones.
  • But you’re probably right with this change. The only board that I have doubts about is the MRoX2.1.

P: I’ll ping MRo then.


UTC0725

A: Do we get a race condition if both EKF2 and EKF3 set an origin?
P: No, because we set the origins sequentially. If we did this in threads, then yes, we risk a race condition.

  • Resetting the EKF across a thread would also be problematic. It would need a mutex.
  • Incidentally, this PR will make it so the configured AHRS backend will update first and consume CPU first, potentially starving the active backend (when they are different).

A: Does the external AHRS query the origin?
P: Apparently we set it and then we query it in get_relative_position_NED.
A: Approved! But would be nice to do some hardware/flight testing.


UTC0743

A: In SITL, does get_hw_rtc() scale with speedup? It shouldn’t.
P: No, it’s wallclock.
A: You’re right.

  • Strange that we don’t use this call anywhere else.
  • So io_thread() is blocked from advancing because of the simulated time.

P: The delay in io_thread() also prevents us from pushing a lot of data out.
A: How about setting a VERY large buffer size on replay SITL so that it can hold the whole log?

  • It could probably fit about 32MB.
  • It would be a smaller change.

A: Approved!


UTC0804

P: We didn’t get to fly this.
G: Let’s wait for Pete Hall to approve it.
P: Left a few nonblocking comments.


UTC0813

A: Approved once the missing protocols are addressed.


UTC0817

A: Usually we gate by AP_Compass, not AHRS. What happened here?
P: Back then Johnathan Challenger wanted to use the AHRS values apparently.
A: Approved!

Regarding the heater, there’s another edge case where the usage of external AHRS causes the heater target to track an external imu temperature, causing a runaway. This requires building with a special hwdef or build flag to retarget which IMU is used as the heater target. There didn’t seem to be a way to determine if an IMU instance was being driven externally and signal a graceful switch of heater target to an internal IMU without adding some variables, not sure if that kind of think is valuable enough to cost flash space for everyone, but I could submit a documentation update pr instead since it was a surprise

That’s an interesting report. Have you filed an issue for that? Would you like me to do so on your behalf?

Sorry I just saw this, I’ll be home from vacation next week and can try to do a brief write-up and proof of concept. If you think it’s worthy of filing an issue now. I can do so next week.