On 07/29/2016 09:15 AM, Clemens Ladisch wrote:
> Stefan Sauer wrote:
>> On 07/28/2016 01:27 PM, Clemens Ladisch wrote:
>>> Stefan Sauer wrote:
>>>> Another weir issue is that once the usb connection is established,
>>>> playing the synth from its own knobs and keys is super sluggish (e.g. a
>>>> key release is recognized with a multi-second delay).
>>> Apparently, the firmware waits for the PC to read the MIDI messages.
>>> Which the Linux driver does not do until a MIDI port is actually opened,
>>> in order to save a little bit of power. Oh well, I'll have to change
>>> this back.
>> If you can point me to the change I can locally test if that fixes it.
> The original change was <http://git.kernel.org/linus/f5f165418cab>, but
> it's not possible to simply revert it in the current version.
>
>> Any idea what I could try to figure out why the incomming audio is silent?
> Because the driver does not handle it correctly (it requires the capture
> stream also to be able to synchronize the playback stream, and gets this
> wrong somehow).
Sorry for picking this up more that a year later. When you say "the
driver" do you mean snd-usb-audio? Where should I look for the
synchronisation? Can it be that I am actually getting the data, but the
driver throws it away, becasue the syschronisation is not right?
Maybe lets step back a bit, there are 2 issues: one is the "Unable to
change format on ep #84: already in use" message and the other is
silence in all recordings? Are they related?
Can you point me to the spec that you used to make the roland_quicks
change. Most kernel structs related to usb seem to have not comments and
the field names are not self explaining :)
What I have a trouble with is understanding the whole lsusb -v -d xxx
output. Logically the device has Audio I/O and Midi I/O. From the lsusb
output we see 3 interfaces, but *6* interface_descriptors. 2
interface_descriptions have no endpoints, 2 have one endpoint each and
2 have two endpoints. (see attached lsusb output). 3 are outputs and 3
are inputs:
> sudo lsusb -v -d 0582:0111 | grep -A4 bEndpointAddress
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
--
bEndpointAddress 0x84 EP 4 IN
bmAttributes 37
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Implicit feedback Data
--
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
--
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
--
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
--
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
Is there a way to find out what data types are sent through which of the
endpoints? Or even ways to snoop the data before it is processed as audio?
I know these are a lot of questions, but there are quite a few devices
that are not working here and it would be awesome to make some progress.
If there is a chance to do some live debugging (e.g. via irc), that'd be
great!
Stefan
>
>
> Regards,
> Clemens
Bus 003 Device 013: ID 0582:0111 Roland Corp. GAIA SH-01
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 255
bMaxPacketSize0 64
idVendor 0x0582 Roland Corp.
idProduct 0x0111 GAIA SH-01
bcdDevice 0.01
iManufacturer 1 Roland
iProduct 2 SH-01
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 167
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 2
iInterface 0
** UNRECOGNIZED: 06 24 f1 01 00 00
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 2
iInterface 0
** UNRECOGNIZED: 07 24 01 01 00 01 00
** UNRECOGNIZED: 0b 24 02 01 02 04 18 01 44 ac 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0070 1x 112 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 1
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 1
iInterface 0
** UNRECOGNIZED: 07 24 01 07 00 01 00
** UNRECOGNIZED: 0b 24 02 01 02 04 18 01 44 ac 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 37
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Implicit feedback Data
wMaxPacketSize 0x0070 1x 112 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 3
bInterfaceProtocol 0
iInterface 0
** UNRECOGNIZED: 06 24 f1 02 02 02
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 3
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
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 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 8 Mass Storage
bDeviceSubClass 6 SCSI
bDeviceProtocol 80 Bulk-Only
bMaxPacketSize0 64
bNumConfigurations 0
Device Status: 0x0001
Self Powered
------------------------------------------------------------------------------
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
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user