I've tried several options to get a reliable GPS/Mag signal. My initial strategy was to try to get by as cheaply as possible.
I twisted the power wires between the battery and the lower frame/PD board and the ESC's and motors insofar as their length allowed, mounted the Revo board on an auxiliary upper deck above the upper frame board on 25 mm spacers, and recalibrated all the sensors several times, but still couldn't get a reliable Mag signal from the onboard Mag sensor.
I've also tried a couple of mini OP GPS and uBLOXNEO-M8N modules, which worked OK for a GPS fix, but didn't solve the Mag problem.
Since I have reliable PWM connections between my Orange receivers and my Revo boards, I haven't wanted to deal with trying to get a PPM connection set up to free up more Flexi-IO port connections for other uses. This leaves only the Main and Flex port available for GPS, Mag, and OSD I/O, which precludes adding extra connections between the modules and the FC board. In addition, I'm not confident enough in my soldering skill to add connections to the M8N modules without damaging them. Additionally, I try to minimize the rats nest of wiring that is otherwise inevitable with extra connections.
So, I bit the bullet and bought genuine DJI NAZA GPS/Mag units for both my quads. They weren't egregiously expensive and plug and play into the Main port after substituting 4 pin JST for the DJI connector, which was an easier soldering job than working with the teensy weensy solder pads on the circuit board. They've calibrated easily and I now have reliable GPS flight modes.
It's been interesting and educational to try out the various options, but, in retrospect, would have been cheaper and simpler to get NAZA units from the beginning.