I use Core Motion\'s sensor fusing to get north oriented motion updates:
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameX
From documentation
typedef enum {
CMErrorNULL = 100,
CMErrorDeviceRequiresMovement,
CMErrorTrueNorthNotAvailable
} CMError;
It seems error 102 is CMErrorTrueNorthNotAvailable, and its description is
CMErrorTrueNorthNotAvailable
It seems not much information is available regarding what causes this error. It can be any hardware issue with the device.