Most GPS receivers and smart phones contain an "electronic compass", which I understand is generally a Hall effect magnetometer. These devices generally require "calibration", which involves waving the device in an [8-shaped figure](http://www.s3sensor.com/en/s3/calibration/). During the motion, the forward axis is tilted about 45 degrees in each direction and the sideways axis inverted there and back, initial direction does not matter. The device does not to be put in any special mode for the calibration. This calibration is needed *each time the device is turned on*. Why is it needed?

The Hall effect sensor should measure magnitude of the magnetic field in given direction. So I'd expect a pair of sensors to be able to measure direction and magnitude of magnetic field in horizontal plane consistently each time and a needle compass isn't doing anything more. I can understand the other kind of calibration, turning the compass around twice slowly, as needed to compensate for magnetic bias generated by the device itself, but that's only needed once as expected (the device generates same bias each time). So what is this every-time calibration compensating for?