So, here was an Inverisense MPU-9150 chip, merrily sitting on the quadrotor control board.
Little pinless LGA24, aka "screw-hobbyists-package".
And all was well...
Until one day the quadrocopter suddenly went out of control and only miraculously landed in one piece.
Fortunately, i just added the black box functionality into the software.
Unfortunately, it appeared not to work too well - all the sensor data was reading as zeroes.
Mystified at why won't it write them down, i tried looking at the numbers over the serial link...
And there were zeroes!
The chip worked, it talked over I2C, it gave out magnetometer data (which is a separate die inside the same claustrophobic package), it appeared to be fully functional.
Except no data came out.
Poking and probing and testing followed, along with an increasing dread that no, it wasn't a software problem and this SHP SOB was in fact dead.
Which means i'll have to make a new board or somehow invent a way to remove and re-solder that thing without damaging anything and without an easy way to reflow the entire board again.
More or less out of desperation, i took the hot air gun, set it at 250*C, put the smallest nozzle on, and ever so carefully heated the sucker up.
No idea why, but i didn't pick it up from the board, but just let it reflow and cool down again.
It's not like there could be any loose contacts or shorts - all the voltages and signals were accounted for.
I power the board back up, check the serial output... And it works!
Both accelerometer and gyro give out correct data, without any signs of trouble or degradation.
So... What could it be?
Was that some kind of a random glitch with a random fix, or is there some sort of a reason why MEMS can get better from heating up?
TL;DR: MPU-9150 was working, but giving out only zeroes, i heated it up to 250*C, cooled it back down, and it's fully functional again. WTF?