IMUV2.0 problems


I have just DIY my IMU moduleV2.0,but my pressure chip is MS5803-14BA,
this is my SCH.

My Rov is V2.8,and software is 30.0.3.I have detected the wire ,the connection is OK.
The CorkPit infromation shows below:

log Attemping tp fetch depth calcoeffs
Depth.CoeffFailure C7
Depth.crcCheck CantPerform

mpu_init failed with code -1

Who can tell me why?


Hello, I have the same problem with the same log.
Were you able to solve the problem?
Thank you


The depth sensor messages are fixed per correcting the component model in the Arduino library.

For the IMU, be sure that it has consistent power (no power cycles). I have seen the init failures in the past when we had fast power cycles during the boot up of the rov on the 3.3v rail.

Good luck


So, I am not sure I saw any way to debug this problem. We also have a 2.8 OpenROV running 30.0.3. We have triple checked the solder joints and continuity. Our log shows the same data as reported above:

Depth.CoeffFailure C7
Depth.crcCheck CantPerform

mpu_init failed with code -1

The suggestion is to fix the component model in the Arduino library. How do we do this? Is there a procedure somewhere (and, if so, shouldn’t it be referenced by the IMU module install instructions??)

I look forward to your reply.


The depth sensor messages with the crcCheck not being performed and the Constant values being invalid does not effect the actual depth sensor. That is fixed in the 30.0.4 branch for the firmware code. It will be released in the next rev of the ROV software so we have not focused on back porting. Perhaps someone else in the forum has already back ported those changes to the 30.0.3 software image and could share? Spider_Keys did leave high level instructions here:

As for the BNO portion of the IMU:

The short list of things to check if getting BNO_INIT_STATUS_FAILED messages (assuming no positioning information is flowing):

  1. Are you running on full batteries? Using Lithium batteries?
  2. Double check that the MISO and MOSI lines did not get switched.

@spiderkeys, have you tracked any other situations short of a fried chip for the BNO_INIT_STUTAS FAILED message?


There are a few reasons you can get that message in addition to a fried chip:

  • IMU wires aren’t connected correctly (if your depth sensor is working, you can rule this out)
  • You’ve set the wrong I2C address for the sensor (if you haven’t changed it from the default, this isn’t a problem)
  • There is another device with the same I2C address on the line
  • There is noise on the I2C line that is causing some transmissions to fail
  • Something else in your code is causing I2C transmissions to fail
  • You’re using the Wire library and not our custom I2C library which fixes hangups on the I2C bus

Can’t think of anything else that could cause the failure at the moment.


So, we tried to reload the 30.0.3 firmware twice. We repeated ALL steps: Downloading, format SD, burning the image to SD, copying the image to the Arduino card, re-assembling the electronics, and kicking off the update. We get part way through the compile and get this error: : Compile of the Arduino image failed. Building firmware failed! Aborting”

Any reason why this should be the case? How do we debug it?


Can you send the details?


I attached a photo of the compile window at this location: (support site). Beyond that, this is a stock 2.8 OpenROV kit running 30.0.3. We fully followed each step in this guide completely ( When we got to step 16, the compile would not complete, per the post above and the screen capture in the first link. What other details might you want?


Just to update the thread, here is the picture.


We have successfully loaded version 30.0.2, compiled it, and installed it. The software ran as expected, but the IMU still did not function properly. We triple checked the wiring again, then downloaded 30.0.3, wrote it to the SD card, loaded it on to the BBB, compiled it, and installed it. This time the compile worked! We brought up the ROV, but still no IMU functionality. This is going to south America in about 10 days, and we need this working. What is the next step? Do we need to buy another IMU? Any other debugging steps we can follow? Any insights would be welcome.


PS - On our other ROV, the IMU is installed and appears to work (we haven’t fully tested/calibrated it yet, but we get reasonable sensor readings). Again, what is our next step?


Was this problem ever resolved? We are experiencing somewhat similar difficulties with our IMU. We are getting the BNO_INIT_STATUS FAILED message as well as mpu_init failed with code -1. All of the roll pitch and yaw values are zero, and the compass and artificial horizon correspondingly don’t move. We believe the IMU is properly connected and we are getting pressure readings. So was this thread ever figured out? It sounds similar to what’s going on here.


A somewhat late answer to your question is, yes, but we had to replace the IMU. The good news: it worked…for a while. The IMU stopped working about a week ago. Everything else seems to operate correctly, but we have no auto depth hold or auto heading hold, which are both critical to performing transects. We’ve double checked all of the wiring and reseated all of the electronics to ensure a good electrical connection, but no luck. This the second of three IMUs that have failed on us. I guess a .333 batting average is pretty good in baseball, but I would expect solid state electronics to last a little longer. Does anyone have any ideas why the IMU stopped working? Are there any good diagnostics we can run? Any insight or ideas would be most welcome.


Hey Craig,

If you have a spare micro-sd card around, it would be worth trying the latest Beta build for 31.0.0. That includes firmware updates that help the system recover from a bunch of error conditions that can occur.