Hello again,
After spending significant time chasing the same ~4-min and ~8-min sat dropout bug across multiple Here4 units (including a brand-new unit straight from the shelf), I want to share a workaround that has so far held up across three consecutive bench tests on a unit that previously failed 100% of the time. I am hoping others affected can try this and confirm whether it also works for them. And I would also love for the CubePilot team to weigh in on potential side effects of this if possible.
Background
I observed the bug on three separate Here4 units, including the latest firmware (GNSSPeriph 1.15.7). The bug fires once per power cycle at either ~4 min or ~8 min after boot, dropping sat count from ~28-30 to ~10 (sometimes lower) for about a second. The EKF reacts to this, and in my flights it has caused toilet-bowling behavior in Loiter mode, so this is operationally significant, not cosmetic.
Things I ruled out through extensive testing:
- Magnetometer interference (mag innovations were stable)
- Power-system EMI from motors (no current correlation across full flight)
- RF interference from onboard payload (bug fires on bare carrier board with only USB power)
- Constellation overload (bug fires with GPS-only, GPS+Galileo, GPS+GLONASS)
- L5 health flag toggling (GPS_DRV_OPTIONS bit 5 set, override active)
- HSITrimUsingPPS (GPS_DRV_OPTIONS=288 default on both working and broken units)
- QZSS signal disable alone
I also did try collecting the .ubx log to see if I could capture the issue, but ran into several problems. The first one being that I could not figure out how to increase the baud rate beyond 230400, and it seemed that the UART link was saturated. I tried changing it on the Mission Planner passthrough, but it failed unless I did 230400. I collected a ubx log anyway, but from the brief analysis that was done on it, it doesn’t seem like the bug happened while collecting data in this state. The system may be working differently when connected to u-center and debugging.
The Workaround
The thing that worked, on the unit that previously failed deterministically, was performing u-center’s “Revert to default configuration” followed by “Save current configuration” on the receiver, via Mission Planner’s CAN passthrough.
Step-by-step:
I’m unsure if the first 3 steps are truly needed. This was an artifact of trying to reproduce something from yesterday, so I followed the same steps exactly. Keep that in mind.
1. Connect to the Here4 in Mission Planner’s DroneCAN GUI. Set `GPS1_GNSS_MODE = 5` (or any non-zero value). Write and commit. This causes AP_Periph to push a CFG-GNSS message to the u-blox.
2. Power-cycle the airframe. Confirm sat count drops (constellation reduction took effect).
3. Set `GPS1_GNSS_MODE = 0` via DroneCAN parameters. Write to flash. This stops AP_Periph from continuously re-pushing CFG-GNSS on subsequent boots.
4. Right-click the Here4 node in DroneCAN GUI and select CANPassThrough Here3+/4. Default TCP port, baud 230400.
5. Open u-center → File → Receiver → Connection → Network → `tcp://127.0.0.1:port`.
6. In u-center: View → Configuration View → CFG → select “Revert to default configuration” → check both 0-BBR and 1-FLASH in the device list → Send.
7. Without closing the dialog, select “Save current configuration” → BBR + FLASH again → Send.
8. Cold start the receiver from u-center (Receiver → Action → Cold Start).
9. Disconnect u-center. Close CAN passthrough in MP.
10. Full power cycle (drain backup capacitor for 30+ seconds).
After this, on next boot the receiver takes a bit longer than usual to acquire (cold start), and sat count settles around 24-26 (vs ~28-30 before). The periodic 4-min and 8-min dropouts have not fired across 3 test sessions of 10-12 minutes each (i.e., past both typical trigger windows).
Some side-effects to note:
- Sat count drops 4-6 sats below pre-fix levels.
- The procedure probably resets ALL u-blox CFG values to factory defaults, then commits them to non-volatile memory. AP_Periph’s normal CFG-MSGOUT and CFG-RATE pushes still happen at boot.
Open Questions for CubePilot
If anyone from CubePilot is reading: would you be willing to comment on the following?
- Is u-center’s “Revert to default configuration” safe to apply to a Here4? Specifically, does it affect the Moving Baseline customization that you’ve added to the u-blox firmware? My understanding is that “Revert” only affects CFG-VALSET items, not the firmware itself, so Moving Baseline capability should remain, but I’d appreciate confirmation.
- Are there any other side effects I should be aware of? Settings that get reset to defaults that might be important for specific use cases?
- Could this be incorporated as a one-time provisioning step on production Here4 units to ship them in a state that doesn’t exhibit the bug?
- Any insight from your side on what specifically gets cleared by the revert that suppresses the bug? That information would help us understand whether the workaround is durable across firmware updates.
For Other Affected Users
If you’re seeing the same ~4 or ~8-min sat dropout on your Here4, please consider trying this procedure on a bench setup first (not in flight) and report back whether it stops the dropout on your unit. The more datapoints we collect, the better we can characterize whether this is a universal workaround or specific to my unit’s history.