alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* Zoom R16
@ 2013-11-22 18:12 Jason Mancine
  2013-11-22 20:31 ` Jason Mancine
  2013-11-24 13:03 ` Daniel Mack
  0 siblings, 2 replies; 19+ messages in thread
From: Jason Mancine @ 2013-11-22 18:12 UTC (permalink / raw)
  To: alsa-devel

Hello, I am looking for some assistance in getting the Zoom R16 working for
playback.  Please let me know if this is the right forum for this...

The device is recognized, but I just can't figure out which interface is
which, and how to configure them in quirks-table.h.   Any help would be
appreciated.


To start, the output of lsusb -v for the device is this:
 ---

Bus 001 Device 010: ID 1686:00dd ZOOM Corporation
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0
  bDeviceProtocol       255
  bMaxPacketSize0        64
  idVendor           0x1686 ZOOM Corporation
  idProduct          0x00dd
  bcdDevice            0.02
  iManufacturer           1
  iProduct                2 R16
  iSerial                 3 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          259
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              480mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      0
      iInterface              0
      ** UNRECOGNIZED:  0b 24 01 00 01 35 00 03 01 02 03
      ** UNRECOGNIZED:  0c 24 02 05 01 01 00 02 03 00 00 00
      ** UNRECOGNIZED:  09 24 03 08 01 03 00 05 00
      ** UNRECOGNIZED:  0c 24 02 09 01 02 00 08 00 00 00 00
      ** UNRECOGNIZED:  09 24 03 0c 01 01 00 09 00
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2
      bInterfaceProtocol      0
      iInterface              0
      ** UNRECOGNIZED:  07 24 01 05 01 01 00
      ** UNRECOGNIZED:  14 24 02 01 02 04 18 04 44 ac 00 80 bb 00 88 58 01
00 77 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x006c  1x 108 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2
      bInterfaceProtocol      0
      iInterface              0
      ** UNRECOGNIZED:  07 24 01 0c 01 01 00
      ** UNRECOGNIZED:  14 24 02 01 08 04 18 04 44 ac 00 80 bb 00 88 58 01
00 77 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes           13
          Transfer Type            Isochronous
          Synch Type               Synchronous
          Usage Type               Data
        wMaxPacketSize     0x01a0  1x 416 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      3
      bInterfaceProtocol      0
      iInterface              0
      ** UNRECOGNIZED:  07 24 01 00 01 41 00
      ** UNRECOGNIZED:  06 24 02 01 01 00
      ** UNRECOGNIZED:  06 24 02 02 02 00
      ** UNRECOGNIZED:  09 24 03 01 03 01 02 01 00
      ** UNRECOGNIZED:  09 24 03 02 04 01 01 01 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0
  bDeviceProtocol       255
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

---

This is the quirk that Clemens provided on the linux-audio mail list...the
device is recognized, but no capture/playback:

{
        /* ZOOM R16 in USB 2.0 mode */
        USB_DEVICE(0x1686, 0x00dd),
        .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk)
{
                .ifnum = QUIRK_ANY_INTERFACE,
                .type = QUIRK_COMPOSITE,
                .data = (const struct snd_usb_audio_quirk[]) {
                        {
                                .ifnum = 0,
                                .type = QUIRK_IGNORE_INTERFACE
                        },
                        {
                                .ifnum = 1,
                                .type = QUIRK_AUDIO_STANDARD_INTERFACE
                        },
                        {
                                .ifnum = 2,
                                .type = QUIRK_AUDIO_STANDARD_INTERFACE
                        },
                        {
                                .ifnum = 3,
                                .type = QUIRK_MIDI_STANDARD_INTERFACE
                        },
                        {
                                .ifnum = .1
                        },
                }
        }
},





Now....despite there being no #4 interface in lsusb, if I append the
following to the above quirk I get all 8 channels of capture working.  I am
more confused than ever. :)

      {
            .ifnum = 4,
            .type = QUIRK_AUDIO_FIXED_ENDPOINT,
            .data = & (const struct audioformat) {
               .formats = SNDRV_PCM_FMTBIT_S24_LE,
               .channels = 8,
               .iface = 1,
               .altsetting = 1,
               .altset_idx = 1,
               .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
                .endpoint = 0x84,
                .ep_attr = 13,
                .rates = SNDRV_PCM_RATE_44100 |
                    SNDRV_PCM_RATE_48000 |
                    SNDRV_PCM_RATE_88200 |
                  SNDRV_PCM_RATE_96000,
               .rate_min = 44100,
               .rate_max = 96000,
               .nr_rates = 4,
               .rate_table = (unsigned int[]) {
                     44100, 48000, 88200, 96000
               }
            }
         },


Obviously, this is not the correct solution and I can't make playback work
by adding additional .ifnums.    I am quite certain that interface 1 is
capture and 2 is playback but if I add the same info to either of those
sections my entire system freezes when I plug in the device.

Thanks,
jason

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2014-03-11 15:32 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-22 18:12 Zoom R16 Jason Mancine
2013-11-22 20:31 ` Jason Mancine
2013-11-24 13:03 ` Daniel Mack
     [not found]   ` <CAPrbH=tGph7__rgx-5BsBSi9-E95FpsTL9Yy0zbum0TccTPbyQ@mail.gmail.com>
     [not found]     ` <20131124141803.GC23126@tamtam.fritz.box>
2013-11-26 18:22       ` Jason Mancine
2013-11-28 14:42         ` Jason Mancine
2013-11-28 14:50           ` Jason Mancine
2013-12-06 16:10             ` Jason Mancine
2013-12-06 16:25               ` Takashi Iwai
2013-12-06 17:28                 ` Jason Mancine
2014-03-10 14:36                   ` Jason Mancine
2014-03-10 20:28                     ` Alan Horstmann
2014-03-10 20:44                       ` Jason Mancine
2014-03-11  7:09                         ` Takashi Iwai
2014-03-11  7:59                           ` Jason Mancine
2014-03-11  8:13                             ` Takashi Iwai
2014-03-11 13:34                               ` Jason Mancine
2014-03-11 13:40                                 ` Takashi Iwai
2014-03-11 15:16                                   ` Jason Mancine
2014-03-11 15:32                                     ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).