diff --git a/src/router/call.c b/src/router/call.c
index 4862bf8..3e39584 100644
--- a/src/router/call.c
+++ b/src/router/call.c
@@ -1198,6 +1198,7 @@ static struct param {
 	struct osmo_cc_helper_audio_codecs orig_codecs[MAX_CODECS + 1];
 	struct osmo_cc_helper_audio_codecs term_codecs[MAX_CODECS + 1];
 	int orig_given, term_given;
+	char *clearmode_exclusive;
 
 	/* play */
 	char *filename, *volume, *loop;
@@ -1376,6 +1377,7 @@ static int parse_params(int argc, char *argv[], struct command_def *command_def)
 struct param_def param_rtp_proxy[] = {
 	{ .n = "orig-codecs", .o = param.orig_codecs, .d = "Define allowed codecs to be accepted by originating endpoint. (codec1,[codec2[,...]])" },
 	{ .n = "term-codecs", .t = param.term_codecs, .d = "Define allowed codecs on terminating endpoint in order of preference. (codec1,[codec2[,...]])" },
+	{ .n = "clearmode-exclusive", .s = &param.clearmode_exclusive, .d = "Assume data call only if CLEARMODE is the only offered codec", .no_value = 1 },
 	{ .n = NULL }
 };
 
@@ -1404,6 +1406,8 @@ static void routing_rtp_proxy(call_t *call, int argc, char *argv[], struct comma
 		return;
 	}
 
+	parse_params(argc, argv, command_def);
+
 	relation->cc_session = osmo_cc_session_receive_offer(&relation->cc_ep->session_config, relation, relation->sdp);
 
 	/* Check for CLEARMODE. */
@@ -1420,8 +1424,11 @@ static void routing_rtp_proxy(call_t *call, int argc, char *argv[], struct comma
 			}
 		}
 	}
-
-	parse_params(argc, argv, command_def);
+	/* assume data call if only CLEARMODE offered */
+	if ((!codec_audio || !param.clearmode_exclusive) && codec_clearmode) {
+		LOGP(DROUTER, LOGL_INFO, "Receveived data call. RTP proxy uses CLEARMODE now.\n");
+		call->datacall = 1;
+	}
 
 	if (call->datacall) {
 		memcpy(relation->orig_codecs, codecs_def_data, sizeof(codecs_def_data));
