<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/54905/usb-cdc-acm-with-audio-class-on-windows</link><description>I have successfully been using USB CDC ACM class alongside USB Audio with only a MIC feature available on Mac OS. However, on Windows, only USB CDC ACM enumerates in Device Manager. The Audio class enumerates with a failure &amp;quot;Device USB\VID****** had a</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 11 Aug 2021 11:01:10 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/54905/usb-cdc-acm-with-audio-class-on-windows" /><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/324441?ContentTypeID=1</link><pubDate>Wed, 11 Aug 2021 11:01:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f8401382-f5cb-4545-9bcf-d99bd35d854b</guid><dc:creator>Andrej102</dc:creator><description>&lt;p&gt;Thank you very much&amp;nbsp;&lt;a class="internal-link view-user-profile" href="https://devzone.nordicsemi.com/members/abhipray"&gt;abhipray&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/324440?ContentTypeID=1</link><pubDate>Wed, 11 Aug 2021 10:59:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:808a1a66-e00e-4cea-93e3-a7d1fe54102c</guid><dc:creator>Andrej102</dc:creator><description>&lt;p&gt;As you can see from the above code&lt;/p&gt;
&lt;p&gt;You will also need to move the lines:&lt;/p&gt;
&lt;p&gt;static app_usbd_class_iface_conf_t const * p_cur_iface = NULL;&lt;br /&gt; p_cur_iface = app_usbd_class_iface_get(p_inst, 0);&lt;/p&gt;
&lt;p&gt;to before inserting.&lt;/p&gt;
&lt;p&gt;and you can still add defines:&lt;/p&gt;
&lt;p&gt;#define USBD_AUDIO_CLASS 0x01&lt;br /&gt;#define USBD_AUDIO_SUBCLASS_CONTROL 0x01&lt;br /&gt;#define USBD_AUDIO_PROTOCOL_UNDEFINED 0x00&lt;br /&gt;#define USBD_DSC_TYPE_INTERFACE_ASSOCIATION 0x0B&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/324438?ContentTypeID=1</link><pubDate>Wed, 11 Aug 2021 10:54:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4f9028bf-46cf-4b27-a072-ee1e71995bd6</guid><dc:creator>Andrej102</dc:creator><description>&lt;p&gt;It works, I give the working code for nrf82540 and SDK v17b maybe it will help someone (to create a composite USB device USB AUDIO + CDC ACM, you need to add a descriptor&amp;nbsp;&lt;span&gt;&amp;nbsp;an &amp;quot;INTERFACE_ASSOCIATION&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;DESCRIPTOR&lt;/span&gt;&lt;span&gt;&amp;quot; (IAD) just before the &amp;quot;INTERFACE DESCRIPTOR&amp;quot; in the file&amp;nbsp;&amp;quot;app_usbd_audio.c&amp;quot;, in the function&amp;nbsp;audio_feed_descriptors()&amp;nbsp;at line 675,&amp;nbsp; for the AudioClass Control Interface&lt;/span&gt;):&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define USBD_AUDIO_CLASS				0x01
#define USBD_AUDIO_SUBCLASS_CONTROL			0x01
#define USBD_AUDIO_PROTOCOL_UNDEFINED			0x00
#define USBD_DSC_TYPE_INTERFACE_ASSOCIATION		0x0B

static bool audio_feed_descriptors(app_usbd_class_descriptor_ctx_t * p_ctx,
                                   app_usbd_class_inst_t const     * p_inst,
                                   uint8_t                         * p_buff,
                                   size_t                            max_size)
{
    static uint8_t ifaces   = 0;
    ifaces = app_usbd_class_iface_count_get(p_inst);
    ASSERT(ifaces == 2);
    app_usbd_audio_t const * p_audio = audio_get(p_inst);

    APP_USBD_CLASS_DESCRIPTOR_BEGIN(p_ctx, p_buff, max_size);

    static app_usbd_class_iface_conf_t const * p_cur_iface = NULL;
    p_cur_iface = app_usbd_class_iface_get(p_inst, 0);

    //********** IA insert ******************

    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x08); // bLength
    APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_DSC_TYPE_INTERFACE_ASSOCIATION);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_number_get(p_cur_iface));
    APP_USBD_CLASS_DESCRIPTOR_WRITE(ifaces);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_CLASS);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_SUBCLASS_CONTROL);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_PROTOCOL_UNDEFINED);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00);

    //*****************************************

    /* CONTROL INTERFACE DESCRIPTOR */
    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x09); // bLength
    APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_DESCRIPTOR_INTERFACE); // bDescriptorType = Interface

  //  static app_usbd_class_iface_conf_t const * p_cur_iface = NULL;
 //   p_cur_iface = app_usbd_class_iface_get(p_inst, 0);

    APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_number_get(p_cur_iface)); // bInterfaceNumber
    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00); // bAlternateSetting
    APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_ep_count_get(p_cur_iface)); // bNumEndpoints
    APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_CLASS); // bInterfaceClass = Audio
    APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_SUBCLASS_AUDIOCONTROL); // bInterfaceSubclass (Audio Control)
    APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_CLASS_PROTOCOL_UNDEFINED); // bInterfaceProtocol
    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00); // iInterface

    /* HEADER INTERFACE */
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/324393?ContentTypeID=1</link><pubDate>Wed, 11 Aug 2021 08:19:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dc2bf86b-6d8a-4077-92fc-64e03de8983c</guid><dc:creator>Andrej102</dc:creator><description>&lt;p&gt;my code with the addition of IAD in the file&amp;nbsp;&lt;span&gt;&amp;quot;app_usbd_audio.c&amp;quot; not work (no usb audio device in windows):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define USBD_AUDIO_CLASS				0x01
#define USBD_AUDIO_SUBCLASS_CONTROL			0x01
#define USBD_AUDIO_PROTOCOL_UNDEFINED			0x00
#define USBD_DSC_TYPE_INTERFACE_ASSOCIATION		0x0B

static bool audio_feed_descriptors(app_usbd_class_descriptor_ctx_t * p_ctx,
                                   app_usbd_class_inst_t const     * p_inst,
                                   uint8_t                         * p_buff,
                                   size_t                            max_size)
{
    static uint8_t ifaces   = 0;
    ifaces = app_usbd_class_iface_count_get(p_inst);
    ASSERT(ifaces == 2);
    app_usbd_audio_t const * p_audio = audio_get(p_inst);
//**
    static app_usbd_class_iface_conf_t const * p_cur_iface = NULL;
    p_cur_iface = app_usbd_class_iface_get(p_inst, 0);
//**

    APP_USBD_CLASS_DESCRIPTOR_BEGIN(p_ctx, p_buff, max_size);

    //********** IA insert ******************

    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x08); // bLength
    APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_DSC_TYPE_INTERFACE_ASSOCIATION);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_number_get(p_cur_iface));
    APP_USBD_CLASS_DESCRIPTOR_WRITE(2);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_CLASS);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_SUBCLASS_CONTROL);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_PROTOCOL_UNDEFINED);
    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00);

    //*****************************************

    /* CONTROL INTERFACE DESCRIPTOR */
    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x09); // bLength
    APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_DESCRIPTOR_INTERFACE); // bDescriptorType = Interface

//    static app_usbd_class_iface_conf_t const * p_cur_iface = NULL;
//    p_cur_iface = app_usbd_class_iface_get(p_inst, 0);

    APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_number_get(p_cur_iface)); // bInterfaceNumber
    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00); // bAlternateSetting
    APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_ep_count_get(p_cur_iface)); // bNumEndpoints
    APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_CLASS); // bInterfaceClass = Audio
    APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_SUBCLASS_AUDIOCONTROL); // bInterfaceSubclass (Audio Control)
    APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_CLASS_PROTOCOL_UNDEFINED); // bInterfaceProtocol
    APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00); // iInterface

    /* HEADER INTERFACE */&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/324318?ContentTypeID=1</link><pubDate>Tue, 10 Aug 2021 16:41:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c0cdb172-ac40-4f70-9cb8-4e4f4e98c5f4</guid><dc:creator>Andrej102</dc:creator><description>&lt;p&gt;I have the same problem. But I will not be able to solve it in the described way. Maybe I&amp;#39;m doing something wrong, could you please demonstrate the part of the code &amp;quot;app_usbd_audio.c&amp;quot; in which the /* INSERT CODE HERE FOR THE IAD * / is inserted, in which the problem is solved?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/250529?ContentTypeID=1</link><pubDate>Mon, 18 May 2020 17:41:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9d8e9c86-c745-4627-bf3b-f8f036b7dfab</guid><dc:creator>abhipray</dc:creator><description>&lt;p&gt;Brilliant, that worked for me! Thank you so much.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/250482?ContentTypeID=1</link><pubDate>Mon, 18 May 2020 14:24:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7b972d99-3d1b-4e27-b0d3-20781941f026</guid><dc:creator>engleok</dc:creator><description>&lt;p&gt;Just to add on to the above, in test.h, in the static declaration of the descriptors, some values are marked as &amp;quot;pending&amp;quot;. It was too easy to make a mistake changing the descriptor and forgot to update other parts. So, in my code, these are not hard coded but&amp;nbsp;are automatically filled in based on&amp;nbsp;the actual type and number of USB devices to be created. In case you want to test quickly, look for &amp;quot;pending&amp;quot; and enter the values based on the descriptor bytes below.&lt;/p&gt;
&lt;p&gt;DEVICE: 12 01 00 02 00 00 00 40 15 19 0E 52 00 01 01 02 03 01&lt;br /&gt;CONFIGURATION: 09 02 B9 00 04 01 04 C0 32&lt;br /&gt;USBD_DSC_TYPE_IF_ASSOC: 08 0B 02 02 01 01 00 00&lt;br /&gt;INTERFACE: 09 04 02 00 00 01 01 00 00&lt;br /&gt;AUDIO INTERFACE: 09 24 01 00 01 2B 00 01 03&lt;br /&gt;AUDIO INTERFACE: 0C 24 02 01 01 01 00 02 03 00 00 00&lt;br /&gt;AUDIO INTERFACE: 0D 24 06 02 01 02 01 00 01 00 01 00 00&lt;br /&gt;AUDIO INTERFACE: 09 24 03 03 02 03 00 02 00&lt;br /&gt;INTERFACE: 09 04 03 00 00 01 02 00 00&lt;br /&gt;INTERFACE: 09 04 03 01 01 01 02 00 00&lt;br /&gt;AUDIO INTERFACE: 07 24 01 01 00 01 00&lt;br /&gt;AUDIO INTERFACE: 0B 24 02 03 02 02 10 01 80 BB 00&lt;br /&gt;AUDIO ENDPOINT: 07 25 01 00 00 00 00&lt;br /&gt;ENDPOINT: 07 05 08 01 C0 00 01&lt;br /&gt;USBD_DSC_TYPE_IF_ASSOC: 08 0B 06 02 02 02 01 00&lt;br /&gt;INTERFACE: 09 04 06 00 01 02 02 01 00&lt;br /&gt;AUDIO INTERFACE: 05 24 00 10 01&lt;br /&gt;AUDIO INTERFACE: 05 24 01 03 07&lt;br /&gt;AUDIO INTERFACE: 04 24 02 02&lt;br /&gt;AUDIO INTERFACE: 05 24 06 06 07&lt;br /&gt;ENDPOINT: 07 05 83 03 40 00 10&lt;br /&gt;INTERFACE: 09 04 07 00 02 0A 00 00 00&lt;br /&gt;ENDPOINT: 07 05 84 02 40 00 00&lt;br /&gt;ENDPOINT: 07 05 04 02 40 00 00&lt;br /&gt;STRING: 04 03 09 04&lt;br /&gt;STRING: 0A 03 4D 00 41 00 4E 00 55 00&lt;br /&gt;STRING: 0A 03 50 00 52 00 4F 00 44 00&lt;br /&gt;STRING: 0A 03 53 00 54 00 52 00 33 00&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/250475?ContentTypeID=1</link><pubDate>Mon, 18 May 2020 14:04:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3a34471d-226e-4b54-b9af-7a0669604dd9</guid><dc:creator>engleok</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I have prepared the file attached extracted based on what I used in my own bare metal source.&amp;nbsp;Please see the static declarations for the descriptors at the end of the file. The extra IAD to be inserted is at line 214,215:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/test.h"&gt;devzone.nordicsemi.com/.../test.h&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;For the SDK (nRF5_SDK_16.0.0_98a08e2), I have not tested it but the place to modify is likely in &amp;quot;app_usbd_audio.c&amp;quot;, in the function &lt;span&gt;audio_feed_descriptors()&amp;nbsp;&lt;/span&gt;at line 675.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hope it helps.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;static bool audio_feed_descriptors(app_usbd_class_descriptor_ctx_t * p_ctx,&lt;br /&gt; app_usbd_class_inst_t const * p_inst,&lt;br /&gt; uint8_t * p_buff,&lt;br /&gt; size_t max_size)&lt;br /&gt;{&lt;br /&gt; static uint8_t ifaces = 0;&lt;br /&gt; ifaces = app_usbd_class_iface_count_get(p_inst);&lt;br /&gt; ASSERT(ifaces == 2);&lt;br /&gt; app_usbd_audio_t const * p_audio = audio_get(p_inst);&lt;/p&gt;
&lt;p&gt;APP_USBD_CLASS_DESCRIPTOR_BEGIN(p_ctx, p_buff, max_size);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;/* INSERT CODE HERE FOR THE IAD */&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;/* CONTROL INTERFACE DESCRIPTOR */&lt;br /&gt; APP_USBD_CLASS_DESCRIPTOR_WRITE(0x09); // bLength&lt;br /&gt; APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_DESCRIPTOR_INTERFACE); // bDescriptorType = Interface&lt;/p&gt;
&lt;p&gt;static app_usbd_class_iface_conf_t const * p_cur_iface = NULL;&lt;br /&gt; p_cur_iface = app_usbd_class_iface_get(p_inst, 0);&lt;/p&gt;
&lt;p&gt;APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_number_get(p_cur_iface)); // bInterfaceNumber&lt;br /&gt; APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00); // bAlternateSetting&lt;br /&gt; APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_ep_count_get(p_cur_iface)); // bNumEndpoints&lt;br /&gt; APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_CLASS); // bInterfaceClass = Audio&lt;br /&gt; APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_SUBCLASS_AUDIOCONTROL); // bInterfaceSubclass (Audio Control)&lt;br /&gt; APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_CLASS_PROTOCOL_UNDEFINED); // bInterfaceProtocol&lt;br /&gt; APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00); // iInterface&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/250448?ContentTypeID=1</link><pubDate>Mon, 18 May 2020 12:55:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:88a67da8-5293-4063-ae74-35966f9b8489</guid><dc:creator>engleok</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I tried to use their SDK but it is too convoluted for my liking. Tracing was particularly difficult with many levels of indirection and even some code were in .h files rather than in .c files. So I spent many days and nights ended up writing a bare metal version with only the minimal files from their SDK such as the startup code and bitfields etc only. What shocked me was when I got the same issues using my BareMetal version. That&amp;rsquo;s when I realized it was not their library issue.&lt;/p&gt;
&lt;p&gt;i will share my exact descriptors shortly and maybe help relook into their SDK to see where you would need to tweet to get it to work. Hopefully Nordic will incorporate as well into their updates.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/250339?ContentTypeID=1</link><pubDate>Mon, 18 May 2020 05:33:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:241f9f61-3e07-4ff8-8124-8b78f73de3ec</guid><dc:creator>abhipray</dc:creator><description>&lt;p&gt;Thank you for sharing. Could you help provide more details on where exactly to inject IAD descriptor in the USB Audio class? What goes into the descriptor and can I inject it using any of existing SDK API macros?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/250336?ContentTypeID=1</link><pubDate>Mon, 18 May 2020 04:48:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b9427237-3a71-4669-8dbd-4caa079c0dc2</guid><dc:creator>engleok</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I had the same problem and had posted a support ticket on this but with no reply so far.&lt;/p&gt;
&lt;p&gt;I just found the solution for my case so I thought to share.&lt;/p&gt;
&lt;p&gt;We need to include an &amp;quot;INTERFACE_ASSOCIATION&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;DESCRIPTOR&lt;/span&gt;&amp;quot; (IAD) just before the &amp;quot;INTERFACE DESCRIPTOR&amp;quot; for the AudioClass Control Interface.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;On Windows,&amp;nbsp;it works WITHOUT the IAD when there&amp;nbsp;are&lt;span&gt;&amp;nbsp;&lt;/span&gt;NO CDC-ACM descriptors. However, once CDC-ACM descriptors are added, the AudioClass descriptors will&amp;nbsp;NOT&lt;span&gt;&amp;nbsp;&lt;/span&gt;be parsed correctly during USB device enumeration. Adding the IAD solves this problem.&lt;/p&gt;
&lt;p&gt;Since you&amp;nbsp;did not have the issues on Mac but then had it on Windows, perhaps it is a Windows problem.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/223467?ContentTypeID=1</link><pubDate>Wed, 04 Dec 2019 05:52:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5f4a8e8f-35c0-46ed-ac9b-eaf271a345b4</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Hello,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Apologies for the late reply.&amp;nbsp;I&amp;#39;m out on travel but will look into your case when I return to the office.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Øyvind&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/222662?ContentTypeID=1</link><pubDate>Thu, 28 Nov 2019 17:08:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cd7fe4b1-8faa-4941-a527-81d9ca7dd7f1</guid><dc:creator>abhipray</dc:creator><description>&lt;p&gt;I have merged the code from the two examples(nrf_cli and usb_audio). I cannot share the code since it&amp;#39;s tied deeply to the rest of our system. I can sanitize and share relevant pieces however.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/222586?ContentTypeID=1</link><pubDate>Thu, 28 Nov 2019 10:33:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:528a3a73-6688-47a4-a82c-a834bdd7d434</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;I&amp;#39;m a little confused. Are you using multiple examples? Have you merged these together? If so, please provide the code.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/222449?ContentTypeID=1</link><pubDate>Wed, 27 Nov 2019 17:56:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9754a3f5-dd85-40d8-afe7-e9ca87651926</guid><dc:creator>abhipray</dc:creator><description>&lt;p&gt;#define NRF_CLI_CDC_ACM_COMM_INTERFACE 0 #define NRF_CLI_CDC_ACM_DATA_INTERFACE 1 #define MIC_CONTROL_INTERFACE_NUM 2 #define MIC_STREAM_INTERFACE_NUM 3&amp;nbsp;&lt;br /&gt;&lt;br /&gt;All the other values are the same as in the examples. For USB Audio, I got rid of all the headphone descriptors. Additionally,&amp;nbsp;`app_usbd_audio_sof_interrupt_register` did not work for me for sending audio packets over; I&amp;nbsp;opened a separate ticket for that. Instead I am processing SOF events inside `usbd_user_ev_handler` and sending tx audio frames over within the interrupt.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/222444?ContentTypeID=1</link><pubDate>Wed, 27 Nov 2019 16:56:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a0e0733f-a0ef-423d-89f8-c67de8c0cd5c</guid><dc:creator>abhipray</dc:creator><description>&lt;p&gt;I am using sdk 15.3&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: USB CDC ACM with AUDIO class on Windows</title><link>https://devzone.nordicsemi.com/thread/222329?ContentTypeID=1</link><pubDate>Wed, 27 Nov 2019 11:57:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8e54681b-d9d6-473c-b9c6-bbed80821f69</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Hello,&lt;br /&gt;&lt;br /&gt;Can you provide some more information about your setup? What SDK are you using?&amp;nbsp;Can you share your code?&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Øyvind&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>