Quectel ec25-e Voice Call Problem

Hi,

We have a voice problem on EC25 PCIe module. We use Novuton codec chip. You can see the initialization code below.

Problem is that we can make call clearly in the open area. But when we move the device inside the building a few times we can get the voice both side. Then the voice is gone (we can make call and answer but without voice) and never come back again even if we move the divce to the outside again. If we re-energized the device when the voice is gone in the building, we can make call with the voice a few times. Then it is gone and also never comes back again.

We supposed that the module loose codec configuration. We set it in the routine at every 1 second. And also we set “mute=0” and “level=5” in the routine every 1 second. Nothing has changed. Still we have problem.

Could you suggest how can we solve the problem?

///////////////////////////////////////////// CODEC CHECK ////////////////////////////////////////////
bool gsm_codec_check()
{
gsm_fsend(F(“AT+QEEC=6,1234”));
gsm_wait_until_resp(GSM_OK, 1000);

gsm_fsend(F(“AT+QDAI=2,0,0,4,0,0,1,1”));
gsm_read_until_resp(GSM_OK, 1000);

if( strstr_f(GSM_BUFFER, F(“OK”)) )
return true;
else
return false;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////// GSM INIT /////////////////////////////////////////////
void gsm_init()
{
int i=0;
bool gsmReady = false;

// Buffer temizle -----------------------------------------------------------
memset(GSM_BUFFER, ‘\0’, GSM_BUFFER_SIZE);

DEVICE_INFO.latitude = 0.0;
DEVICE_INFO.longitude = 0.0;
status_set(STATUS_GPS_BAD_SIGNAL, 1);

// Default baudrate ayarla --------------------------------------------------
GSM_SERIAL.begin(GSM_BAUDRATE_DEFAULT);

// Donanım haberleşmesi kontrol ---------------------------------------------
i=0;
while( ++i < 100 && !gsmReady )
{
gsmReady = gsm_check();
delay(500);
}

// Bayrak güncelle ----------------------------------------------------------
GSM_STATUS.isModuleReady = gsmReady;

// Durum güncelle -----------------------------------------------------------
status_set(STATUS_HW_GSM_FAILURE, !gsmReady);
status_set(STATUS_HW_GPS_FAILURE, !gsmReady);

// Modül hazır ise ----------------------------------------------------------
if( gsmReady )
{
// Sim kart denetle ---------------------------------------------------------
GSM_STATUS.isSimReady = gsm_check_simcard();
status_set(STATUS_GSM_NO_SIM, !GSM_STATUS.isSimReady);

// Sim kart hazir ise -------------------------------------------------------
if( GSM_STATUS.isSimReady )
{
  gsm_set_function(GSM_FUNC_FULL_WO_PWR_SAVING);
  gsm_check_status();
}

gsm_fsend(F("AT+CLIP=1"));
gsm_wait_until_resp(GSM_OK, 1000);

gsm_fsend(F("AT+CRC=1"));
gsm_wait_until_resp(GSM_OK, 1000);

gsm_fsend(F("AT+CLVL=5"));
gsm_wait_until_resp(GSM_OK, 1000);

GSM_STATUS.isCodecOK = false;
GSM_STATUS.codec_try = 0;
while(GSM_STATUS.codec_try++ < 10 && !GSM_STATUS.isCodecOK)
{
  delay(1000);
  GSM_STATUS.isCodecOK = gsm_codec_check();
}

status_set(STATUS_PHONE_CODEC_FAILURE, !GSM_STATUS.isCodecOK);

gsm_gps_init();

gsm_http_c_init();

gsm_internet_check();

}

F_GSM_READY_TO_COM = true;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////// GSM TASK /////////////////////////////////////////////
void gsm_task()
{
if(!GSM_STATUS.isCodecOK)
{
GSM_STATUS.isCodecOK = gsm_codec_check();
status_set(STATUS_PHONE_CODEC_FAILURE, !GSM_STATUS.isCodecOK);
}

// Other stuffs

}
//////////////////////////////////////////////////////////////////////////////////////////////////////

Dear Sir,
Thanks for your inquiry in Quectel forum.
For your issue, as you know that the only different between open area and inside building is the external environment, and the module may register on different band or different cell, and the network signal also different. So whether you can check the registration information in the open area and inside the building with AT+QNWINFO, and the signal with AT+CSQ. Thanks!
By the way, it is better to use quectel recommended codec chip( NAU8814 or ALC5616 or TLV320AIC3104) to test. Thanks!