Don't forget the marvellous input of Ultra (Bletchley Park). I believe the U-boat commanders were required to pass a Position Report to the Kriegsmarine every 24 hours.
Once the codebreakers had broken into the German Naval "Enigma", this enormously simplified our task in the Battle of the Atlantic.
D.