For a sanity check I sent the ANT+ Network Key command via RS232 (which requires the A4) to the AP2; it responds correctly with a status event message.
RS232 ANT+ Key Command: 0xA4,0x09,0x46,0x00,0xB9,0xA5,0x21,0xFB,0xBD,0x72,0xC3,0x45,0x64
Response: 0xA4,0x03,0x40,0x00,0x46,0x00,0xA1
In synchronous serial mode I wait for the AP2 to send me the 0xA5 and then send the command data: 0x09,0x46,0x00,0xB9,0xA5,0x21,0xFB,0xBD,0x72,0xC3,0x45,0x65; this does not work.
If I send a bogus key in synchronous serial mode (i.e. all 0x20) with the proper checksum (using the 0xA5 in the checksum calculation) the Network key command responds correctly with a status event message.
The difference is the checksum byte. Maybe the AP2 firmware is incorrectly including the checksum byte in the ANT+ key; this checksum byte is different in Synchronous Serial communication because the start byte is a 0xA5, not 0xA4? The command fails if I force the checksum byte to a 0x64 and the key fails because the checksum byte is 0x65?