Hi,
I'm currently trying to use the XK_AUDIO-316-MC board as a 7.1 sound card, but I'm encountering difficulties getting it to function properly under Windows.
I'm working with the sw_usb_audio_sw_v8_1_0 firmware provided by XMOS, configured with the 2SSi8o8xxxxxx option (outputs only, no SPDIF). My goal is to use the board with the native Windows 11 UAC2.0 driver, without the Thesycon driver.
Here's the issue: In the Windows sound configuration, the speaker list doesn't appear: However, when I click on the test buttons, I can hear all the test tones coming from the correct channels.
After some investigation, I looked into the USB descriptors and noticed that the bmChannelConfig field is set to 0. From my understanding, for the board to be recognized as a 7.1 sound card, this field should be set to 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR).
When I change bmChannelConfig to this value, I can see the channel configuration in the Windows sound settings, but the test tones no longer play:
Has anyone successfully managed to get this software working in that configuration? If so, could you please share which version of the software you used and any specific compile options? I don’t mind if it’s an old or outdated version; I just need to get it working.
Any advice would be greatly appreciated!
trouble with sw_usb_audio-_sw_v8_1_0 on XK_AUDIO-316-MC
-
rml42
- New User
- Posts: 2
- Joined: Sat Oct 19, 2024 11:40 pm
trouble with sw_usb_audio-_sw_v8_1_0 on XK_AUDIO-316-MC
You do not have the required permissions to view the files attached to this post.
-
AlexAdvice
- XCore Addict
- Posts: 150
- Joined: Sun Feb 23, 2014 11:30 am
Hi.
Did you try to use it not with internal Win11 driver, even demo?
Did you try to use it not with internal Win11 driver, even demo?
-
Ross
Verified - XCore Legend
- Posts: 1307
- Joined: Thu Dec 10, 2009 9:20 pm
- Location: Bristol, UK
Try clearing out your Windows driver cache when you make changes to a devices descriptors, this is a good tool: https://www.nirsoft.net/utils/usb_devices_view.html
Technical Director @ XMOS. Opinions expressed are my own
-
Ross
Verified - XCore Legend
- Posts: 1307
- Joined: Thu Dec 10, 2009 9:20 pm
- Location: Bristol, UK
Mod edit: moved to USB audio
Technical Director @ XMOS. Opinions expressed are my own
-
rml42
- New User
- Posts: 2
- Joined: Sat Oct 19, 2024 11:40 pm
Hi,
Thanks for the tip,
I tried the tool you provided and uninstalled all related usb devices.
The problem remains.
With the thesycon demo driver, no problem at all.
It is less urgent, since we decided not to use the windows interface to configure our product.
We are going to use a CDC interface instead.
Anyway, I am still curious if you have any other clues.
Here are the descriptors, I suspect " Warning: Junk at end of descriptor (17 bytes):
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 " to be the problem.
Looking at file "lib_xua/src/core/endpoint0/xua_ep0_descriptors.h", I got the impression that configDesc_MixerUnit is left uninitialized ...
Thanks for the tip,
I tried the tool you provided and uninstalled all related usb devices.
The problem remains.
With the thesycon demo driver, no problem at all.
It is less urgent, since we decided not to use the windows interface to configure our product.
We are going to use a CDC interface instead.
Anyway, I am still curious if you have any other clues.
Here are the descriptors, I suspect " Warning: Junk at end of descriptor (17 bytes):
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 " to be the problem.
Looking at file "lib_xua/src/core/endpoint0/xua_ep0_descriptors.h", I got the impression that configDesc_MixerUnit is left uninitialized ...
[pre][pre][pre]Bus 001 Device 016: ID 20b1:001b XMOS Ltd XMOS xCORE.ai MC (UAC2.0)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 2
bDeviceProtocol 1
bMaxPacketSize0 64
idVendor 0x20b1 XMOS Ltd
idProduct 0x001b
bcdDevice 8.10
iManufacturer 1 XMOS
iProduct 3 XMOS xCORE.ai MC (UAC2.0)
iSerial 2
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x01eb
bNumInterfaces 5
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 3
bFunctionClass 1 Audio
bFunctionSubClass 0
bFunctionProtocol 32
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 32
iInterface 3 XMOS xCORE.ai MC (UAC2.0)
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 2.00
bCategory 8
wTotalLength 0x00f8
bmControls 0x00
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (CLOCK_SOURCE)
bClockID 41
bmAttributes 3 Internal programmable clock
bmControls 0x07
Clock Frequency Control (read/write)
Clock Validity Control (read-only)
bAssocTerminal 0
iClockSource 9 XMOS Internal Clock
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 11 (CLOCK_SELECTOR)
bClockID 40
bNrInPins 1
baCSourceID(0) 41
bmControls 0x03
Clock Selector Control (read/write)
iClockSelector 8 XMOS Clock Selector
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 2
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bCSourceID 40
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x0000
iTerminal 6 XMOS xCORE.ai MC (UAC2.0)
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 51
wExtensionCode 0x0000
bNrInPins 1
baSourceID(0) 2
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x03
Enable Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 42
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 10
bSourceID 51
bmaControls(0) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(1) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(2) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(3) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(4) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(5) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(6) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(7) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(8) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 20
wTerminalType 0x0301 Speaker
bAssocTerminal 0
bSourceID 10
bCSourceID 40
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0201 Microphone
bAssocTerminal 0
bCSourceID 40
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 52
wExtensionCode 0x0000
bNrInPins 1
baSourceID(0) 1
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x03
Enable Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 42
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 11
bSourceID 52
bmaControls(0) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(1) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(2) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(3) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(4) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(5) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(6) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(7) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
bmaControls(8) 0x0000000f
Mute Control (read/write)
Volume Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 22
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 11
bCSourceID 40
bmControls 0x0000
iTerminal 7 XMOS xCORE.ai MC (UAC2.0)
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 50
wExtensionCode 0x0000
bNrInPins 2
baSourceID(0) 2
baSourceID(1) 1
bNrChannels 18
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x03
Enable Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 32
bDescriptorType 36
bDescriptorSubtype 4 (MIXER_UNIT)
bUnitID 60
bNrInPins 1
baSourceID(0) 50
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
bmMixerControls(0) 0xff
bmControls 0xff
Cluster Control (read/write)
Underflow Control (read/write)
Overflow Control (read/write)
iMixer 255 (error)
Warning: Junk at end of descriptor (17 bytes):
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4 XMOS xCORE.ai MC (UAC2.0)
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4 XMOS xCORE.ai MC (UAC2.0)
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 2
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 4
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 13
Transfer Type Isochronous
Synch Type Synchronous
Usage Type Data
wMaxPacketSize 0x00e0 1x 224 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4 XMOS xCORE.ai MC (UAC2.0)
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 2
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 2
bBitResolution 16
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 13
Transfer Type Isochronous
Synch Type Synchronous
Usage Type Data
wMaxPacketSize 0x0070 1x 112 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 5 XMOS xCORE.ai MC (UAC2.0)
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 5 XMOS xCORE.ai MC (UAC2.0)
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 22
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 4
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 13
Transfer Type Isochronous
Synch Type Synchronous
Usage Type Data
wMaxPacketSize 0x00e0 1x 224 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 3
bInterfaceCount 2
bFunctionClass 2 Communications
bFunctionSubClass 2 Abstract (modem)
bFunctionProtocol 0
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 0
iInterface 0
CDC Header:
bcdCDC 1.10
CDC ACM:
bmCapabilities 0x02
line coding and serial state
CDC Union:
bMasterInterface 3
bSlaveInterface 4
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 16
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 4
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 2
bDeviceProtocol 1
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)[/pre][/pre][/pre][/font]
Last edited by rml42 on Mon Nov 04, 2024 12:05 am, edited 1 time in total.
-
rml42
- New User
- Posts: 2
- Joined: Sat Oct 19, 2024 11:40 pm
Hi,
I have to reopen this since our application relies on having speaker visible in the test menu of windows.
Additionnaly, audio plays well in VLC, but not in windows media player which says there is a "problem" with the sound card.
Of course nothing in event log.
II tried with sw_usb_audio-sw-v9.0.0. Same problem
Using the demo driver, everything works. but it has to work without installing any additional driver software.
What we want to achieve :
- 7.1 audio 8 channels at 48 khz
- correctly recognized in winows ( 10 and 11 ) speaker list.
- audio should play
I greatly apreciate some help ( a step by step procedure to make this work)
Since it is written on xmos site "This driver supports consumer audio applications and supports Windows sound API such as WSAPI, DirectSound & MME" . I can't imagine that usecase can only work with proprietary drivers ...
Thanks in advance
I have to reopen this since our application relies on having speaker visible in the test menu of windows.
Additionnaly, audio plays well in VLC, but not in windows media player which says there is a "problem" with the sound card.
Of course nothing in event log.
II tried with sw_usb_audio-sw-v9.0.0. Same problem
Using the demo driver, everything works. but it has to work without installing any additional driver software.
What we want to achieve :
- 7.1 audio 8 channels at 48 khz
- correctly recognized in winows ( 10 and 11 ) speaker list.
- audio should play
I greatly apreciate some help ( a step by step procedure to make this work)
Since it is written on xmos site "This driver supports consumer audio applications and supports Windows sound API such as WSAPI, DirectSound & MME" . I can't imagine that usecase can only work with proprietary drivers ...
Thanks in advance
-
Ross
Verified - XCore Legend
- Posts: 1307
- Joined: Thu Dec 10, 2009 9:20 pm
- Location: Bristol, UK
Do you have the sample rate set to the same value for recording and playback devices?
(you can also set MAX_FREQ and MIX_FREQ to both 48khz for now to limit options - don't forget to use usbdeview after making this change though!)
(you can also set MAX_FREQ and MIX_FREQ to both 48khz for now to limit options - don't forget to use usbdeview after making this change though!)
Technical Director @ XMOS. Opinions expressed are my own
-
AlexAdvice
- XCore Addict
- Posts: 150
- Joined: Sun Feb 23, 2014 11:30 am
Hi Ross.
How can this help if the device does not appear in the list of sound devices?
