[alsa-devel] XMOS USB Audio Class 2.0 Reference Design
Shareef Jalloq
shareef at jalloq.co.uk
Mon Dec 14 19:51:41 CET 2009
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
More information about the Alsa-devel
mailing list