trouble with sw_usb_audio-_sw_v8_1_0 on XK_AUDIO-316-MC

Discussions about USB Audio on XMOS devices
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

Post by rml42 »

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:
Screenshot_20241020_005453.png
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:
Screenshot_20241020_010544.png
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!
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

Post by AlexAdvice »

Hi.
Did you try to use it not with internal Win11 driver, even demo?
User avatar
Ross
Verified
XCore Legend
Posts: 1158
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

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
User avatar
Ross
Verified
XCore Legend
Posts: 1158
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

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

Post by rml42 »

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

[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

Post by rml42 »

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
User avatar
Ross
Verified
XCore Legend
Posts: 1158
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

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!)
Technical Director @ XMOS. Opinions expressed are my own
AlexAdvice
XCore Addict
Posts: 150
Joined: Sun Feb 23, 2014 11:30 am

Post by AlexAdvice »

Ross wrote: Wed Feb 05, 2025 11:48 am 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!)
Hi Ross.
How can this help if the device does not appear in the list of sound devices?