Skip to content

E (965) HCD DWC: EP MPS (1023) exceeds supported limit (600) (AEGHB-1321) #615

@chenhequan1224

Description

@chenhequan1224

Answers checklist.

  • I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.

ESP-IDF v5.5.1

Espressif SoC revision.

ESP32-S3

Operating System used.

Windows

How did you build your project?

VS Code IDE

If you are using Windows, please specify command line type.

None

Development Kit.

ESP32S3N16R8

Power Supply used.

USB

What is the expected behavior?

Data from the USB microphone array is obtained through the usb_host_uac component.

What is the actual behavior?

An error message appears after I call uac_host_device_start.

Image

Steps to reproduce.

I referenced the example at https://github.com/espressif/esp-iot-solution/tree/master/examples/usb/host/usb_audio_player, which only plays audio and doesn't receive audio. I modified it, and the core logic is as follows.

` case UAC_HOST_DRIVER_EVENT_RX_CONNECTED: {
uac_host_device_handle_t uac_device_handle = NULL;
const uac_host_device_config_t dev_config = {
.addr = addr,
.iface_num = iface_num,
.buffer_size = 16000,
.buffer_threshold = 4000,
.callback = uac_device_callback,
.callback_arg = NULL,
};
ESP_ERROR_CHECK(uac_host_device_open(&dev_config, &uac_device_handle));

                uac_host_dev_alt_param_t iface_alt_params;
                uac_host_get_device_alt_param(uac_device_handle, iface_num, &iface_alt_params);

                uac_host_stream_config_t stream_config = {
                    .channels = iface_alt_params.channels,
                    .bit_resolution = iface_alt_params.bit_resolution,
                        .sample_freq = iface_alt_params.sample_freq[0],
                };
                ESP_ERROR_CHECK(uac_host_device_start(uac_device_handle, &stream_config));

                ESP_LOGI(TAG, "UAC Device connected: MIC");
                break;
             }`

Debug Logs.

I (305) usb_audio_player: USB Host installed
I (305) uac-host: Install Succeed, Version: 1.3.2
I (305) usb_audio_player: UAC Class Driver installed
*** Configuration descriptor ***
bLength 9
bDescriptorType 2
wTotalLength 132
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 4
bmAttributes 0xc0
bMaxPower 500mA
        *** Interface descriptor ***
        bLength 9
        bDescriptorType 4
        bInterfaceNumber 0
        bAlternateSetting 0
        bNumEndpoints 0
        bInterfaceClass 0x1
        bInterfaceSubClass 0x1
        bInterfaceProtocol 0x0
        iInterface 5
        *** Audio control header descriptor ***
        bLength 9
        bDescriptorType 0x24
        bDescriptorSubtype 0x1
        bcdADC 0x100
        wTotalLength 39
        bInCollection 1
                Interface number[0] = 1
        *** Audio control input terminal descriptor ***
        bLength 12
        bDescriptorType 0x24
        bDescriptorSubtype 0x2
        bTerminalID 1
        wTerminalType 0x201
        bAssocTerminal 0
        bNrChannels 1
        wChannelConfig 0x0001
        iChannelNames 7
        iTerminal 6
        *** Audio control feature unit descriptor ***
        bLength 9
        bDescriptorType 0x24
        bDescriptorSubtype 0x6
        bUnitID 5
        bSourceID 1
        bControlSize 2
        bmaControls[ch0] 0x2
        iFeature 2
        *** Audio control output terminal descriptor ***
        bLength 9
        bDescriptorType 0x24
        bDescriptorSubtype 0x3
        bTerminalID 2
        wTerminalType 0x101
        bAssocTerminal 0
        bSourceID 5
        iTerminal 9
        *** Interface descriptor ***
        bLength 9
        bDescriptorType 4
        bInterfaceNumber 1
        bAlternateSetting 0
        bNumEndpoints 0
        bInterfaceClass 0x1
        bInterfaceSubClass 0x2
        bInterfaceProtocol 0x0
        iInterface 10
        *** Interface descriptor ***
        bLength 9
        bDescriptorType 4
        bInterfaceNumber 1
        bAlternateSetting 1
        bNumEndpoints 1
        bInterfaceClass 0x1
        bInterfaceSubClass 0x2
        bInterfaceProtocol 0x0
        iInterface 11
        *** Audio stream general descriptor ***
        bLength 7
        bDescriptorType 0x24
        bDescriptorSubtype 0x1
        bTerminalLink 2
        bDelay 1
        wFormatTag 1
        *** Audio stream format type descriptor ***
        bLength 11
        bDescriptorType 0x24
        bDescriptorSubtype 0x2
        bFormatType 1
        bNrChannels 1
        bSubframeSize 2
        bBitResolution 16
        bSamFreqType 1
        tSamFreq[0] 16000
                *** Endpoint descriptor ***
                bLength 9
                bDescriptorType 5
                bEndpointAddress 0x83   EP 3 IN
                bmAttributes 0x5        ISOC
                wMaxPacketSize 1023
                bInterval 4
                *** Audio stream endpoint general descriptor ***
                bLength 7
                bDescriptorType 0x25
                bDescriptorSubtype 0x1
                bmAttributes 0x1
                bLockDelayUnits 0
                wLockDelay 0
        *** Interface descriptor ***
        bLength 9
        bDescriptorType 4
        bInterfaceNumber 2
        bAlternateSetting 0
        bNumEndpoints 2
        bInterfaceClass 0xff
        bInterfaceSubClass 0x42
        bInterfaceProtocol 0x1
        iInterface 13
                *** Endpoint descriptor ***
                bLength 7
                bDescriptorType 5
                bEndpointAddress 0x1    EP 1 OUT
                bmAttributes 0x2        BULK
                wMaxPacketSize 64
                bInterval 0
                *** Endpoint descriptor ***
                bLength 7
                bDescriptorType 5
                bEndpointAddress 0x81   EP 1 IN
                bmAttributes 0x2        BULK
                wMaxPacketSize 64
                bInterval 0
I (955) usb_audio_player: channels=1, bit_resolution=16, sample_freq=16000
E (965) HCD DWC: EP MPS (1023) exceeds supported limit (600)
E (965) USBH: EP Alloc error: ESP_ERR_NOT_SUPPORTED
E (975) USB HOST: EP allocation error ESP_ERR_NOT_SUPPORTED
E (975) USB HOST: Claiming interface error: ESP_ERR_NOT_SUPPORTED
E (985) uac-host: uac_host_interface_claim_and_prepare_transfer(1108): Unable to claim Interface
E (995) uac-host: uac_host_device_start(2322): Unable to claim Interface
ESP_ERROR_CHECK failed: esp_err_t 0x106 (ESP_ERR_NOT_SUPPORTED) at 0x42006829

More Information.

I found that Hardware FIFO size biasing can be configured in menuconfig, but the maximum MPS is only 600.

Image I consulted the microphone array manufacturer, and they said that the MPS of a typical microphone array is 1023, which is also verified by the printed UVC equipment information. My question is, is the maximum MPS of the ESP32S3's USB hardware FIFO 600? Can a USB microphone array be connected?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions