[alsa-devel] M-Audio transit: illegal sync type and noise on startup?

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Thu Aug 13 06:07:51 CEST 2015


While playing with my M-Audio Transit USB device (0763:2006) I saw a synchronization type that doesn't exist in the USB audio class. I get audio out but often the start is garbled with white noise and cracks. Wondering what's going on.

more /proc/asound/card1/stream0 
M-Audio Transit USB at usb-0000:00:14.0-2, full speed : USB Audio

Playback:
  Status: Stop
  Interface 1
    Altset 1
    Format: S24_3LE
    Channels: 2
    Endpoint: 3 OUT (ADAPTIVE)
    Rates: 48001 - 96000 (continuous)u
  Interface 1
    Altset 2
    Format: S24_3LE
    Channels: 2
    Endpoint: 3 OUT (NONE)  <<<<<<< illegal
    Rates: 8000 - 48000 (continuous)
  Interface 1
    Altset 3
    Format: S16_LE
    Channels: 2
    Endpoint: 3 OUT (ASYNC)
    Rates: 8000 - 48000 (continuous)

The only definitions in the spec are Asynchronous, Adaptive or Synchronous...

lsusb tells me that there seems to be a synch endpoint for this setting:
     
  Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0126  1x 294 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress         131
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         1 Milliseconds
          wLockDelay            100 Milliseconds
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN 
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0003  1x 3 bytes
        bInterval               1
        bRefresh                2
        bSynchAddress           0
    


I couldn't figure out what the code does in this case. I didn't find any sync URBs being retired so wondering if this is considered as a synchronous or asynchronous endpoint based on the additional sync endpoint? Any idea on how to debug further? It looks like there could be a second error in the descriptors: if this is a synchronous endpoint then the sync endpoint is meaningless, and if it is asynchronous then the information on locking time is irrelevant...

Regarding the noise on startup, should a delay be inserted after the mode is set? the spec recommends that the host sends silence periods for adaptive and synchronous modes. I see a set of mdelays being added in the quirks, should a new one be added?


Thanks for any pointers,
-Pierre





More information about the Alsa-devel mailing list