RE: usb: gadget: dwc2: not getting audio data

PALAK SHAH
2023-05-18T18:32:37Z

Hi Minas,
Please see below how I test - our device name is KX4-101

On HOST machine,
[palakshah@localhost ~]$ aplay -L
sysdefault:CARD=KX4101
KX4-101, USB Audio
Default Audio Device
iec958:CARD=KX4101,DEV=0
KX4-101, USB Audio
IEC958 (S/PDIF) Digital Audio Output

[palakshah@localhost Downloads]$ aplay -f S16_LE --rate=48000 --device iec958:CARD=KX4101,DEV=0 retro-city-14099.wav
Playing raw data 'retro-city-14099.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

LINUX DEVICE AS USB GADGET -
# arecord --rate 48000 -f S16_LE -D plughw:CARD=UAC1Gadget,DEV=0 test.wav

pcm_hw.c - file name - /dev/snd/pcmC0D0c

Recording WAVE 'test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
^CAborted by signal Interrupt...

arecord: pcm_read:2220: read error: Interrupted system call
# ls -la
drwxr-xr-x 1 1001 1001 82 May 18 13:26 .
drwxr-xr-x 1 1001 1001 322 May 4 10:36 ..
-rw-rw-rw- 1 root root 0 Feb 27 14:59 events
-rw-rw-rw- 1 root root 0 Feb 27 14:59 fast_ops-
-rw-rw-rw- 1 root root 0 Feb 27 14:59 fd
-rw-rw-rw- 1 root root 0 Feb 27 14:59 poll_descriptors
-rw-r--r-- 1 root root 44 May 18 13:26 test.wav // only 44 bytes

# vi test.wav
RIFF$^@^@.WAVEfmt ^P^@^@^@^A^@^A^@@^_^@^@@^_^@^@^A^@^H^@data^@^@^@.

As you can see, I am playing retro-city*.wav file on the HOST. And trying to capture it on the DEVICE.

But the test.wav file only is 44 bytes. If the end point is receiving data and the aplay is playing wav file, then why is the arecord not getting data?

Thanks,
Palak

-----Original Message-----
From: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Sent: Thursday, May 18, 2023 7:23 AM
To: PALAK SHAH <palak.shah@raritan.com>; Maynard CABIENTE <maynard.cabiente@raritan.com>
Cc: linux-usb@vger.kernel.org
Subject: Re: usb: gadget: dwc2: not getting audio data

Hi Palak,

On 5/17/23 23:02, PALAK SHAH wrote:
> Hi Minas,
>
> Minas wrote:
>
>> So, to set req num to 32 resolve time gap issue and ISOC OUT transfers
>> (aplay) going OK. Please keep this 32 setting always.
>
> I will keep UAC1_DEF_REQ_NUM at 32.
>
> Please note that I am NOT DOING APLAY here. We are currently only testing SPEAKERS, not microphone. The 5.10.100 kernel has some parameter checks (f_audio_validate_opts ), so I had to enable microphone (EP4(IN)). But I am not testing microphone.
>
> I am trying to CAPTURE AUDIO on my Linux device (acting as an audio gadget). I am playing some audio using you tube on the host machine. And it sending the data to my device, which is target. The endpoint from which I want to capture data is EP1(OUT).
>
>
> Minas wrote:
>
>> Arecord. In latest log I see that function driver, besides EP1OUT (which for aplay and it normally works),
>
>> queued 32 requests to EP4IN, which I assume endpoint for ISOC IN for arecord. But transfer on EP4IN never > start. Please provide me log and usb trace when you doing aplay with arecord.
>
>
> Again, I am not running aplay yet. I am testing only arecord to make sure that the audio data from the USB target (host machine) can be retrieved.
>
> Before changing the number of request to 32, the dwc2 isochronous transfers will stop. With the count 32, the endpoint isn’t shutting down, BUT I want to capture the data using ARECORD in a file and that is not happening. The file is only 44 bytes.
>
> Below is the example of what I am doing -
>
> HOST MACHINE -
>
> PLAY AUDIO USING YOUTUBE, DEVICE SOUND SETTINGS SELECT LINUX AUDIO GADGET
>
>
>
> LINUX DEVICE (USB AUD GADGET)
>
> ARECORD -f S32_LE -c 2 test.wav // try to capture the data coming on EP1(OUT)
>
> Even though I am seeing data on EP1(OUT), the test.wav is only 44 bytes.
>
> I have attached USB trace file. The logs are the same as I sent yesterday.
>
> Thanks,
> Palak
>
> -----Original Message-----
> From: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
> Sent: Wednesday, May 17, 2023 2:05 AM
> To: PALAK SHAH <palak.shah@raritan.com>; Maynard CABIENTE <maynard.cabiente@raritan.com>
> Cc: linux-usb@vger.kernel.org
> Subject: Re: usb: gadget: dwc2: not getting audio data
>
> Hi Palak,
>
> On 5/17/23 00:43, PALAK SHAH wrote:
>> Hi Minas,
>> 1. Depend on which uac(uac1 or uac2) you use, increase 2 to 32
>>
>> I change the #define UAC1_DEF_REQ_NUM 32.
>>
>> When I do this, what I see is, that when I play audio on the target, I don’t see the ENDPOINT shutdown. HOWEVER, when I try to record the data, I DO NOT RECORD any data.
>> The arecord file is empty with only 44 bytes. I saw the same behavior 2 months ago with the older version of kernel.
>>
>
> So, to set req num to 32 resolve time gap issue and ISOC OUT transfers
> (aplay) going OK. Please keep this 32 setting always.
>
> Arecord. In latest log I see that function driver, besides EP1OUT (which for aplay and it normally works), queued 32 requests to EP4IN, which I assume endpoint for ISOC IN for arecord. But transfer on EP4IN never start. Please provide me log and usb tarce when you doing aplay with arecord.
>
>> The logs show that the data comes on EP1(OUT) and the buffer queues upto #255 and then wraps around to 0. USB sniffer also shows data coming in.
> Wrapping from #255 to #0 is Ok, driver allocate 256 descriptors
>
>
> Thanks,
> Minas
>
>>

On device machine run recording by follow command:
arecord -D plughw:CARD=UAC2Gadget,DEV=0 test.wav

On host machine playing audio by follow command:
aplay -D plughw:CARD=audiogadget,DEV=0
/usr/share/sounds/alsa/Front_Center.wav

On play finish terminated arecord by CTRL-C

Recorded test.wav file contain audio data.

Thanks,
Minas

________________________________

Ce message, ainsi que tous les fichiers joints à ce message, peuvent contenir des informations sensibles et/ ou confidentielles ne devant pas être divulguées. Si vous n'êtes pas le destinataire de ce message (ou que vous recevez ce message par erreur), nous vous remercions de le notifier immédiatement à son expéditeur, et de détruire ce message. Toute copie, divulgation, modification, utilisation ou diffusion, non autorisée, directe ou indirecte, de tout ou partie de ce message, est strictement interdite.

This e-mail, and any document attached hereby, may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized, direct or indirect, copying, disclosure, distribution or other use of the material or parts thereof is strictly forbidden.