Hi
Sounds like I am seeing exactly the same thing with the MPU6050 when using the FASTWIRE switch in i2cdev lib.
I went over to FASTWIRE as I am seeing the I2C bus hang occasionally, strangely more when I am just doing a simple register read for mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);. Switching to FASTWIRE where the library has a timeout seems to work round this fine and it does not hang. I only need a snapshot of the readings not tracking them so the time stamp is not critical.
However !! If I run the MPU6050_DMP6 code and do an mpu.dmpInitialize(); it hangs, with DEBUG on it just waits at
DEBUG_PRINTLN(F("Waiting for FIFO count > 2..."));
while ((fifoCount = getFIFOCount()) < 3);
With the wire lib it works fine. (but occasionally hangs on the I2C bus)
I went back to the original calibration and DMP examples in Jeffs current github releaserelease to make sure I had not added anything in my code but get the same results.
The config is a standard Arduino 16MHz 5v Uno hooked up to a GY-521 MPU 6050.
I have tried oneof the basic read scripts with the wire libray and it seems to read the accel and gyro registers without hanging, so I think the issue is in the libs.
The anoying thing is that using a calibrate to let things settle out and then the DMP in Jeffs libs I get a super stable output which always comes back to the original point, great nice if it did not hang !!
I would be very grateful for any thoughts.
As a work round I am going to try FASTWIRE without the DMP and do the ypr in the processor, but a load of hassle.