There is a minor bug in AP_Hott_Telem.cpp (Copter 4.0.4dev), probably because of a faulty Graupner documentation:
the gps_fix_char has to be the 3rd last byte in the GPS message, so the correct code is this:
void AP_Hott_Telem::send_GPS(void)
{
// GPS message
struct PACKED {
uint8_t start_byte = 0x7c; //#01 constant value 0x7c
uint8_t gps_sensor_id = 0x8a; //#02 constant value 0x8a
uint8_t warning_beeps; //#03
uint8_t sensor_id = 0xA0; //#04 constant (?) value 0xa0
uint16_t alarm; //#05
uint8_t flight_direction; //#07 flight direction in 2 degreees/step (1 = 2degrees);
uint16_t gps_speed_kmh; //#08 km/h
uint8_t pos_NS; //#10 north = 0, south = 1
uint16_t pos_NS_dm; //#11 degree minutes
uint16_t pos_NS_sec; //#13 position seconds
uint8_t pos_EW; //#15 east = 0, west = 1
uint16_t pos_EW_dm; //#16 degree minutes
uint16_t pos_EW_sec; //#18 position seconds
uint16_t home_distance; //#20 meters
uint16_t altitude; //#22 meters. Value of 500 = 0m
uint16_t climbrate; //#24 m/s 0.01m/s resolution. Value of 30000 = 0.00 m/s
uint8_t climbrate3s; //#26 climbrate in m/3s resolution, value of 120 = 0 m/3s
uint8_t gps_satelites; //#27 sat count
uint8_t free_char3; //#28 ???
uint8_t home_direction; //#29 direction from starting point to Model position (2 degree steps)
int16_t vel_north; //#30 velocity north mm/s
uint8_t speed_acc; //#32 speed accuracy cm/s
uint8_t gps_time_h; //#33 UTC time hours
uint8_t gps_time_m; //#34 UTC time minutes
uint8_t gps_time_s; //#35 UTC time seconds
uint8_t gps_time_hs; //#36 UTC time 0.01s units
int16_t vel_east; //#37 velocity north mm/s
uint8_t horiz_acc; //#39 horizontal accuracy
uint8_t free_char1; //#40 displayed to right of home
uint8_t free_char2; //#41
uint8_t gps_fix_char; //#42 GPS fix character. display, 'D' = DGPS, '2' = 2D, '3' = 3D, '-' = no fix
uint8_t version = 1; //#43 0: GPS Graupner #33600, 1: ArduPilot
uint8_t stop_byte = 0x7d; //#44
} msg {};