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