This isn’t a problem with the firmware. Your APM is not sending the data automatically. Therefore, you need to request data rates from APM by using the Mission Planer, another GCS or even by your OSD board. That’s why it only works with TX connected. ArduPlane saves the requested rates on EEPROM (last request from a GCS or OSD). ArduCopter doesn’t do that. E,g. Check on Mission Planner: Configuration >> Parameter List: All the parameters with the prefix “SR3” are related to this. E.g.: SR3_Extra1 = 5 means the IMU data being sent through telem port (serial 3) five times per second. If that wasn’t set, so it will not send IMU data without an explicit requesting.
This is the complete list with the respective values: