Re: [PATCH 0/3] UAC2 Gadget: feedback endpoint support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 11, 2020 at 11:30 AM Peter Chen <peter.chen@xxxxxxx> wrote:
>
> On 20-11-08 02:18:28, Ruslan Bilovol wrote:
> > Current UAC2 gadget implements capture/sync paths
> > as two USB ISO ASYNC endpoints (IN and OUT).
> >
> > This violates USB spec which says that ISO ASYNC OUT endpoint
> > should have feedback companion endpoint.
> > See USB2.0 spec  "5.12.4.1 Synchronization Type": asynchronous
> > sink provides explicit feedback (isochronous pipe).
> > Interesting that for ISO ASYNC *IN* endpoint respective
> > feedback isn't required since source provides implicit
> > feedforward (data stream).
> >
> > While it's not an issue if UAC2 Gadget is connected to
> > Linux host (Linux ignores missing feedback endpoint),
> > with other hosts like Windows or MacOS the UAC2 Gadget
> > isn't enumerated due to missing feedback endpoint.
> >
> > This patch series adds feedback endpoint support to
> > UAC2 function, new control to UAC2 mixer which can
> > be used by userspace tools (like alsaloop from alsa-utils)
> > for updating feedback frequency reported to the host.
> > This is useful for usecases when UAC2 Gadget's audio
> > samples are played to another codec or audio card
> > with its own internal freerunning clock so host can
> > be notified that more/less samples are required.
> >
> > The alsaloop tool requires some (relatively small)
> > modifications in order to start support driving
> > feedback frequency through UAC2 mixer control.
> > That change will be sent as a separate patch
> > to ALSA community.
> >
> > Also added ability to switch ISO ASYNC OUT endpoint into
> > adaptive endpoint which doesn't require feedback endpoint
> > (as per USB spec).
> >
> > Ruslan Bilovol (3):
> >   usb: gadget: f_uac2/u_audio: add feedback endpoint support
> >   usb: gadget: f_uac2: add adaptive sync support for capture
> >   usb: gadget: u_audio: add real feedback implementation
>
> Hi Ruslan,
>
> I applied your patches, but WIN10 still can't recognize it well.
> The UAC1 is OK for WIN10 with the below same configuration.
> Any debug information you would like to know to check it?
>
>
> if [ "$FUNC" == "uac2" ]; then
> mkdir functions/$FUNC".0"
> echo 2 > functions/$FUNC".0"/p_ssize
> echo 48000 > functions/$FUNC".0"/p_srate
> echo 3 > functions/$FUNC".0"/p_chmask
>
> echo 2 > functions/$FUNC".0"/c_ssize
> echo 48000 > functions/$FUNC".0"/c_srate
> echo 3 > functions/$FUNC".0"/c_chmask
> #echo 4 > functions/$FUNC".0"/req_number
> ln -s functions/$FUNC".0" configs/c.1
> echo high-speed > /sys/kernel/config/usb_gadget/g1/max_speed
> fi
>

Hmm... I just tested below config and it works fine with my Win10.
The only thing I noticed is Windows doesn't enable UAC2 gadget
by default, but this can be done from Win10 sound settings

--------------------------------->8--------------------------------------
mkdir cfg
mount none cfg -t configfs
mkdir cfg/usb_gadget/g1
cd cfg/usb_gadget/g1
mkdir configs/c.1
mkdir functions/uac2.0

# 44.1 kHz sample rate
echo 44100 > functions/uac2.0/c_srate
echo 44100 > functions/uac2.0/p_srate

mkdir strings/0x409
mkdir configs/c.1/strings/0x409
echo 0x0101 > idProduct
echo 0x1d6b > idVendor
echo my-serial-num > strings/0x409/serialnumber
echo my-manufacturer > strings/0x409/manufacturer
echo "Test gadget" > strings/0x409/product
echo "Conf 1" > configs/c.1/strings/0x409/configuration
echo 120 > configs/c.1/MaxPower
ln -s functions/uac2.0 configs/c.1
echo musb-hdrc.0 > UDC
--------------------------------->8--------------------------------------

Thanks,
Ruslan



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux