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:

  • SERIAL3_BAUD, 57 (telemetry output at 57600)
  • SR3_EXT_STAT, 2 ( 2hz for waypoints, GPS raw, fence data, current waypoint, etc)
  • SR3_EXTRA1, 5 ( 5hz for attitude and simulation state)
  • SR3_EXTRA2, 2 ( 2hz for VFR_Hud data )
  • SR3_EXTRA3, 3 ( 3hz for AHRS, Hardware Status, Wind )
  • SR3_POSITION, 2 ( 2hz for location data )
  • SR3_RAW_SENS, 2 ( 2hz for raw imu sensor data )
  • SR3_RC_CHAN, 5 ( 5hz for radio input or radio output data )