USB MIDI device only allows output to controller

I am attempting to use an Alesis Vortex to play music. It works fine on the Windows side of my PC. In addition, I have an Alesis Qmini that works as expected on both Windows and Linux. But with the Vortex on Linux, in qpwgraph, I can only see outputs to it, not inputs from it. These are the only nodes for the Vortex:
image

amidi -l shows the following:

Dir Device    Name
 O  hw:2,0,0  Vortex MIDI 1

So I can tell it’s probably an issue with ALSA or further up the chain. To my knowledge, the DIR column should say IO, not just O.

The relevant section of lsusb -v is as follows:

lsusb -v output
Bus 003 Device 007: ID 13b2:0079 Alesis Vortex
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x13b2 Alesis
  idProduct          0x0079 Vortex
  bcdDevice            2.00
  iManufacturer           1 Alesis
  iProduct                2 Vortex
  iSerial                 3 Ver01.20
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0065
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      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              0 
      MIDIStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x003a
      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               2 External
        bJackID                 2
        bNrInputPins            1
        baSourceID( 0)          1
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                 3
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                 4
        bNrInputPins            1
        baSourceID( 0)          3
        BaSourcePin( 0)         1
        iJack                   0 
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (Invalid)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       1
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (Invalid)
          bNumEmbMIDIJack         2
          baAssocJackID( 0)       4
          baAssocJackID( 1)      85
Device Status:     0x0000
  (Bus Powered)

When I plug it into the computer, dmesg produces the following:

[ 1542.854107] usb 3-9.3: new full-speed USB device number 9 using xhci_hcd
[ 1542.962725] usb 3-9.3: New USB device found, idVendor=13b2, idProduct=0079, bcdDevice= 2.00
[ 1542.962738] usb 3-9.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1542.962745] usb 3-9.3: Product: Vortex
[ 1542.962749] usb 3-9.3: Manufacturer: Alesis
[ 1542.962752] usb 3-9.3: SerialNumber: Ver01.20
[ 1542.968372] usb 3-9.3: Quirk or no altest; falling back to MIDI 1.0

I’m not sure what else to look into or what else to try. I’ve tried using a newer kernel, but 6.11 has the same issue and 6.12 can’t even get to the login screen (which is a different issue entirely). Any help or pointers would be appreciated!

UPDATE: I managed to run 6.12 in terminal mode, and running these commands results in the same outputs. So if this is a kernel issue, it’s up to the present.

MIDI 1.0 is unidirectional, while MIDI 2.0 is bidirectional. Means: only input or output, not both.

See here:

In tries to probe, and it seems not to support MIDI 2.0, at least through detection.

I guess you have to deal with these parameters of the module:

$ modinfo  -p snd-usb-audio
midi2_enable:Enable MIDI 2.0 support. (bool)
midi2_ump_probe:Probe UMP v1.1 support at first. (bool)
index:Index value for the USB audio adapter. (array of int)
id:ID string for the USB audio adapter. (array of charp)
enable:Enable USB audio adapter. (array of bool)
vid:Vendor ID for the USB audio device. (array of int)
pid:Product ID for the USB audio device. (array of int)
device_setup:Specific device setup (if needed). (array of int)
ignore_ctl_error:Ignore errors from USB controller for mixer interfaces. (bool)
autoclock:Enable auto-clock selection for UAC2 devices (default: yes). (bool)
lowlatency:Enable low latency playback (default: yes). (bool)
quirk_alias:Quirk aliases, e.g. 0123abcd:5678beef. (array of charp)
delayed_register:Quirk for delayed registration, given by id:iface, e.g. 0123abcd:4. (array of charp)
implicit_fb:Apply generic implicit feedback sync mode. (array of bool)
quirk_flags:Driver quirk bit flags. (array of uint)
use_vmalloc:Use vmalloc for PCM intermediate buffers (default: yes). (bool)
skip_validation:Skip unit descriptor validation (default: no). (bool)

Nothing I’ve tried with that works so far. It’s strange. My Qmini has the same notification about falling back to MIDI 1.0 but it still has input and output. I’ve tried different device setups to see if any of that works. I’ve tried using delayed_register to set it to different quirks. I’ve tried different combinations of enabling and disabling the various bools available. Nothing has made any difference so far except changing the index to 0, which prevents snd_usb_audio from running at all.

Any recommendations for things to try? I’m getting markedly frustrated now that I’m on day 3 of trying to figure this out.