usb_host_lib example won't enumerate Launchpad Mk2

mdroberts1243
Posts: 5
Joined: Tue Jun 06, 2023 6:48 pm
Location: Ottawa, Ontario Canada

usb_host_lib example won't enumerate Launchpad Mk2

Postby mdroberts1243 » Tue Jun 06, 2023 7:07 pm

Hi,

I've been trying to use the usb_host_lib example with a Novation Launchpad Mk2 and it is always failing:

Code: Select all

I (829) DAEMON: Installing USB Host Library
V (829) intr_alloc: esp_intr_alloc_intrstatus (cpu 0): checking args
V (839) intr_alloc: esp_intr_alloc_intrstatus (cpu 0): Args okay. Resulting flags 0x802
D (849) intr_alloc: Connected src 48 to int 12 (cpu 0)
I (879) CLASS: Registering Client
I (879) CLASS: In while loop
I (879) CLASS: driver_obj.actions == 0
D (2479) HUB: Root port reset
D (2479) HUB: Stage done: START
D (2479) HUB: Stage done: GET_SHORT_DEV_DESC
E (2479) HUB: Bad transfer status 1: CHECK_SHORT_DEV_DESC
E (2479) HUB: Stage failed: CHECK_SHORT_DEV_DESC
D (2489) HUB: Stage done: CLEANUP_FAILED
The Launchpad stays in light show mode (not enumerated). Searching around I have tried to increase all the timers in menuconfig with no effect.

I have tried the same example with an Arturia Keystep and it seems to work fine:

Code: Select all

I (829) DAEMON: Installing USB Host Library
V (829) intr_alloc: esp_intr_alloc_intrstatus (cpu 0): checking args
V (839) intr_alloc: esp_intr_alloc_intrstatus (cpu 0): Args okay. Resulting flags 0x802
D (849) intr_alloc: Connected src 48 to int 12 (cpu 0)
I (879) CLASS: Registering Client
I (879) CLASS: In while loop
I (879) CLASS: driver_obj.actions == 0
D (2479) HUB: Root port reset
D (2479) HUB: Stage done: START
D (2479) HUB: Stage done: GET_SHORT_DEV_DESC
D (2479) HUB: Stage done: CHECK_SHORT_DEV_DESC
D (3479) HUB: Stage done: SECOND_RESET
D (3479) HUB: Stage done: SET_ADDR
D (3479) HUB: Stage done: CHECK_ADDR
D (3979) HUB: Stage done: SET_ADDR_RECOVERY
D (3979) HUB: Stage done: GET_FULL_DEV_DESC
D (3979) HUB: Stage done: CHECK_FULL_DEV_DESC
D (3979) HUB: Stage done: GET_SHORT_CONFIG_DESC
D (3979) HUB: Stage done: CHECK_SHORT_CONFIG_DESC
D (3989) HUB: Stage done: GET_FULL_CONFIG_DESC
D (3989) HUB: Stage done: CHECK_FULL_CONFIG_DESC
D (3999) HUB: Stage done: SET_CONFIG
D (3999) HUB: Stage done: CHECK_CONFIG
D (3999) HUB: Stage done: GET_SHORT_LANGID_TABLE
D (4009) HUB: Stage done: CHECK_SHORT_LANGID_TABLE
D (4009) HUB: Stage done: GET_FULL_LANGID_TABLE
D (4019) HUB: Stage done: CHECK_FULL_LANGID_TABLE
D (4019) HUB: Stage done: GET_SHORT_MANU_STR_DESC
D (4029) HUB: Stage done: CHECK_SHORT_MANU_STR_DESC
D (4029) HUB: Stage done: GET_FULL_MANU_STR_DESC
D (4039) HUB: Stage done: CHECK_FULL_MANU_STR_DESC
D (4039) HUB: Stage done: GET_SHORT_PROD_STR_DESC
D (4049) HUB: Stage done: CHECK_SHORT_PROD_STR_DESC
D (4049) HUB: Stage done: GET_FULL_PROD_STR_DESC
D (4059) HUB: Stage done: CHECK_FULL_PROD_STR_DESC
D (4059) HUB: Stage done: GET_SHORT_SER_STR_DESC
D (4069) HUB: Stage done: CHECK_SHORT_SER_STR_DESC
D (4069) HUB: Stage done: GET_FULL_SER_STR_DESC
D (4069) HUB: Stage done: CHECK_FULL_SER_STR_DESC
D (4079) HUB: Stage done: CLEANUP
D (4079) USBH: Processing actions 0x100
D (4089) USBH: New device 1
I (4089) CLASS: In while loop
I (4089) CLASS: Opening device at address 1
I (4099) CLASS: Getting device information
I (4099) CLASS:         Full speed
I (4109) CLASS:         bConfigurationValue 1
I (4109) CLASS: Getting device descriptor
*** Device descriptor ***
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0x0
bDeviceSubClass 0x0
bDeviceProtocol 0x0
bMaxPacketSize0 64
idVendor 0x1c75
idProduct 0x288
bcdDevice 2.00
iManufacturer 1
iProduct 2
iSerialNumber 3
bNumConfigurations 1
I (4139) CLASS: Getting config descriptor
*** Configuration descriptor ***
bLength 9
bDescriptorType 2
wTotalLength 101
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
bMaxPower 100mA
        *** Interface descriptor ***
        bLength 9
        bDescriptorType 4
        bInterfaceNumber 0
        bAlternateSetting 0
        bNumEndpoints 0
        bInterfaceClass 0x1
        bInterfaceSubClass 0x1
        bInterfaceProtocol 0x0
        iInterface 0
        *** Interface descriptor ***
        bLength 9
        bDescriptorType 4
        bInterfaceNumber 1
        bAlternateSetting 0
        bNumEndpoints 2
        bInterfaceClass 0x1
        bInterfaceSubClass 0x3
        bInterfaceProtocol 0x0
        iInterface 0
                *** Endpoint descriptor ***
                bLength 9
                bDescriptorType 5
                bEndpointAddress 0x2    EP 2 OUT
                bmAttributes 0x2        BULK
                wMaxPacketSize 64
                bInterval 0
                *** Endpoint descriptor ***
                bLength 9
                bDescriptorType 5
                bEndpointAddress 0x81   EP 1 IN
                bmAttributes 0x2        BULK
                wMaxPacketSize 64
                bInterval 0
I (4219) CLASS: Getting Manufacturer string descriptor
Arturia(
I (4229) CLASS: Getting Product string descriptor
Arturia KeyStep 32
I (4239) CLASS: Getting Serial Number string descriptor
00000000001A
I (4239) CLASS: In while loop
I (4249) CLASS: driver_obj.actions == 0
D (9639) USBH: Processing actions 0x17
D (9639) USBH: Default pipe device 1
E (9639) USBH: Device 1 gone
I (9639) CLASS: In while loop
I (9649) CLASS: Deregistering Client
D (9649) USBH: Processing actions 0x40
D (9649) USBH: Freeing device 1
D (9659) USBH: Device all free
D (9659) HUB: Recovering root port
I (9659) DAEMON: No more clients and devices
V (9669) intr_alloc: esp_intr_free: Disabling int, killing handler
On Linux an lsusb for the Launchpad outputs:

Code: Select all

$ sudo lsusb -D /dev/bus/usb/003/002
[sudo] password for mark:
Device: ID 1235:0069 Focusrite-Novation Launchpad MK2
      iInterface              3 Launchpad MK2
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0009
        bInCollection           1
        baInterfaceNr(0)        1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      3 MIDI Streaming
      bInterfaceProtocol      0
      iInterface              3 Launchpad MK2

      MIDIStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x002e
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 1
        iJack                   0
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                 2
        bNrInputPins            1
        baSourceID( 0)          1
        BaSourcePin( 0)         1
        iJack                   0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       2
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       1
Device Status:     0x0000
  (Bus Powered)
The Launchpad works fine in regular use.

Any ideas on how I can get past this error?
E (2479) HUB: Bad transfer status 1: CHECK_SHORT_DEV_DESC
E (2479) HUB: Stage failed: CHECK_SHORT_DEV_DESC

mdroberts1243
Posts: 5
Joined: Tue Jun 06, 2023 6:48 pm
Location: Ottawa, Ontario Canada

Re: usb_host_lib example won't enumerate Launchpad Mk2

Postby mdroberts1243 » Wed Jun 07, 2023 4:31 pm

I opened an issue on esp-idf github: https://github.com/espressif/esp-idf/issues/11616

Who is online

Users browsing this forum: StanInexeon and 145 guests