Hi Clemens,
thanks for responding.
On Sun, May 28, 2017 at 10:16 PM, Clemens Ladisch clemens@ladisch.de wrote:
Hedde Bosman wrote:
I've owned a MIDEX8 for some years now and am now attempting a driver for it. [...] it looks a bit like the standard usb midi class, but it requires some periodic (i guess timer) messages on endpoint 0x02
Why "requires"? What happens if you do not send them?
Without sending those, the midi in does not seem to work.
Not all (interrupt) urbs that are submitted will complete (within 25 ms at least).
And why would that be a problem?
I am not sure about the inner workings of the device. However, it seems to be a timing signal, that might be used to time-stamp midi in packets. I haven't been able to determine the exact impact, but did notice that sometimes the midi-in stops responding. If that is related, I cannot tell.
Sometimes after sending a few messages, an empty urb shows up in wireshark. However, in code, there's an if-statement that should allow only messages of length > 0 to be submitted (line 568, if (num_read > 0)).
Try adding a check before the actual usb_submit_urb() call, but nothing would protect against your code accidentally changing the transfer_buffer_length of an active URB field later.
I will try and report back later.
Might this have to do with issue 1?
Not unless you have mixed up input and output URBs.
afaik I did not. I am looking for better ways to debug though.
Regards, Clemens
Regards, Hedde