[alsa-devel] USB Quirks for Boss JS-8
Hi, I'm looking at developing a quirk for the Boss JS-8. The lsusb is as follows:
Bus 001 Device 003: ID 0582:0109 Roland Corp. 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 0x0109 bcdDevice 0.01 iManufacturer 1 BOSS iProduct 2 JS-8 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 (Zip) bMaxPacketSize0 64 bNumConfigurations 0 Device Status: 0x0001 Self Powered
I wasn't entirely sure about the quirk syntax as the two interfaces are at EP 4 and EP5. Does this mean I need to ignore the (non-existant) lower interfaces? Here's what I came up with:
{ /* Boss JS-8 Jam Station */ USB_DEVICE(0x0582, 0x0109), .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { /* .vendor_name = "BOSS", */ /* .product_name = "JS-8", */ .ifnum = QUIRK_ANY_INTERFACE, .type = QUIRK_COMPOSITE, .data = (const struct snd_usb_audio_quirk[]) { { .ifnum = 0, .type = QUIRK_IGNORE_INTERFACE }, { .ifnum = 1, .type = QUIRK_IGNORE_INTERFACE }, { .ifnum = 2, .type = QUIRK_IGNORE_INTERFACE }, { .ifnum = 3, .type = QUIRK_IGNORE_INTERFACE }, { .ifnum = 4, .type = QUIRK_AUDIO_STANDARD_INTERFACE }, { .ifnum = 5, .type = QUIRK_AUDIO_STANDARD_INTERFACE }, { .ifnum = -1 } } } },
regards,
On Fri, Mar 18, 2011 at 6:56 PM, Keith A. Milner maillist@superlative.org wrote:
Hi, I'm looking at developing a quirk for the Boss JS-8. The lsusb is as follows:
[...]
I wasn't entirely sure about the quirk syntax as the two interfaces are at EP 4 and EP5. Does this mean I need to ignore the (non-existant) lower interfaces? Here's what I came up with:
{ /* Boss JS-8 Jam Station */ USB_DEVICE(0x0582, 0x0109),
Does this quirk help anything? I'm just asking because looking at the descriptors,it's not clear whether this device does comply to any standard interfaces at all. Could be the vendor just hides the compliancy, but they might have implemented a proprietary protocol as well.
Daniel
On Monday 21 Mar 2011 07:54:13 Daniel Mack wrote:
On Fri, Mar 18, 2011 at 6:56 PM, Keith A. Milner
{ /* Boss JS-8 Jam Station */ USB_DEVICE(0x0582, 0x0109),
Does this quirk help anything? I'm just asking because looking at the descriptors,it's not clear whether this device does comply to any standard interfaces at all. Could be the vendor just hides the compliancy, but they might have implemented a proprietary protocol as well.
It's supposed to be a 2-in/2-out audio interface. At least that's what it shows up with on Windows. The Windows driver README contains the following:
"Of the total audio input/output channels provided by the JS-8, there are 2 INs and 2 OUTs
[WAVE OUT Devices] OUT (JS-8)
[WAVE IN Devices] IN (JS-8)
[ASIO device] When using the JS-8 with an ASIO-compatible application such as Cubase, select "JS-8" as the ASIO setting for your application. * To prevent an audio feedback loop or double monitoring, make settings on your application to turn monitoring off or use ASIO Direct Monitoring. * The JS-8 does not actually support ASIO Direct Monitoring. For greater ease of use, support is simulated. * When using the JS-8 with ASIO, we recommend that you set your application so that it does not use the Microsoft GS Wavetable SW Synth. (In order to decrease the load, and for convenience when changing Audio Buffer Size of the driver.)"
It could well be proprietary, but it's a Roland device and my understanding is it's not uncommon for Roland to hide standard usb-audio interfaces behind non- standard identifiers.
I have USB Device Monitoring Studio on my Windows laptop so I can dig further, although I'm not entirely sure what I should be looking for.
Cheers,
Daniel Mack wrote:
On Fri, Mar 18, 2011 at 6:56 PM, Keith A. Milner maillist@superlative.org wrote:
Hi, I'm looking at developing a quirk for the Boss JS-8. The lsusb is as follows:
[...]
I wasn't entirely sure about the quirk syntax as the two interfaces are at EP 4 and EP5. Does this mean I need to ignore the (non-existant) lower interfaces? Here's what I came up with:
Does this quirk help anything?
Certainly not; endpoint numbers are not interface numbers. Try with audio interfaces 0 and 1 and MIDI interface 2.
I'm just asking because looking at the descriptors,it's not clear whether this device does comply to any standard interfaces at all.
Many Roland devices work this way. (And I'd expect any USB audio developer to instantly recognize descriptors like "0b 24 02 01 02 04 18 01 44 ac 00". ;-)
Regards, Clemens
On Monday 21 Mar 2011 13:32:50 Clemens Ladisch wrote:
Daniel Mack wrote:
On Fri, Mar 18, 2011 at 6:56 PM, Keith A. Milner
I wasn't entirely sure about the quirk syntax as the two interfaces are at EP 4 and EP5. Does this mean I need to ignore the (non-existant) lower
interfaces? Here's what I came up with:
Does this quirk help anything?
Certainly not; endpoint numbers are not interface numbers. Try with audio interfaces 0 and 1 and MIDI interface 2.
Excellent. I will give this a try and see how it goes. I wasn't actually aware it had MIDI. I guess this may be used for some sort of control function, or maybe it's in the hardware but not supported in the devices firmware.
I'm just asking because looking at the descriptors,it's not clear whether this device does comply to any standard interfaces at all.
Many Roland devices work this way. (And I'd expect any USB audio developer to instantly recognize descriptors like "0b 24 02 01 02 04 18 01 44 ac 00". ;-)
I have to profess my ignorance here.
Thanks for you help. I will report back on how I get on.
On Monday 21 Mar 2011 13:32:50 Clemens Ladisch wrote: Try with
audio interfaces 0 and 1 and MIDI interface 2.
Well, that was remarkably easy! I tried with these settings and it seems to work very well.
At first try (using Ardour with Jack) both input and output work. Many thanks for your help on this.
I'll test it a bit more and then work out out to submit as a patch.
Cheers,
Hi,
I am not able to hear any sounds in my JS-8 connected to my Fedora 17,
The device is recognised by the system, but no sound can be played, I've tried with jack too, but no luck, Can you please tell me if jackd needs any special parameters in order to run with JS-8?
Best regards, Adolfo
On 14.10.2012 21:43, Adolfo wrote:
I am not able to hear any sounds in my JS-8 connected to my Fedora 17,
The device is recognised by the system, but no sound can be played, I've tried with jack too, but no luck, Can you please tell me if jackd needs any special parameters in order to run with JS-8?
You might have hit a bug here that I introduced during a refactoring of the driver. Unfortunately, I can't reproduce that with any of the multiple USB audio devices I have at hand, but someone from the alsa-user ML offered me to send over his device that also show this problem, so I can have a look. Stay tuned please, and my apologies for the trouble.
Meanwhile, you could check whether any of the kernels between 2.6.39 -> 3.4 works for you - they all have the quirk for the JS-8.
Thanks, Daniel
Thanks for your response,
If I can help you in testing the fix please let me know
Regards, Adolfo
2012/10/16 Daniel Mack zonque@gmail.com
On 14.10.2012 21:43, Adolfo wrote:
I am not able to hear any sounds in my JS-8 connected to my Fedora 17,
The device is recognised by the system, but no sound can be played, I've tried with jack too, but no luck, Can you please tell me if jackd needs any special parameters in order to
run
with JS-8?
You might have hit a bug here that I introduced during a refactoring of the driver. Unfortunately, I can't reproduce that with any of the multiple USB audio devices I have at hand, but someone from the alsa-user ML offered me to send over his device that also show this problem, so I can have a look. Stay tuned please, and my apologies for the trouble.
Meanwhile, you could check whether any of the kernels between 2.6.39 -> 3.4 works for you - they all have the quirk for the JS-8.
Thanks, Daniel
On Tuesday 16 Oct 2012 09:47:28 Daniel Mack wrote:
On 14.10.2012 21:43, Adolfo wrote:
I am not able to hear any sounds in my JS-8 connected to my Fedora 17,
The device is recognised by the system, but no sound can be played, I've tried with jack too, but no luck, Can you please tell me if jackd needs any special parameters in order to run with JS-8?
You might have hit a bug here that I introduced during a refactoring of the driver. Unfortunately, I can't reproduce that with any of the multiple USB audio devices I have at hand, but someone from the alsa-user ML offered me to send over his device that also show this problem, so I can have a look. Stay tuned please, and my apologies for the trouble.
Meanwhile, you could check whether any of the kernels between 2.6.39 -> 3.4 works for you - they all have the quirk for the JS-8.
If it's any help, I'm running Linux Mint 13 with a 3.2.0-34 kernel and it's working for me. I do get the following in dmesg:
[47696.764621] usb 1-6.2: new high-speed USB device number 12 using ehci_hcd [47696.858892] MIDIStreaming interface descriptor not found [47696.859099] init_device failed: MIDI 4-0: seq-midi
This is due to an error in the original quirk I submitted which was brought to light when some changes were made to the USB driver. I will try to tidy it up sometime.
Cheers,
Keith
participants (5)
-
Adolfo
-
Adolfo Ranea
-
Clemens Ladisch
-
Daniel Mack
-
Keith A. Milner