Why does the gyroscope in an iPad stop working on an airplane?

Solution 1:

OK I THINK I FIGURED IT OUT! It was my fault almost entirely, but I have an answer that may be useful to others. Here is the deal:

1: I set the gyros to update at 60 hertz 2: On the ground, the app RAN at 60 hertz, so grabbed one gyro update per frame 3: In flight, my app did MORE WORK (!!!) to display what the airplane was doing, and thus fell to less than 60 hertz update rate of the app! 4: At this point, the update messages from the gyro queued up and the event-reader got behind... WAY behind, so I was looking at real gyro data from EARLIER IN THE FLIGHT!

So, the REAL lesson here is that setting the update rate of the gyros to a value greater than the frame-rate of the app results in event queing that has you running behind.

If anyone knows how to soak up ALL the gyro events EACH frame of the app, rather than just reading one, then that would APPEAR to solve this issue... whew! Interesting!

Solution 2:

If the iPhone uses a gyroscope based on tiny parts inside vibrating (sensing changes in vibration under acceleration), it's possible that all the extra vibration in an airplane in flight swamps out the detectable signal with noise. To test this theory on the ground you'd put your phone in a "mechanically noisy" environment with similar characteristics. A vibration table might work, or it might be too strictly periodic (too close to sinusoidal, not broadband enough) to be a good simulation. Maybe hold it against the side of a power drill while trying to drill through a heavy board? Attach it to a bike frame and ride over gravel?

http://en.wikipedia.org/wiki/Vibrating_structure_gyroscope
http://www.ifixit.com/Teardown/iPhone-4-Gyroscope-Teardown/3156