* 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.