NMEA 2000 Shield

I had a bit similar with my Raymarine autopilot. It did not work with True Heading message from my GPS compass, so I programmed my converter box to send Magnetic Heading with Variation correction. Stupid thing to correct wrong direction. Then on other boat I noticed they are sending Variation also on own PGN. I tested that and got it working with HDT message without stupid conversion.

Also in your code you send 60928 ISO Address claim periodically. No device should require that, since it should be automatic and can be requested with 59904 if necessary. So you could test without. I know that some older Garmin did not work without <5 s periodic sending. I have GMI 20 and it works fine and time to time requests it.