I’m using the le_mcc and le_audio APIs to establish a phone call and to play samples using le_audio_PlaySamples.
This works perfectly for the majority of the time, however I have observed occasions whereby the call is successfully established but no audio can be heard on the receiver phone. When the cell module is in this errored state, all future calls are silent until I reboot the module.
The issue seems to occur when a phone call is initiated too soon after a previous call is hung up.
I have managed to reproduce the issue using the example voiceCallApp by running the following bash command on the module and leaving it to run for a few minutes:
while true; do voice call <number> && voice hangup; done
I am using the WP76xx module with firmware version R16.1 and Legato Application Framework version 19.11.6.
You can also make the stress test on “ATD12345678;” and “ATH” on USB AT command port and see if problem also exists on AT command port or just legato app problem
My app already contains a 10 second delay after a call hang-up to allow another call to be made and sadly the silent call issue still occurs.
Sending the “ATH” AT command did not resolve the issue. Also, I ran:
while true; do echo "ATD<number>;" > /dev/ttyAT && echo "ATH" > /dev/ttyAT; done
I let this run for 30 seconds or so and then used the voiceCallApp and ran voice hold (which usually plays piano music on the call) and the audio was silent.
I see the following messages all the time, even when audio can be heard on the call
[ 84.127767] voc_start_playback: Invalid session
[ 84.131403] voc_start_playback: Invalid session
[ 84.135783] voc_start_playback: Invalid session
[ 84.140759] voc_start_playback: Invalid session
[ 84.242427] afe_get_cal_topology_id: [AFE_TOPOLOGY_CAL] not initialized for this port 32773
[ 84.260053] q6asm_callback: payload size of 8 is less than expected.
[ 84.265921] q6asm_callback: cmd = 0x10da1 returned error = 0x3
[ 84.271352] q6asm_send_cal: DSP returned error[3] audio audstrm cal send
[ 84.297818] adm_callback: cmd = 0x10328 returned error = 0x3
[ 84.302766] send_adm_cal_block: DSP returned error[ADSP_EUNSUPPORTED]
[ 84.309840] adm_callback: cmd = 0x10328 returned error = 0x3
[ 84.314712] send_adm_cal_block: DSP returned error[ADSP_EUNSUPPORTED]
[ 103.910863] voc_end_voice_call: Error: End voice called in state 3
I only see the following error messages when the audio becomes silent:
[ 287.047458] MDM Media1: ASoC: no backend DAIs enabled for MDM Media1
[ 287.058263] q6asm_callback: cmd = 0x10bcd returned error = 0x1
[ 287.063322] __q6asm_cmd: DSP returned error[ADSP_EFAILED] opcode 68557
Sadly running AT+CFUN=0 and AT+CFUN=1 does not resolve the issue. When the cell modem is in this errored state, using “AT!AVAUDIO” does not produce audio either, whereas it successfully generates audio when the modem is not in the errored state
if you confirm that “AT!AVAUDIO” does not produce sound to peer side during voice call when problem happens, that means it is not related to the CODEC driver problem.
I guess purely problem in the qualcomm modem core.
Yes it will decrease the rate of reproducibility, however the issue still occurs occasionally and there is no way to detect when it occurs in my legato application; if there were I could reboot the modem programmatically
for loops like the one you gave only work in bash, which is not installed on the cell module, only the busybox shell is, so instead I ran for i in seq 1 1659; do amix $i; done when the modem was in a good state and again when the modem was in bad state (i.e. silent audio on calls).
I used “meld” to diff the two outputs and there was no difference whatsoever
Good idea, although that error is not always printed when the audio becomes silent. It seems that the audio being silent is a symptom of several problems