Compass in maps and app always wrong When I use the direction in maps the direction is almost always ~90° off, occasionally it will be 135-180° wrong but mostly it looks like I'm travelling sideways. The phone is flat. 
Is there something wrong with the hardware? Or can I manually calibrate it (like tell it to offset by 90°)? Or tell it to ignore the compass and just use the direction of travel.  

Also the compass app gives the wrong direction but it doesn't even match the incorrect direction in maps. 

For example I was travelling along this road, away from the motorway.
I had the same problem, what you will need to do is re-calibrate the compass multiple times and it will get closer and closer with each calibration. 

Make sure you are calibrating in the correct way, most people I have seen do it wrong, and it is not very clear from the diagram on the phone. There is a YouTube video which will show you how