AW: [PATCH 0/8] USB Audio Gadget part 2: Feedback endpoint, Volume/Mute support

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

 



Hi Ruslan,

thanks a lot for your quick answer.

> -----Ursprüngliche Nachricht-----
> Von: Ruslan Bilovol
> Gesendet: Montag, 1. März 2021 22:34
> An: Johannes Freyberger <Johannes@xxxxxxxxxxxxx>
> Cc: Felipe Balbi <balbi@xxxxxxxxxx>; Jonathan Corbet <corbet@xxxxxxx>;
> Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>; Glenn Schmottlach
> <gschmottlach@xxxxxxxxx>; linux-doc@xxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; Linux USB <linux-usb@xxxxxxxxxxxxxxx>
> Betreff: Re: [PATCH 0/8] USB Audio Gadget part 2: Feedback endpoint,
> Volume/Mute support
> 
> Hi Johannes,
> 
> On Mon, Mar 1, 2021 at 6:49 PM Johannes Freyberger
> <Johannes@xxxxxxxxxxxxx> wrote:
> >
> > Hi Ruslan,
> >
> > thanks for all your efforts to make the USB Audio Gadget work in Win10
> > using UAC2. Meanwhile I managed to apply and compile your previous
> > modifications and now my Raspberry PI shows up in the Windows Device
> > Manager as a valid
> > UAC2 audio device. Unfortunately it still doesn't work to transfer any
> > audio as it seems the audio endpoints or the topology is not working.
> 
> Are you testing my previous version of the patches on some older kernel?
> 
> Just for records - these two patch sets (part 1 and part 2) are based on Greg's
> usb-next branch (commit b5a12546e779d4f5586f58e60e0ef5070a833a64
> which is based on v5.11-rc5 tag). I retested them today with a BBB board and
> it works fine under Win 10. Also I rebased these two patchsets today against
> latest Greg's usb-next branch which is now Linus's v5.12-rc1 tag and again it
> works fine under Win10 - both Volume/Mute controls and audio streaming.
> 
> These patches have been tested previously on Raspberry PI 4 running v5.9
> and v5.10 stable kernels. The only issues I've seen were because of
> Raspberry's DWC2 DMA issue in the driver that I described in this cover
> letter.
> However if you disable volume/mute controls, it won't affect you.
> 
> > I checked it
> > with some tools and found one providing some information on the USB
> > part (it's called UVCview.exe and is part of the Windows Driver Kit).
> > Here's the output which I hope can give some hints on the problems
> > still existing in this driver:
> 
> From the output below I see UAC2 descriptors are completely screwed up
> (or UVCview.exe doesn't show them correctly). Windows is very strict to the
> descriptors and doesn't allow devices to start in case of any issues.
> So if it appears as a valid UAC2 device in Device Manager, most likely
> UVCview.exe doesn't decode UAC2 descriptors well.
> 

You are right, they really look screwed up. Meanwhile I found another similar tool which also knows Audio 2.0 and here everything looks fine ( https://www.uwe-sieber.de/usbtreeview.html#download )

> Could you please also apply these patches to the latest kernel (v5.12-rc1) and
> test?

Yes, I'd like to do this and I want to apologize for my newbie questions in advance. But I have to admit I'm rather new to Linux, Kernel compiling etc. and I followed the description on https://www.raspberrypi.org/documentation/linux/kernel/building.md and then applied your patches - partially I had to do some modifications by hand as the sources had changed. The version I downloaded via "git clone --depth=1 https://github.com/raspberrypi/linux"; seems to be Linux 5.10.17-v7l. And I cannot see the version you mention at https://github.com/raspberrypi/linux/branches . Where can I get the version v5.12-rc1 for these tests?

> 
> Thanks,
> Ruslan
> 

Thanks to you for helping beginners like me,
best regards,
Johannes

> >
> >           ---===>Device Information<===--- English product name:
> > "Linux USB Audio Gadget"
> >
> > ConnectionStatus:
> > Current Config Value:              0x01  -> Device Bus Speed: High
> > Device Address:                    0x0F
> > Open Pipes:                           0
> > *!*ERROR:  No open pipes!
> >
> >           ===>Device Descriptor<===
> > bLength:                           0x12
> > bDescriptorType:                   0x01
> > bcdUSB:                          0x0200
> > bDeviceClass:                      0xEF  -> This is a Multi-interface
> > Function Code Device
> > bDeviceSubClass:                   0x02  -> This is the Common Class Sub
> > Class
> > bDeviceProtocol:                   0x01  -> This is the Interface
> > Association Descriptor protocol
> > bMaxPacketSize0:                   0x40 = (64) Bytes
> > idVendor:                        0x1D6B = The Linux Foundation
> > idProduct:                       0x0101
> > bcdDevice:                       0x0510
> > iManufacturer:                     0x01
> >      English (United States)  "Linux 5.10.17-v7l-R3LAY_TEST+ with
> > fe980000.usb"
> > iProduct:                          0x02
> >      English (United States)  "Linux USB Audio Gadget"
> > iSerialNumber:                     0x00
> > bNumConfigurations:                0x01
> >
> >           ===>Configuration Descriptor<===
> > bLength:                           0x09
> > bDescriptorType:                   0x02
> > wTotalLength:                    0x00E2  -> Validated
> > bNumInterfaces:                    0x03
> > bConfigurationValue:               0x01
> > iConfiguration:                    0x00
> > bmAttributes:                      0xC0  -> Bus Powered
> > MaxPower:                          0x01 =   2 mA
> >
> >           ===>IAD Descriptor<===
> > bLength:                           0x08
> > bDescriptorType:                   0x0B
> > bFirstInterface:                   0x00
> > bInterfaceCount:                   0x03
> > bFunctionClass:                    0x01  -> Audio Interface Class
> > bFunctionSubClass:                 0x00
> > *!*CAUTION:    This appears to be an invalid bFunctionSubClass
> > bFunctionProtocol:                 0x20
> > iFunction:                         0x04
> >      English (United States)  "R3lay PI"
> >
> >           ===>Interface Descriptor<===
> > bLength:                           0x09
> > bDescriptorType:                   0x04
> > bInterfaceNumber:                  0x00
> > bAlternateSetting:                 0x00
> > bNumEndpoints:                     0x00
> > bInterfaceClass:                   0x01  -> Audio Interface Class
> > bInterfaceSubClass:                0x01  -> Audio Control Interface SubClass
> > bInterfaceProtocol:                0x20
> > CAUTION:  This may be an invalid bInterfaceProtocol
> > iInterface:                        0x05
> >      English (United States)  "Topology Control"
> >
> >           ===>Audio Control Interface Header Descriptor<===
> > bLength:                           0x09
> > bDescriptorType:                   0x24
> > bDescriptorSubtype:                0x01
> > bcdADC:                          0x0200
> > wTotalLength:                    0x5308
> > bInCollection:                     0x00
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x08
> > bDescriptorType:                   0x24
> > 08 24 0A 06 01 01 00 06
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x08
> > bDescriptorType:                   0x24
> > 08 24 0A 05 01 01 00 07
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x11
> > bDescriptorType:                   0x24
> > 11 24 02 01 01 01 00 05 02 03 00 00 00 00 03 00
> > 08
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x11
> > bDescriptorType:                   0x24
> > 11 24 02 02 00 02 00 06 02 03 00 00 00 00 03 00
> > 09
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x0C
> > bDescriptorType:                   0x24
> > 0C 24 03 04 01 01 00 02 06 03 00 0A
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x0C
> > bDescriptorType:                   0x24
> > 0C 24 03 03 00 03 00 01 05 03 00 0B
> >
> >           ===>Interface Descriptor<===
> > bLength:                           0x09
> > bDescriptorType:                   0x04
> > bInterfaceNumber:                  0x01
> > bAlternateSetting:                 0x00
> > bNumEndpoints:                     0x00
> > bInterfaceClass:                   0x01  -> Audio Interface Class
> > bInterfaceSubClass:                0x02  -> Audio Streaming Interface
> > SubClass
> > bInterfaceProtocol:                0x20
> > CAUTION:  This may be an invalid bInterfaceProtocol
> > iInterface:                        0x0C
> >      English (United States)  "Playback Inactive"
> >
> >           ===>Interface Descriptor<===
> > bLength:                           0x09
> > bDescriptorType:                   0x04
> > bInterfaceNumber:                  0x01
> > bAlternateSetting:                 0x01
> > bNumEndpoints:                     0x02
> > bInterfaceClass:                   0x01  -> Audio Interface Class
> > bInterfaceSubClass:                0x02  -> Audio Streaming Interface
> > SubClass
> > bInterfaceProtocol:                0x20
> > CAUTION:  This may be an invalid bInterfaceProtocol
> > iInterface:                        0x0D
> >      English (United States)  "Playback Active"
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x10
> > bDescriptorType:                   0x24
> > 10 24 01 01 00 01 01 00 00 00 02 03 00 00 00 00
> >
> >           ===>Audio Streaming Format Type Descriptor<===
> > bLength:                           0x06
> > bDescriptorType:                   0x24
> > bDescriptorSubtype:                0x02
> > bFormatType:                       0x01
> > bNrChannels:                       0x02
> > bSubframeSize:                     0x10
> > bBitResolution:                    0x07
> > bSamFreqType:                      0x05
> > tSamFreq[1]:                   0x380501 (3671297 Hz)
> > tSamFreq[2]:                   0x080401 (525313 Hz)
> > tSamFreq[3]:                   0x000125 (293 Hz)
> > tSamFreq[4]:                   0x000000 (0 Hz)
> > tSamFreq[5]:                   0x050700 (329472 Hz)
> >
> >           ===>Endpoint Descriptor<===
> > bLength:                           0x07
> > bDescriptorType:                   0x05
> > bEndpointAddress:                  0x01  -> Direction: OUT - EndpointID: 1
> > bmAttributes:                      0x05  -> Isochronous Transfer Type
> >                    Synchronization Type = Asynchronous Bulk Transfer
> > Type
> > wMaxPacketSize:                  0x0138 = 1 transactions per microframe,
> > 0x138 max bytes
> > bInterval:                         0x04
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x08
> > bDescriptorType:                   0x25
> > 08 25 01 00 00 00 00 00
> >
> >           ===>Endpoint Descriptor<===
> > bLength:                           0x07
> > bDescriptorType:                   0x05
> > bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
> > bmAttributes:                      0x11  -> Isochronous Transfer Type
> >                    Synchronization Type = No Synchronization Bulk
> > Transfer Type
> > wMaxPacketSize:                  0x0004 = 1 transactions per microframe,
> > 0x04 max bytes
> > bInterval:                         0x04
> >
> >           ===>Interface Descriptor<===
> > bLength:                           0x09
> > bDescriptorType:                   0x04
> > bInterfaceNumber:                  0x02
> > bAlternateSetting:                 0x00
> > bNumEndpoints:                     0x00
> > bInterfaceClass:                   0x01  -> Audio Interface Class
> > bInterfaceSubClass:                0x02  -> Audio Streaming Interface
> > SubClass
> > bInterfaceProtocol:                0x20
> > CAUTION:  This may be an invalid bInterfaceProtocol
> > iInterface:                        0x0E
> >      English (United States)  "Capture Inactive"
> >
> >           ===>Interface Descriptor<===
> > bLength:                           0x09
> > bDescriptorType:                   0x04
> > bInterfaceNumber:                  0x02
> > bAlternateSetting:                 0x01
> > bNumEndpoints:                     0x01
> > bInterfaceClass:                   0x01  -> Audio Interface Class
> > bInterfaceSubClass:                0x02  -> Audio Streaming Interface
> > SubClass
> > bInterfaceProtocol:                0x20
> > CAUTION:  This may be an invalid bInterfaceProtocol
> > iInterface:                        0x0F
> >      English (United States)  "Capture Active"
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x10
> > bDescriptorType:                   0x24
> > 10 24 01 04 00 01 01 00 00 00 02 03 00 00 00 00
> >
> >           ===>Audio Streaming Format Type Descriptor<===
> > bLength:                           0x06
> > bDescriptorType:                   0x24
> > bDescriptorSubtype:                0x02
> > bFormatType:                       0x01
> > bNrChannels:                       0x02
> > bSubframeSize:                     0x10
> > bBitResolution:                    0x07
> > bSamFreqType:                      0x05
> > tSamFreq[1]:                   0xC40582 (12846466 Hz)
> > tSamFreq[2]:                   0x080400 (525312 Hz)
> > tSamFreq[3]:                   0x000125 (293 Hz)
> > tSamFreq[4]:                   0x000000 (0 Hz)
> > tSamFreq[5]:                   0x000000 (0 Hz)
> >
> >           ===>Endpoint Descriptor<===
> > bLength:                           0x07
> > bDescriptorType:                   0x05
> > bEndpointAddress:                  0x82  -> Direction: IN - EndpointID: 2
> > bmAttributes:                      0x05  -> Isochronous Transfer Type
> >                    Synchronization Type = Asynchronous Bulk Transfer
> > Type
> > wMaxPacketSize:                  0x00C4 = 1 transactions per microframe,
> > 0xC4 max bytes
> > bInterval:                         0x04
> >
> >           ===>Descriptor Hex Dump<===
> > bLength:                           0x08
> > bDescriptorType:                   0x25
> > 08 25 01 00 00 00 00 00
> >




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

  Powered by Linux