I’m having an issue with the compass in my GPS module not being detected after reflashing my flight controller. Here’s the relevant information:
The compass was working completely fine prior to reflashing the board.
Since flashing, I’ve consistently gotten a “Compass not healthy” prearm error.
The compass no longer appears in the calibration screen in Mission Planner.
The GPS portion of the module still works perfectly — I have GPS fix, satellite count, and can see my position in Mission Planner.
I have not changed any of the wiring since the compass was last working.
The compass and GPS are part of the same all-in-one module.
I did not unplug or resolder any of the wires — the only thing I did was gently shift the GPS cable over inside the frame to avoid interference with my VTX. The cable remained connected the entire time.
I do not recall whether the compass was warm before, but I recently noticed the module is warm to the touch.
There have been no crashes, power surges, or other physical damage to the board or GPS.
I’ve searched through parameter settings and confirmed that compass-related parameters are present (e.g., COMPASS_ENABLE, EXTERNAL_COMPASS, etc.), but the compass itself is no longer detected.
If anyone has run into a similar issue or has ideas for what I can try next, I’d appreciate the help. I am sure that I haven’t changed anything except for just reflashing the FC so I am completely stumped. compass-no-work.param (21.6 KB)
You don’t show which FC and which GPS/Compass module you are using.
You Don’t show from which to which firmware you upgraded your FC or did you a reflash with the same firmware. If it was only a reflash with same firmware, why?
I am using the TBS Lucid H7 FC and I am using the M10Q-5883 GNSS & Compass. I reflashed with Arducopter V4.6.1. I believe I had that same version on the previous time as well because I had first flashed it only a couple weeks ago. I reflashed because I put in an SD card for logging but I believe the write speed was too low so it bricked the FC until I could get if out of DFU mode by reflashing it.
Since then the only thing keeping me from arming is the “Compass not healthy” error and on the compass screen I cannot see any compass connected and there for I cannot calibrate in the calibration screen in mandatory hardware.
I have double and triple checked the wiring (and i hadn’t touched the wiring since reflashing it when it worked) and this morning I replaced the GPS and Compass module with a new one and I got the same error so now I believe the error must be something with my params but I am not sure what yet.
I had quick look at the param file and I don’t see anything odd about the setup. I don’t think this is a parameter issue, I feel it’s a hardware problem.
This seems really unusual to me. I haven’t used a TBS board yet, but I’ve used lots of SD cards of varying quality. From expensive overkill, to worthless junk. In my experience a bad card will cause logging or pre-arm issues, but I’m not sure that one could brick an FC.
I am with @Allister. A bad SD card should not brick the FC and corrupt the firmware. This only could happen if you want to flash your FC from the SD card.
The compass is on a different bus as the SD card. SD is using SPI while the M10Q-5883 is using I2C. Do you have other devices on I2C on the same bus as the compass?
AutoPilots using H7 processors can, on rare occasions, get stuck in a state where they won’t complete initialization. Symptoms include being stuck in the bootloader (rapid flashing LED) or freezing during startup, making connection impossible.
This is thought to be caused by memory corruption, possibly from interrupting a flash memory write (like when changing parameters). Due to the processor architecture, firmware can’t fix this automatically. If your FC seems “bricked,” a full reset to an unprogrammed state might help you recover it.
I think this is what caused my flight controller to get stuck in DFU mode. At the time, I thought it was related to removing the SD card, but now I think that was just a coincidence.
As for the compass issue — once I moved the SDA and SCL wires away from the PDB and VTX, the problem went away. What’s weird is that I hadn’t changed the wire placement before reflashing, and it was working fine initially. My guess is that when I opened the top of the drone to work on it, I might’ve slightly shifted the wires, and that minor change pushed the setup into failure.
Worth noting: the compass module itself stayed in the same position the whole time — both when it wasn’t being detected and after I fixed the issue. The only thing I changed was how the wires were routed. I had them originally running near noisy components, and after reading up on I2C, I realized how sensitive it is to electrical noise. That’s likely what caused the issue.
Kind of a rambley response on my part but hopefully people who have this same problem in the future can solve it after seeing this