All of lore.kernel.org
 help / color / mirror / Atom feed
* XMOS USB Audio Class 2.0 Reference Design
@ 2009-12-14 18:51 Shareef Jalloq
  2009-12-15  0:00 ` Daniel Mack
  0 siblings, 1 reply; 2+ messages in thread
From: Shareef Jalloq @ 2009-12-14 18:51 UTC (permalink / raw)
  To: alsa-devel

Hello all,

I'm starting a product development using the XMOS USB Audio Class 2.0
Ref Design (http://www.xmos.com/technology/prototype-boards/usbaudio2)
and I'd like to get some help in understanding what support there is,
or will be, for Audio Class 2.0 devices within Linux.

First of all some disclaimers.  I'm new to the Linux kernel and
programming in general having come from a hardware background.  I will
do my best not to spam the mailing list but please don't assume
something is too simple to explain to me.  I'm going to use this
experience as a learning exercise.

I'm running Ubuntu 9.10 x64 : 2.6.31-16-generic.  It is a fresh
install so most things are default.

I currently have the reference design hardware but am still waiting on
XMOS to provide the device firmware.  Once I have the source I should
be able to answer any questions regarding desriptors in more detail.
Until then I have the previously mentioned Ubuntu system and an OS X
machine running 10.4.11.  As far as I understand, 10.6.x is the only
OS that currently supports the Audio Class 2.0 and I'm hoping to have
access to a machine soon, but not yet.

When I connect the device I get zero output.  If I run lsub -v it is
not recognised.  If I check my syslog I get the following:

Dec 10 00:16:00 sjalloq-desktop kernel: [53352.087740] usb 2-1.2.3:
new high speed USB device using ehci_hcd and address 56
Dec 10 00:16:00 sjalloq-desktop kernel: [53352.107747] hub 2-1.2:1.0:
unable to enumerate USB device on port 3
Dec 10 00:16:04 sjalloq-desktop kernel: [53356.286145] hub 2-1.2:1.0:
Cannot enable port 3.  Maybe the USB cable is bad?
Dec 10 00:16:07 sjalloq-desktop kernel: [53359.285099] hub 2-1.2:1.0:
Cannot enable port 3.  Maybe the USB cable is bad?
Dec 10 00:16:10 sjalloq-desktop kernel: [53362.284088] hub 2-1.2:1.0:
Cannot enable port 3.  Maybe the USB cable is bad?
Dec 10 00:16:13 sjalloq-desktop kernel: [53365.282591] hub 2-1.2:1.0:
Cannot enable port 3.  Maybe the USB cable is bad?
Dec 10 00:16:13 sjalloq-desktop kernel: [53365.282884] hub 2-1.2:1.0:
unable to enumerate USB device on port 3

However, on my OS X machine, if I run USB Prober, I get the output
that follows the end of the email.

Is there anything else I can do that would be useful in debugging?

Thanks, Shareef.

__END__

OUTPUT FROM MAC OS X 10.4.11 USB PROBER:

High Speed device @ 3 (0xFD100000): ..............................
...............   Miscellaneous/Common Class device: "XMOS USB Audio 2.0"
    Device Descriptor
        Descriptor Version Number:   0x0200
        Device Class:   239   (Miscellaneous)
        Device Subclass:   2   (Common Class)
        Device Protocol:   1   (Interface Association)
        Device MaxPacketSize:   64
        Device VendorID/ProductID:   0x20B1/0x0002   (unknown vendor)
        Device Version Number:   0x0110
        Number of Configurations:   1
        Manufacturer String:   12 "XMOS "
        Product String:   7 "XMOS USB Audio 2.0"
        Serial Number String:   0 (none)
    Configuration Descriptor
        Length (and contents):   273
            Raw Descriptor (hex)    0000: 09 02 11 01 03 01 00 80  FA
08 0B 00 03 01 00 20
            Raw Descriptor (hex)    0010: 00 09 04 00 00 01 01 01  20
07 09 24 01 00 02 08
            Raw Descriptor (hex)    0020: 7B 00 00 08 24 0A 28 03  07
00 01 11 24 02 02 01
            Raw Descriptor (hex)    0030: 01 00 28 02 03 00 00 00  00
00 00 02 11 24 02 01
            Raw Descriptor (hex)    0040: 03 06 00 28 04 0F 00 00  00
00 00 00 03 0C 24 03
            Raw Descriptor (hex)    0050: 16 01 01 00 0B 28 00 00  04
0C 24 03 14 01 03 00
            Raw Descriptor (hex)    0060: 0A 28 00 00 05 0C 24 03  16
01 03 00 0A 28 00 00
            Raw Descriptor (hex)    0070: 06 12 24 06 0A 02 0F 00  00
00 0F 00 00 00 0F 00
            Raw Descriptor (hex)    0080: 00 00 00 12 24 06 0B 01  0F
00 00 00 0F 00 00 00
            Raw Descriptor (hex)    0090: 0F 00 00 00 00 07 05 83  03
06 00 08 09 04 01 00
            Raw Descriptor (hex)    00a0: 00 01 02 20 08 09 04 01  01
02 01 02 20 09 10 24
            Raw Descriptor (hex)    00b0: 01 02 00 01 01 00 00 00  02
03 00 00 00 00 06 24
            Raw Descriptor (hex)    00c0: 02 01 04 18 07 05 01 05  00
04 01 08 25 01 00 00
            Raw Descriptor (hex)    00d0: 02 08 00 07 05 81 11 04  00
08 09 04 02 00 00 01
            Raw Descriptor (hex)    00e0: 02 20 0A 09 04 02 01 01  01
02 20 0B 10 24 01 16
            Raw Descriptor (hex)    00f0: 00 01 01 00 00 00 02 03  00
00 00 00 06 24 02 01
            Raw Descriptor (hex)    0100: 04 18 07 05 82 05 00 04  01
08 25 01 00 00 02 08
            Raw Descriptor (hex)    0110: 00
        Number of Interfaces:   3
        Configuration Value:   1
        Attributes:   0x80 (bus-powered)
        MaxPower:   500 ma
        Interface Association   Audio/Unknown
            First Interface   0
            Interface Count   3
            Function Class   1   (Audio)
            Function Subclass   0   (Unknown)
            Interface Protocol   32
            Function String   0 (none)
        Interface #0 - Audio/Control
            Alternate Setting   0
            Number of Endpoints   1
            Interface Class:   1   (Audio)
            Interface Subclass;   1   (Control)
            Interface Protocol:   32
            Audio Control Class Specific Header
                Descriptor Version Number:   02.00
                Category:   8
                Class Specific Size:   123
                bmControls:   0
                Dump Contents (hex):   09 24 01 00 02 08 7B 00 00
            Audio Class Specific Clock Source
                Clock ID:   40
                Attributes:   Internal Programmable Clock
                Controls:   7
                Associated Terminal:   0
                Terminal Name String Index:   1
                Dump Contents (hex):   08 24 0A 28 03 07 00 01
            Audio Class Specific Input Terminal
                Terminal ID:   2
                Input Terminal Type:   0x101 (USB streaming)
                OutTerminal ID:   0 [NONE]
                Number of Channels:   2
                Spatial config of channels:   0000000000000011
                   (null)
                   (null)
                String index for first logical channel:   0
                Terminal Name String Index:   2
                Dump Contents (hex):   11 24 02 02 01 01 00 28 02 03
00 00 00 00 00 00 02
            Audio Class Specific Input Terminal
                Terminal ID:   1
                Input Terminal Type:   0x603 (Line connector)
                OutTerminal ID:   0 [NONE]
                Number of Channels:   4
                Spatial config of channels:   0000000000001111
                   (null)
                   (null)
                   (null)
                   (null)
                String index for first logical channel:   0
                Terminal Name String Index:   3
                Dump Contents (hex):   11 24 02 01 03 06 00 28 04 0F
00 00 00 00 00 00 03
            Audio Class Specific Ouput Terminal
                Terminal ID:   22
                Output Terminal Type:   0x101 (USB Isochronous Stream)
                InTerminal ID:   0 [NONE]
                Source ID:   11
                Terminal Name String Index:   4
                Dump Contents (hex):   0C 24 03 16 01 01 00 0B 28 00 00 04
            Audio Class Specific Ouput Terminal
                Terminal ID:   20
                Output Terminal Type:   0x301 (Speaker)
                InTerminal ID:   0 [NONE]
                Source ID:   10
                Terminal Name String Index:   5
                Dump Contents (hex):   0C 24 03 14 01 03 00 0A 28 00 00 05
            Audio Class Specific Ouput Terminal
                Terminal ID:   22
                Output Terminal Type:   0x301 (Speaker)
                InTerminal ID:   0 [NONE]
                Source ID:   10
                Terminal Name String Index:   6
                Dump Contents (hex):   0C 24 03 16 01 03 00 0A 28 00 00 06
            Audio Class Specific Feature
                Unit ID:   10
                Source ID:   2
                Number of Channels (ch):   2
                    Master Channel:......................... ( Mute:RW
Volume:RW  )
                    Channel 1:............................. ( Mute:RW
Volume:RW  )
                    Channel 2:............................. ( Mute:RW
Volume:RW  )
                Feature Unit Name String Index:   0
                Dump Contents (hex):   12 24 06 0A 02 0F 00 00 00 0F
00 00 00 0F 00 00 00 00
            Audio Class Specific Feature
                Unit ID:   11
                Source ID:   1
                Number of Channels (ch):   2
                    Master Channel:......................... ( Mute:RW
Volume:RW  )
                    Channel 1:............................. ( Mute:RW
Volume:RW  )
                    Channel 2:............................. ( Mute:RW
Volume:RW  )
                Feature Unit Name String Index:   0
                Dump Contents (hex):   12 24 06 0B 01 0F 00 00 00 0F
00 00 00 0F 00 00 00 00
            Endpoint 0x83 - Interrupt Input
                Address:   0x83  (IN)
                Attributes:   0x03  (Interrupt no synchronization data endpoint)
                Max Packet Size:   6  (6 x 1  transactions
opportunities per microframe)
                Polling Interval:   8 (128 microframes (16 msecs) )
        Interface #1 - Audio/Streaming
            Alternate Setting   0
            Number of Endpoints   0
            Interface Class:   1   (Audio)
            Interface Subclass;   2   (Streaming)
            Interface Protocol:   32
        Interface #1 - Audio/Streaming (#1)
            Alternate Setting   1
            Number of Endpoints   2
            Interface Class:   1   (Audio)
            Interface Subclass;   2   (Streaming)
            Interface Protocol:   32
            Audio Control Class Specific Header
                Audio Stream General
                    Endpoint Terminal ID:   2
                    Format Type:   1
                    Formats   PCM
                    Number of Channels   2
                    Channel Configuration   3
                    Dump Contents (hex):   10 24 01 02 00 01 01 00 00
00 02 03 00 00 00 00
            Audio Class Specific Audio Data Format
                Audio Stream Format Type Desc.
                    Format Type:   1
                    Slot Size:   4
                    Bit Resolution:   24
                    Dump Contents (hex):   06 24 02 01 04 18
            Endpoint 0x01 - Isochronous Output
                Address:   0x01  (OUT)
                Attributes:   0x05  (Isochronous asynchronous data endpoint)
                Max Packet Size:   1024  (1024 x 1  transactions
opportunities per microframe)
                Polling Interval:   1 (1 microframe (125 microsecs) )
            Class-Specific AS Audio EndPoint - Control output
                Attributes:   0x00
                bLockDelayUnits:   0x00  (UNDEFINED)
                wLockDelay:   2050
            Endpoint 0x81 - Isochronous Input
                Address:   0x81  (IN)
                Attributes:   0x11  (Isochronous no synchronization
feedback endpoint)
                Max Packet Size:   4  (4 x 1  transactions
opportunities per microframe)
                Polling Interval:   8 (128 microframes (16 msecs) )
        Interface #2 - Audio/Streaming
            Alternate Setting   0
            Number of Endpoints   0
            Interface Class:   1   (Audio)
            Interface Subclass;   2   (Streaming)
            Interface Protocol:   32
        Interface #2 - Audio/Streaming (#1)
            Alternate Setting   1
            Number of Endpoints   1
            Interface Class:   1   (Audio)
            Interface Subclass;   2   (Streaming)
            Interface Protocol:   32
            Audio Control Class Specific Header
                Audio Stream General
                    Endpoint Terminal ID:   22
                    Format Type:   1
                    Formats   PCM
                    Number of Channels   2
                    Channel Configuration   3
                    Dump Contents (hex):   10 24 01 16 00 01 01 00 00
00 02 03 00 00 00 00
            Audio Class Specific Audio Data Format
                Audio Stream Format Type Desc.
                    Format Type:   1
                    Slot Size:   4
                    Bit Resolution:   24
                    Dump Contents (hex):   06 24 02 01 04 18
            Endpoint 0x82 - Isochronous Input
                Address:   0x82  (IN)
                Attributes:   0x05  (Isochronous asynchronous data endpoint)
                Max Packet Size:   1024  (1024 x 1  transactions
opportunities per microframe)
                Polling Interval:   1 (1 microframe (125 microsecs) )
            Class-Specific AS Audio EndPoint - Control output
                Attributes:   0x00
                bLockDelayUnits:   0x00  (UNDEFINED)
                wLockDelay:   2050
    Device Qualifier Descriptor
        Descriptor Version Number:   0x0200
        Device Class   239   (Miscellaneous)
        Device Subclass   2   (Common Class)
        Device Protocol   1   (Interface Association)
        Device MaxPacketSize:   64
        Number of Configurations:   1
        bReserved:   0
    Other Speed Configuration Descriptor
        Length (and contents):   18
            Raw Descriptor (hex)    0000: 09 07 12 00 01 00 00 C0  32
09 04 00 00 00 00 00
            Raw Descriptor (hex)    0010: 00 00
        Number of Interfaces:   1
        Configuration Value:   0
        Attributes:   0xC0 (self-powered)
        MaxPower:   100 ma
        Interface #0 - Unknown
            Alternate Setting   0
            Number of Endpoints   0
            Interface Class:   0   (Unknown)
            Interface Subclass;   0
            Interface Protocol:   0

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: XMOS USB Audio Class 2.0 Reference Design
  2009-12-14 18:51 XMOS USB Audio Class 2.0 Reference Design Shareef Jalloq
@ 2009-12-15  0:00 ` Daniel Mack
  0 siblings, 0 replies; 2+ messages in thread
From: Daniel Mack @ 2009-12-15  0:00 UTC (permalink / raw)
  To: Shareef Jalloq; +Cc: alsa-devel

On Mon, Dec 14, 2009 at 06:51:41PM +0000, Shareef Jalloq wrote:
> I'm starting a product development using the XMOS USB Audio Class 2.0
> Ref Design (http://www.xmos.com/technology/prototype-boards/usbaudio2)
> and I'd like to get some help in understanding what support there is,
> or will be, for Audio Class 2.0 devices within Linux.

This audio 2.0 USB class is currently unsupporteed by the Linux kernel,
someone would need to start implementing the protocol. Fortunately, it
is well documented on usb.org.

There have been people on this list saying they would like to work on
this, but there was no reference implementation available yet, so it
wasn't started.

> I currently have the reference design hardware but am still waiting on
> XMOS to provide the device firmware.  Once I have the source I should
> be able to answer any questions regarding desriptors in more detail.
> Until then I have the previously mentioned Ubuntu system and an OS X
> machine running 10.4.11.  As far as I understand, 10.6.x is the only
> OS that currently supports the Audio Class 2.0 and I'm hoping to have
> access to a machine soon, but not yet.

10.5 will also get suport for it. Which is important as it is the last
OS X that supports PPC machines. All earlier version, though, lack
support for that.

> Dec 10 00:16:00 sjalloq-desktop kernel: [53352.087740] usb 2-1.2.3:
> new high speed USB device using ehci_hcd and address 56
> Dec 10 00:16:00 sjalloq-desktop kernel: [53352.107747] hub 2-1.2:1.0:
> unable to enumerate USB device on port 3
> Dec 10 00:16:04 sjalloq-desktop kernel: [53356.286145] hub 2-1.2:1.0:
> Cannot enable port 3.  Maybe the USB cable is bad?
> Dec 10 00:16:07 sjalloq-desktop kernel: [53359.285099] hub 2-1.2:1.0:
> Cannot enable port 3.  Maybe the USB cable is bad?
> Dec 10 00:16:10 sjalloq-desktop kernel: [53362.284088] hub 2-1.2:1.0:
> Cannot enable port 3.  Maybe the USB cable is bad?
> Dec 10 00:16:13 sjalloq-desktop kernel: [53365.282591] hub 2-1.2:1.0:
> Cannot enable port 3.  Maybe the USB cable is bad?
> Dec 10 00:16:13 sjalloq-desktop kernel: [53365.282884] hub 2-1.2:1.0:
> unable to enumerate USB device on port 3

That points you to a different problem. You should report that to the
XMOS people. As long as the device probing fails at this level, there is
no way the ALSA driver will possibly get control over the device, so
that needs to be fixed first.

> However, on my OS X machine, if I run USB Prober, I get the output
> that follows the end of the email.
> 
> OUTPUT FROM MAC OS X 10.4.11 USB PROBER:

Yep, that does indeed help. You lsusb -v should print something similar,
even though it might not decode the header so well.

I don't know the USB class audio driver too well, so I can't help much
on the question where to start implementing.

HTH,
Daniel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-12-15  0:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-14 18:51 XMOS USB Audio Class 2.0 Reference Design Shareef Jalloq
2009-12-15  0:00 ` Daniel Mack

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.