OsmocomBB MNCC socket implementation without LCR

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/baseband-devel@lists.osmocom.org/.

Gerard Pinto gerardfly9 at gmail.com
Fri Mar 17 09:47:18 UTC 2017


I have been working with Layer23 stack of OsmocomBB since a couple of
I decided to try MNCC socket interface without LCR (I'm aware there is an
implementation embedded in LCR gsm-ms).
I reverse engineered and wrote a simple C application taking mncc.h.

Problem: I'm unable to make a call on live network, although it does channel
allocation, ciphering etc.
1. Create MNCC struct and write on to the osmocomBB socket
2. OsmocomBB parses it well and request for channel, ciphering mode, init
MM, sending SETUP etc works great.
3. However, in response to step.2 after sending SETUP it returns with (ms 1)
Received 'RELEASE_COMPL' in CC state INITIATED. Why does it release CC?
4. I further debugged, the reason for release is in fn.
gsm48_cc_rx_release_compl in (gsm8_cc.c) it says mncc-cause =
*GSM48_IE_CAUSE*. with no description.

I really don't know whats causing this issue. Any help would be much
Or It would be very kind if someone could guide me.

My mncc socket create code:
	struct gsm_mncc *mncc;
	int i = 0;
	int call_ref = new_callref++;
	mncc = create_mncc(MNCC_SETUP_REQ, call_ref);

	if (!strncasecmp(number, "emerg", 5)) {
		printf("Make emergency call\n");
		mncc->emergency = 1;
	} else {
		printf("make call to %s\n", number);
		mncc->fields |= MNCC_F_CALLED;

		if(number[0] == '+') {
			mncc->called.type = 1; /*international*/
		} else {
			mncc->called.type = 0; /*auto-unknown -prefix must be used*/
		mncc->called.plan = 1;
		strncpy(mncc->called.number, number,
		sizeof(mncc->called.number) - 1);
		printf("Calling number %s\n", mncc->called.number);

		/* bearer capability (mandatory) */
		mncc->fields |= MNCC_F_BEARER_CAP;
		mncc->bearer_cap.coding = 0;
		mncc->bearer_cap.speech_ctm = 0;

		mncc->bearer_cap.radio = 3; /** Support TCH/H also*/
		/** Supported rates **/
		mncc->bearer_cap.speech_ver[i++] = 2; /* support full rate v2 */
		mncc->bearer_cap.speech_ver[i++] = 0; /* support full rate v1 */
		mncc->bearer_cap.speech_ver[i++] = 1; /* support half rate v2 */
		mncc->bearer_cap.speech_ver[i] = -1; /* end of list */
		/** END **/
		mncc->bearer_cap.transfer = 0;
		mncc->bearer_cap.mode = 0;

		/* CC capabilities (optional) DTMF */
		mncc->fields |= MNCC_F_CCCAP;
		mncc->cccap.dtmf = 1;

		mncc->fields |= MNCC_F_CCCAP;
		mncc->clir.inv = 1;
		mncc->clir.sup = 1;

	return send_and_free_mncc(mncc->msg_type, mncc);

Looking forward to the reply,

View this message in context: http://baseband-devel.722152.n3.nabble.com/OsmocomBB-MNCC-socket-implementation-without-LCR-tp4026771.html
Sent from the baseband-devel mailing list archive at Nabble.com.

More information about the baseband-devel mailing list