MangOH Red audio not working WP7702

I’m trying to run the audioPlaybackRec test on the mangOH Red. I’m running R12 firmware and legato 19.07. Output of CM INFO:

Device: WP7702
IMEI: 352653090113606
IMEISV: 4
FSN: VU810385660610
Firmware Version: SWI9X06Y_02.32.02.00 c2e98c jenkins 2019/08/30 07:28:21
Bootloader Version: SWI9X06Y_02.32.02.00 c2e98c jenkins 2019/08/30 07:28:21
MCU Version: 002.013
PRI Part Number (PN): 9907365
PRI Revision: 001.004
Carrier PRI Name: GENERIC
Carrier PRI Revision: 001.055_000
SKU: 1103530
Last Reset Cause: Reset, User Requested
Resets Count: Expected: 77 Unexpected: 1

output of legato version:

19.07.0_6ebfa306dc802a91d515da9361145709_modified

When running: app runProc audioPlaybackRec --exe=audioPlaybackRecTest – PB MIC /usr/share/sounds/0-to-9.wav I get:

Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c app_Start() 3469 | Starting app ‘audioPlaybackRec’
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/dev/log’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/dev/log’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/dev/null’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/dev/null’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/dev/zero’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/dev/zero’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/dev/urandom’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/dev/urandom’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/legato/systems/current/lib/liblegato.so’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/liblegato.so’: Already exis
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/lib/ld-linux.so.3’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/ld-linux.so.3’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/lib/libc.so.6’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/libc.so.6’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/lib/libpthread.so.0’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/libpthread.so.0’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/lib/librt.so.1’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/librt.so.1’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/lib/libdl.so.2’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/libdl.so.2’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/lib/libgcc_s.so.1’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/libgcc_s.so.1’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/lib/libm.so.6’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/libm.so.6’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/usr/lib/libstdc++.so.6’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/lib/libstdc++.so.6’: Already exists
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/legato/systems/current/apps/audioPlaybackRec/read-only/lib/libComponent_audioPlaybackRecComp.so’ to '/legato/systems/current/appsWr
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/legato/systems/current/apps/audioPlaybackRec/read-only/bin/audioPlaybackRecTest’ to '/legato/systems/current/appsWriteable/audioPla
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/legato/systems/current/apps/audioPlaybackRec/read-only/usr/share/sounds/0-to-9.amr’ to '/legato/systems/current/appsWriteable/audio
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/legato/systems/current/apps/audioPlaybackRec/read-only/usr/share/sounds/0-to-9.awb’ to '/legato/systems/current/appsWriteable/audio
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/legato/systems/current/apps/audioPlaybackRec/read-only/usr/share/sounds/0-to-9.wav’ to '/legato/systems/current/appsWriteable/audio
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2083 | Skipping file link ‘/legato/systems/current/apps/audioPlaybackRec/read-only/usr/share/sounds/male.wav’ to '/legato/systems/current/appsWriteable/audioPl
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateTmpFs() 1787 | Mounted tmpfs at /legato/systems/current/appsWriteable/audioPlaybackRec/tmp.
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2153 | Created file link ‘/tmp/legato/serviceDirectoryServer’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/tmp/legato/serviceDirectoryServer’.
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | app.c CreateFileLink() 2153 | Created file link ‘/tmp/legato/serviceDirectoryClient’ to ‘/legato/systems/current/appsWriteable/audioPlaybackRec/tmp/legato/serviceDirectoryClient’.
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | proc.c proc_Start() 1403 | Starting process ‘audioPlaybackRecTest@0’ with pid 22740
Feb 5 13:41:41 | supervisor[1315]/supervisor T=main | supervisor.c SigChildHandler() 899 | Reaping unconfigured child process 22736.
Feb 5 13:41:41 | supervisor[22740]/supervisor T=main | proc.c proc_Start() 1363 | Execing ‘audioPlaybackRecTest’
Feb 5 13:41:41 | supervisor[22740]/supervisor T=main | resourceLimits.c SetRLimitValue() 301 | Setting resource limit maxCoreDumpFileBytes to value 8192.
Feb 5 13:41:41 | supervisor[22740]/supervisor T=main | resourceLimits.c SetRLimitValue() 301 | Setting resource limit maxFileBytes to value 90112.
Feb 5 13:41:41 | supervisor[22740]/supervisor T=main | resourceLimits.c SetRLimitValue() 301 | Setting resource limit maxLockedMemoryBytes to value 8192.
Feb 5 13:41:41 | supervisor[22740]/supervisor T=main | resourceLimits.c SetRLimitValue() 301 | Setting resource limit maxFileDescriptors to value 256.
Feb 5 13:41:41 | supervisor[22740]/supervisor T=main | resourceLimits.c SetRLimitValue() 301 | Setting resource limit maxMQueueBytes to value 512.
Feb 5 13:41:41 | supervisor[22740]/supervisor T=main | resourceLimits.c SetRLimitValue() 301 | Setting resource limit maxThreads to value 20.
Feb 5 13:41:41 | supervisor[22740]/supervisor T=main | resourceLimits.c SetRLimitValue() 301 | Setting resource limit maxQueuedSignals to value 100.
Feb 5 13:41:41 | UNKNOWN[22740]/framework T=main | fdMonitor.c le_fdMonitor_Create() 422 | FD Monitor object name ‘audioPlaybackRecTest.audioPlaybackRecComp.le_cfg’ truncated to ‘audioPlaybackRecTest.audioPlayb’.
Feb 5 13:41:41 | UNKNOWN[22740]/framework T=main | fdMonitor.c le_fdMonitor_Create() 422 | FD Monitor object name ‘audioPlaybackRecTest.audioPlaybackRecComp.le_audio’ truncated to ‘audioPlaybackRecTest.audioPlayb’.
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c _audioPlaybackRecComp_COMPONENT_INIT() 1255 | Init
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c _audioPlaybackRecComp_COMPONENT_INIT() 1262 | ======== Start Audio implementation Test (audioPlaybackRecTest) ========
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c _audioPlaybackRecComp_COMPONENT_INIT() 1270 | Test case.PB
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c _audioPlaybackRecComp_COMPONENT_INIT() 1276 | Main audio path.MIC
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c _audioPlaybackRecComp_COMPONENT_INIT() 1277 | Audio file [/usr/share/sounds/0-to-9.wav]
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c ConnectAudio() 1026 | Connect MIC and SPEAKER
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c ConnectAudio() 1053 | Connect Local Play
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c ConnectAudioToFileLocalPlay() 755 | Open file /usr/share/sounds/0-to-9.wav with AudioFileFd.10
Feb 5 13:41:41 | audioDaemon[1414]/swiQmi T=main | swiQmi.c swiQmi_CheckResponse() 795 | Sending QMI_SWI_M2M_AUDIO_SET_MEDIA_REQ_V01 failed: rc=0 (), resp.result=1.[0x01], resp.error=8.[0x08]
Feb 5 13:41:41 | audioDaemon[1414]/le_pa_audio T=main | media_routing.c media_routing_SetDspAudioPath() 208 | Cannot set the audio media interface to 1
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c ConnectAudioToFileLocalPlay() 774 | Failed to connect FilePlayback on output connector!
Feb 5 13:41:41 | audioPlaybackRecTest@0[22740]/audioPlaybackRecComp T=main | audioPlaybackRec.c _audioPlaybackRecComp_COMPONENT_INIT() 1374 | ======== Audio implementation Test (audioPlaybackRec) started successfully ========

trying PB_SAMPLES gives the same result. Trying PCM or I2S gives the same result, but different interface number. With older fimware (R9.1, Legato 18.06) the result was also the same. Could anyone help with this issue?

Best regards, Frans.

I just tried the this on the mangOH yellow and got the same error.

WP77xx series don’t support audio.
If you need PCM/I2S audio then use WP76xx series instead.

Hi Jay,

According to the AirPrime WP77XX Product Specification r2 on page 68 audio should be there:

“4.16 Digital Audio
The AirPrime WP77XX provides a 4-wire digital audio interface that can be configured
as either PCM (Pulse Code Modulation) or I 2 S (Inter-IC Sound).”

However, there is a note that audio availability is firmware-dependent. Is there anybody from Sierra Wireless than can confirm if current firmware supports audio?

Best regards,
Frans.

@FransKanters,

So the WP77 builds are specifically data only builds from a Qualcomm perspective. I do not know explicitly if it affects the non voice call related functions of the device but I expect it would do hence the failure of the API calls.

Regards

Matt

Dear Matt,

Thank you for your response! I was afraid of that answer…:wink:

Best regards,
Frans.

Has this been confirmed? We are trying to simply record audio from the on board digital mic into a file on the MangOH Yellow (WP7702). We don’t want voice calling, just audio recording. If this is disabled in the firmware, how can we use the on board peripherals?

I think this is Qualcomm chipset limitation that there is no audio on mdm9x06.

@zirunhong, @jyijyi

As far as the feedback and understanding I have is concerned the silicon might be capable but the builds that come out of QC are only data enabled, hence the limitation. If you want a hard answer which the development team check you will need to raise a ticket through your commercial channel (difficult I know if you have bought a mangoh from Digikey) but that’s the best answer we can give on the forum.

Regards

Matt

Hi Matt,

Thanks for your reply!

Can you please confirm if the audio API’s can be used without the active voice call to read and write PCM samples. The application does not make use of VoLTE and there is no voice call. The application itself runs VoIP and need to get the PCM samples from/to mic/speaker for processing.

Audio API cannot be used in wp77 module

Yes I understand, I will use WP76xx + MangoOH Green. In this configuration, Can the application running on the application processor access the raw PCM samples directly from/to mic/speaker via audio codec. We will not use voice call feature. The VoIP application itself runs on the application processor and it needs PCM samples for processing.

You can check if these files are raw data.
I remember .wav file can be played in mangoh board