Here is just a quick heads up for anyone having problems using Chinese sourced Magnetometer modules. It appears that some of these Modules (marked as HMC588L) are hide_ing a dark secret ... the chips glued to them are rouge (these have an alias name of QMC588L even though they are marked as HMC588L's).
To determine the chip that is glued to yours you will have to run an i2c address checker on it. It turns out that they have different i2c address's and also different register placements.
Differences in address: 0x0D for QMC5883L; 0x1E for HMC5883L
The best workaround for the "0x0D-rouge version" I have found so far is to use the code posted here :- https://www.esp8266.com/viewtopic.php?f=13&t=15445&sid=ebc1cd13ca5e02cbe4c3133dcbdf956f&start=4
This code I have tested as working on the Arduino + Esp8266 + ESP32
Hope this helps anyone mystified by their Azimuth ....G