On 08/22/2018 01:49 AM, Clemens Ladisch via Alsa-user wrote:
> Please show the output of "lsusb -v" for your device.
The device also implements an HID interface for driverless firmware
update and control (changing what control maps to what channel etc), so
the descriptor is a touch length. I'm not sure how regular devices do
this sort of control configuration, but HID plus a custom app seemed
reasonable enough to me:
-------------------------------SNIP-------------------------------------
Bus 004 Device 041: ID 16c0:05dc Van Ooijen Technische Informatica
shared ID for use with libusb
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x16c0 Van Ooijen Technische Informatica
idProduct 0x05dc shared ID for use with libusb
bcdDevice 0.10
iManufacturer 1 kevincuzner.com☐
iProduct 2 Midi-Faderr
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0083
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 25
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
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) 2
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
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 0x0023
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) 3
BaSourcePin( 0) 1
iJack 0
MIDIStreaming Interface Descriptor:
bLength 13
bDescriptorType 36
bDescriptorSubtype 4 (ELEMENT)
bElementID 3
bNrInputPins 1
baSourceID( 0) 1
BaSourcePin( 0) 1
bNrOutputPins 1
bInTerminalLink 0
bOutTerminalLink 0
bElCapsSize 1
bmElementCaps 0x00000001
Undefined
iElement 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 (GENERAL)
bNumEmbMIDIJack 1
baAssocJackID( 0) 1
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x84 EP 4 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 (GENERAL)
bNumEmbMIDIJack 1
baAssocJackID( 0) 2
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0000
(Bus Powered)
-------------------------------SNIP-------------------------------------
> Try amidi, which will show even invalid bytes.
When tried this, I found that it still wasn't showing my anything. But,
this turned out to not be an issue. Your next statement fixed my problem:
>
> 07 is not a valid MIDI status byte. The first byte of the USB-MIDI
> Event Packet is not MIDI; the remaining bytes must be valid MIDI. See
> the second example in table 4-2.
>
I can't believe I missed the meaning of that second column in that table
when I was reading the spec. I fixed it so that it outputs valid MIDI
according to the second column (though their examples are awful...it's
too easy to mix up the cable number, channel number, and code index). I
had to fix my cable number to be zero, since it's the 0th cable on that
Jack.
After fixing my MIDI message I tried this with aseqdump and finally saw
stuff!!! I then started rosegarden and saw my control changes coming in
on the channel I intended them to!!! I would say my issue is solved.
Thank you for your prompt and knowledgeable response.
-Kevin
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Alsa-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-user