All of lore.kernel.org
 help / color / mirror / Atom feed
* [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast
@ 2026-07-08 16:33 Salvador Blaya
  2026-07-08 22:28 ` Jussi Laako
  0 siblings, 1 reply; 8+ messages in thread
From: Salvador Blaya @ 2026-07-08 16:33 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai, jussi, regressions

[-- Attachment #1: Type: text/plain, Size: 3024 bytes --]

To: alsa-devel@alsa-project.org
Cc: tiwai@suse.de, jussi@sonarnerd.net, regressions@lists.linux.dev
Subject: [REGRESSION] snd-usb-audio: commit da3a7ef ("ALSA: usb-audio:
 Update for native DSD support quirks") breaks DSD playback on Musical
 Fidelity M6s DAC (2772:0502), plays ~8.8% fast

Hi,

Commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support
quirks") added VENDOR_FLG(0x2772) with QUIRK_FLAG_DSD_RAW for Musical
Fidelity devices. This vendor-wide match also catches the (older,
discontinued) Musical Fidelity M6s DAC, USB ID 2772:0502, which exposes
a UAC2 altsetting with bmFormats 0x80000000 (RAW_DATA, 32-bit) but
whose firmware cannot actually clock DSD playback correctly in any
mode. As a result, since this commit, applications like MPD prefer the
newly offered native DSD over DSD-to-PCM conversion and playback is
audibly broken (runs ~8.8% fast, raised pitch), where kernels without
the commit (e.g. 6.12.x) play correctly.

Could 2772:0502 be excluded from the vendor flag (or the vendor flag
be narrowed to the specific products that support native DSD, such as
the newer M6x DAC)?

Evidence gathered on Debian trixie, MPD, direct hw: access, no
resampling:

1) Native DSD (observed on 7.0.7 through 7.0.12): host side is correct
   - hw_params shows format DSD_U32_BE, rate 88200 (correct for DSD64)
   - but playback runs ~8.8% fast with raised pitch. A 4:41 track
   finishes in ~4:15, matching a 48 kHz-family clock (3.072 MHz)
   applied to a 2.8224 MHz DSD64 stream (ratio 1.0884).

2) DoP (6.12.9, MPD dop=yes): host side again correct - hw_params
   shows S32_LE, rate 176400 - same ~8.8% fast playback. So the DAC's
   internal DSD decoding path is misclocked regardless of transport.

3) Control test: the same DSD64 track converted to PCM FLAC at
   176400 Hz plays at correct speed/pitch through the exact same path
   (S32_LE @ 176400). The 44.1 kHz rate family is fine for PCM; only
   DSD decoding inside the DAC is broken. This rules out any host-side
   rate issue.

4) The same fault has long been reported for this DAC on Windows 10
   with the official ASIO driver ("DSD via DoP plays noticeably
   faster"):
   https://community.roonlabs.com/t/musical-fidelity-m6-sdac-dsd-issues/39450
   including a follow-up for the successor model (M6sR). This is an
   OS-independent firmware defect that the manufacturer never fixed,
   which is presumably why this model was specified as DoP-only.

Working configuration for reference (correct playback): MPD with
dop "no", MPD's dsd2pcm conversion to 352800 Hz - i.e. the behaviour
kernels without the commit provide by default for this device.

Since these quirk updates tend to be backported to stable/LTS trees,
please consider the fix for stable as well, so that currently working
LTS kernels (e.g. 6.12.y) don't regress.

Full lsusb -v output attached. Happy to test patches.

#regzbot introduced: da3a7efff64ec0d63af4499eea3a46a2e13b5797

Please CC me on replies, I'm not subscribed to the list.

Best regards,

S. Blaya

[-- Attachment #2: m6sdac-lsusb.txt --]
[-- Type: text/plain, Size: 25864 bytes --]


Bus 001 Device 002: ID 2772:0502 Musical Fidelity Musical Fidelity M6sDAC
Negotiated speed: High Speed (480Mbps)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 [unknown]
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x2772 Musical Fidelity
  idProduct          0x0502 Musical Fidelity M6sDAC
  bcdDevice            1.10
  iManufacturer           1 Musical Fidelity
  iProduct                3 Musical Fidelity M6sDAC
  iSerial                 0 
  bNumConfigurations      2
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0135
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass          1 Audio
      bFunctionSubClass       0 [unknown]
      bFunctionProtocol      32 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol     32 
      iInterface              3 Musical Fidelity M6sDAC
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               2.00
        bCategory               8
        wTotalLength       0x0048
        bmControls           0x00
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               41
        bmAttributes            3 Internal programmable clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource           14 XMOS Internal Clock
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     11 (CLOCK_SELECTOR)
        bClockID               40
        bNrInPins               1
        baCSourceID(0)         41
        bmControls           0x03
          Clock Selector Control (read/write)
        iClockSelector         13 XMOS Clock Selector
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bCSourceID             40
        bNrChannels             2
        bmChannelConfig    0x00000000
        iChannelNames          16 Analogue 1/SPDIF 1
        bmControls         0x0000
        iTerminal               6 Musical Fidelity M6sDAC
      AudioControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID               2
        bmaControls(0)     0x0000000f
          Mute Control (read/write)
          Volume Control (read/write)
        bmaControls(1)     0x0000000f
          Mute Control (read/write)
          Volume Control (read/write)
        bmaControls(2)     0x0000000f
          Mute Control (read/write)
          Volume Control (read/write)
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            20
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID              10
        bCSourceID             40
        bmControls         0x0000
        iTerminal               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Musical Fidelity M6sDAC
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Musical Fidelity M6sDAC
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             2
        bmChannelConfig    0x00000000
        iChannelNames          16 Analogue 1/SPDIF 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0188  1x 392 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Musical Fidelity M6sDAC
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             2
        bmChannelConfig    0x00000000
        iChannelNames          16 Analogue 1/SPDIF 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            2
        bBitResolution         16
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x00c4  1x 196 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Musical Fidelity M6sDAC
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x80000000
        bNrChannels             2
        bmChannelConfig    0x00000000
        iChannelNames          16 Analogue 1/SPDIF 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         32
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0188  1x 392 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      1 
      iInterface             15 XMOS DFU
      Device Firmware Upgrade Interface Descriptor:
        bLength                             9
        bDescriptorType                    33
        bmAttributes                        7
          Will Not Detach
          Manifestation Tolerant
          Upload Supported
          Download Supported
        wDetachTimeout                    250 milliseconds
        wTransferSize                      64 bytes
        bcdDFUVersion                   1.10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 (null)
          wDescriptorLength      33
          Report Descriptors: 
            ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               8
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0135
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass          1 Audio
      bFunctionSubClass       0 [unknown]
      bFunctionProtocol      32 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol     32 
      iInterface              3 Musical Fidelity M6sDAC
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               2.00
        bCategory               8
        wTotalLength       0x0048
        bmControls           0x00
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               41
        bmAttributes            3 Internal programmable clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource           14 XMOS Internal Clock
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     11 (CLOCK_SELECTOR)
        bClockID               40
        bNrInPins               1
        baCSourceID(0)         41
        bmControls           0x03
          Clock Selector Control (read/write)
        iClockSelector         13 XMOS Clock Selector
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bCSourceID             40
        bNrChannels             2
        bmChannelConfig    0x00000000
        iChannelNames          16 Analogue 1/SPDIF 1
        bmControls         0x0000
        iTerminal               6 Musical Fidelity M6sDAC
      AudioControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID               2
        bmaControls(0)     0x0000000f
          Mute Control (read/write)
          Volume Control (read/write)
        bmaControls(1)     0x0000000f
          Mute Control (read/write)
          Volume Control (read/write)
        bmaControls(2)     0x0000000f
          Mute Control (read/write)
          Volume Control (read/write)
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            20
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID              10
        bCSourceID             40
        bmControls         0x0000
        iTerminal               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Musical Fidelity M6sDAC
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Musical Fidelity M6sDAC
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             2
        bmChannelConfig    0x00000000
        iChannelNames          16 Analogue 1/SPDIF 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0188  1x 392 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Musical Fidelity M6sDAC
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             2
        bmChannelConfig    0x00000000
        iChannelNames          16 Analogue 1/SPDIF 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            2
        bBitResolution         16
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x00c4  1x 196 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Musical Fidelity M6sDAC
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x80000000
        bNrChannels             2
        bmChannelConfig    0x00000000
        iChannelNames          16 Analogue 1/SPDIF 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         32
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0188  1x 392 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      1 
      iInterface             15 XMOS DFU
      Device Firmware Upgrade Interface Descriptor:
        bLength                             9
        bDescriptorType                    33
        bmAttributes                        7
          Will Not Detach
          Manifestation Tolerant
          Upload Supported
          Download Supported
        wDetachTimeout                    250 milliseconds
        wTransferSize                      64 bytes
        bcdDFUVersion                   1.10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 (null)
          wDescriptorLength      33
          Report Descriptors: 
            ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               8
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 [unknown]
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  bNumConfigurations      2
Device Status:     0x0001
  Self Powered

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

* Re: [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast
  2026-07-08 16:33 [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast Salvador Blaya
@ 2026-07-08 22:28 ` Jussi Laako
  2026-07-09  7:10   ` Salvador Blaya
  2026-07-09  7:33   ` Takashi Iwai
  0 siblings, 2 replies; 8+ messages in thread
From: Jussi Laako @ 2026-07-08 22:28 UTC (permalink / raw)
  To: Salvador Blaya; +Cc: alsa-devel, tiwai, regressions

Hi,

I don’t think we currently have exclusion method for devices with buggy firmware, which claim to support native DSD, but do it incorrectly. And reverting with device specific white-listing is not a good approach for future maintenance. Having to device-specific white-list each new device appearing on the market from the manufacturer just because some old device is broken is not really a sustainable model.

So I would just suggest using PCM with the device if it’s DSD implementation is buggy/broken, while it claims to have such. Or alternatively update the firmware with a fixed one.

Newer MuFi devices work fine though, like for example the M3x DAC I have for testing this, and the M6x you mention.

Additional challenge is that many manufacturers use the same USB interface implementation with same VID:PID on multiple different products. So it is not even necessarily possible to distinguish a particular problematic product.


Best regards,

	- Jussi


> On 8. Jul 2026, at 19.33, Salvador Blaya <tiniebla6@gmail.com> wrote:
> 
> To: alsa-devel@alsa-project.org
> Cc: tiwai@suse.de, jussi@sonarnerd.net, regressions@lists.linux.dev
> Subject: [REGRESSION] snd-usb-audio: commit da3a7ef ("ALSA: usb-audio:
> Update for native DSD support quirks") breaks DSD playback on Musical
> Fidelity M6s DAC (2772:0502), plays ~8.8% fast
> 
> Hi,
> 
> Commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support
> quirks") added VENDOR_FLG(0x2772) with QUIRK_FLAG_DSD_RAW for Musical
> Fidelity devices. This vendor-wide match also catches the (older,
> discontinued) Musical Fidelity M6s DAC, USB ID 2772:0502, which exposes
> a UAC2 altsetting with bmFormats 0x80000000 (RAW_DATA, 32-bit) but
> whose firmware cannot actually clock DSD playback correctly in any
> mode. As a result, since this commit, applications like MPD prefer the
> newly offered native DSD over DSD-to-PCM conversion and playback is
> audibly broken (runs ~8.8% fast, raised pitch), where kernels without
> the commit (e.g. 6.12.x) play correctly.
> 
> Could 2772:0502 be excluded from the vendor flag (or the vendor flag
> be narrowed to the specific products that support native DSD, such as
> the newer M6x DAC)?
> 
> Evidence gathered on Debian trixie, MPD, direct hw: access, no
> resampling:
> 
> 1) Native DSD (observed on 7.0.7 through 7.0.12): host side is correct
>   - hw_params shows format DSD_U32_BE, rate 88200 (correct for DSD64)
>   - but playback runs ~8.8% fast with raised pitch. A 4:41 track
>   finishes in ~4:15, matching a 48 kHz-family clock (3.072 MHz)
>   applied to a 2.8224 MHz DSD64 stream (ratio 1.0884).
> 
> 2) DoP (6.12.9, MPD dop=yes): host side again correct - hw_params
>   shows S32_LE, rate 176400 - same ~8.8% fast playback. So the DAC's
>   internal DSD decoding path is misclocked regardless of transport.
> 
> 3) Control test: the same DSD64 track converted to PCM FLAC at
>   176400 Hz plays at correct speed/pitch through the exact same path
>   (S32_LE @ 176400). The 44.1 kHz rate family is fine for PCM; only
>   DSD decoding inside the DAC is broken. This rules out any host-side
>   rate issue.
> 
> 4) The same fault has long been reported for this DAC on Windows 10
>   with the official ASIO driver ("DSD via DoP plays noticeably
>   faster"):
>   https://community.roonlabs.com/t/musical-fidelity-m6-sdac-dsd-issues/39450
>   including a follow-up for the successor model (M6sR). This is an
>   OS-independent firmware defect that the manufacturer never fixed,
>   which is presumably why this model was specified as DoP-only.
> 
> Working configuration for reference (correct playback): MPD with
> dop "no", MPD's dsd2pcm conversion to 352800 Hz - i.e. the behaviour
> kernels without the commit provide by default for this device.
> 
> Since these quirk updates tend to be backported to stable/LTS trees,
> please consider the fix for stable as well, so that currently working
> LTS kernels (e.g. 6.12.y) don't regress.
> 
> Full lsusb -v output attached. Happy to test patches.
> 
> #regzbot introduced: da3a7efff64ec0d63af4499eea3a46a2e13b5797
> 
> Please CC me on replies, I'm not subscribed to the list.
> 
> Best regards,
> 
> S. Blaya
> <m6sdac-lsusb.txt>


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

* Re: [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast
  2026-07-08 22:28 ` Jussi Laako
@ 2026-07-09  7:10   ` Salvador Blaya
  2026-07-09  7:33   ` Takashi Iwai
  1 sibling, 0 replies; 8+ messages in thread
From: Salvador Blaya @ 2026-07-09  7:10 UTC (permalink / raw)
  To: Jussi Laako; +Cc: alsa-devel, tiwai, regressions

Hi Jussi,

Thanks for the explanation - that's fair enough, understood. Since the
defect is in the device firmware and affects every OS, I agree the
right place to pursue a real fix is the manufacturer, which I'm doing
separately.

For the record, and for any other M6s DAC owner finding this thread:
the device plays DSD correctly only via DSD-to-PCM conversion. With
MPD this can be enforced regardless of kernel version by omitting dsd
entries from allowed_formats, e.g.:

audio_output {
    type            "alsa"
    device          "hw:CARD=M6sDAC,DEV=0"
    mixer_type      "none"
    dop             "no"
    allowed_formats "352800:32:2 176400:32:2 96000:32:2 88200:32:2
48000:32:2 44100:32:2"
}

This restores the pre-7.0.7 behaviour (dsd2pcm at 352.8 kHz), which
plays correctly.

Consider this report resolved as "device firmware defect, workaround
documented". Thanks again for your time.

#regzbot resolve: device firmware defect, not a kernel bug

Best regards

Salvador

El jue, 9 jul 2026 a las 0:28, Jussi Laako (<jussi@sonarnerd.net>) escribió:
>
> Hi,
>
> I don’t think we currently have exclusion method for devices with buggy firmware, which claim to support native DSD, but do it incorrectly. And reverting with device specific white-listing is not a good approach for future maintenance. Having to device-specific white-list each new device appearing on the market from the manufacturer just because some old device is broken is not really a sustainable model.
>
> So I would just suggest using PCM with the device if it’s DSD implementation is buggy/broken, while it claims to have such. Or alternatively update the firmware with a fixed one.
>
> Newer MuFi devices work fine though, like for example the M3x DAC I have for testing this, and the M6x you mention.
>
> Additional challenge is that many manufacturers use the same USB interface implementation with same VID:PID on multiple different products. So it is not even necessarily possible to distinguish a particular problematic product.
>
>
> Best regards,
>
>         - Jussi
>
>
> > On 8. Jul 2026, at 19.33, Salvador Blaya <tiniebla6@gmail.com> wrote:
> >
> > To: alsa-devel@alsa-project.org
> > Cc: tiwai@suse.de, jussi@sonarnerd.net, regressions@lists.linux.dev
> > Subject: [REGRESSION] snd-usb-audio: commit da3a7ef ("ALSA: usb-audio:
> > Update for native DSD support quirks") breaks DSD playback on Musical
> > Fidelity M6s DAC (2772:0502), plays ~8.8% fast
> >
> > Hi,
> >
> > Commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support
> > quirks") added VENDOR_FLG(0x2772) with QUIRK_FLAG_DSD_RAW for Musical
> > Fidelity devices. This vendor-wide match also catches the (older,
> > discontinued) Musical Fidelity M6s DAC, USB ID 2772:0502, which exposes
> > a UAC2 altsetting with bmFormats 0x80000000 (RAW_DATA, 32-bit) but
> > whose firmware cannot actually clock DSD playback correctly in any
> > mode. As a result, since this commit, applications like MPD prefer the
> > newly offered native DSD over DSD-to-PCM conversion and playback is
> > audibly broken (runs ~8.8% fast, raised pitch), where kernels without
> > the commit (e.g. 6.12.x) play correctly.
> >
> > Could 2772:0502 be excluded from the vendor flag (or the vendor flag
> > be narrowed to the specific products that support native DSD, such as
> > the newer M6x DAC)?
> >
> > Evidence gathered on Debian trixie, MPD, direct hw: access, no
> > resampling:
> >
> > 1) Native DSD (observed on 7.0.7 through 7.0.12): host side is correct
> >   - hw_params shows format DSD_U32_BE, rate 88200 (correct for DSD64)
> >   - but playback runs ~8.8% fast with raised pitch. A 4:41 track
> >   finishes in ~4:15, matching a 48 kHz-family clock (3.072 MHz)
> >   applied to a 2.8224 MHz DSD64 stream (ratio 1.0884).
> >
> > 2) DoP (6.12.9, MPD dop=yes): host side again correct - hw_params
> >   shows S32_LE, rate 176400 - same ~8.8% fast playback. So the DAC's
> >   internal DSD decoding path is misclocked regardless of transport.
> >
> > 3) Control test: the same DSD64 track converted to PCM FLAC at
> >   176400 Hz plays at correct speed/pitch through the exact same path
> >   (S32_LE @ 176400). The 44.1 kHz rate family is fine for PCM; only
> >   DSD decoding inside the DAC is broken. This rules out any host-side
> >   rate issue.
> >
> > 4) The same fault has long been reported for this DAC on Windows 10
> >   with the official ASIO driver ("DSD via DoP plays noticeably
> >   faster"):
> >   https://community.roonlabs.com/t/musical-fidelity-m6-sdac-dsd-issues/39450
> >   including a follow-up for the successor model (M6sR). This is an
> >   OS-independent firmware defect that the manufacturer never fixed,
> >   which is presumably why this model was specified as DoP-only.
> >
> > Working configuration for reference (correct playback): MPD with
> > dop "no", MPD's dsd2pcm conversion to 352800 Hz - i.e. the behaviour
> > kernels without the commit provide by default for this device.
> >
> > Since these quirk updates tend to be backported to stable/LTS trees,
> > please consider the fix for stable as well, so that currently working
> > LTS kernels (e.g. 6.12.y) don't regress.
> >
> > Full lsusb -v output attached. Happy to test patches.
> >
> > #regzbot introduced: da3a7efff64ec0d63af4499eea3a46a2e13b5797
> >
> > Please CC me on replies, I'm not subscribed to the list.
> >
> > Best regards,
> >
> > S. Blaya
> > <m6sdac-lsusb.txt>
>

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

* Re: [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast
  2026-07-08 22:28 ` Jussi Laako
  2026-07-09  7:10   ` Salvador Blaya
@ 2026-07-09  7:33   ` Takashi Iwai
  2026-07-09  7:54     ` Salvador Blaya
  2026-07-09  8:34     ` Jussi Laako
  1 sibling, 2 replies; 8+ messages in thread
From: Takashi Iwai @ 2026-07-09  7:33 UTC (permalink / raw)
  To: Jussi Laako; +Cc: Salvador Blaya, alsa-devel, regressions

On Thu, 09 Jul 2026 00:28:00 +0200,
Jussi Laako wrote:
> 
> Hi,
> 
> I don’t think we currently have exclusion method for devices with buggy firmware, which claim to support native DSD, but do it incorrectly. And reverting with device specific white-listing is not a good approach for future maintenance. Having to device-specific white-list each new device appearing on the market from the manufacturer just because some old device is broken is not really a sustainable model.

While I fully agree that white-listing all needed devices won't scale,
blacklisting the broken device might work.  We can an empty quirk
entry for 2772:0502 for skipping the vendor match, something like
below, as an ad hoc fix.

Though, this blindly assumes that there aren't so many broken devices,
and there will be no firmware fix or another model that works with the
same ID.  If a model is relatively new and/or the vendor often updates
the firmware, such an entry can be risky, too.


thanks,

Takashi

-- 8< --
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -2463,6 +2463,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
 		   QUIRK_FLAG_DSD_RAW),
 	DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
 		   QUIRK_FLAG_IGNORE_CTL_ERROR),
+	DEVICE_FLG(0x2772, 0x0502, /* Musical Fidelity M6s DAC */
+		   0), /* for avoiding QUIRK_FLAG_DSD_RAW with vendor match */
 	DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */
 		   QUIRK_FLAG_GET_SAMPLE_RATE),
 	DEVICE_FLG(0x2a70, 0x1881, /* OnePlus Technology (Shenzhen) Co., Ltd. BE02T */

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

* Re: [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast
  2026-07-09  7:33   ` Takashi Iwai
@ 2026-07-09  7:54     ` Salvador Blaya
  2026-07-09  8:29       ` Jussi Laako
  2026-07-09  8:34     ` Jussi Laako
  1 sibling, 1 reply; 8+ messages in thread
From: Salvador Blaya @ 2026-07-09  7:54 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Jussi Laako, alsa-devel, regressions

Hi Takashi,

Thank you - that approach would fit this case well, and the risks you
mention are fortunately minimal here:

- The M6s DAC has been discontinued for years and the defect was first
  reported to the vendor (via their Windows ASIO driver users) back in
  2018, with no firmware fix ever published. I have an inquiry open
  with Musical Fidelity about firmware and will report back if
  anything changes.

- The only other model possibly sharing this ID, the M6sR successor,
  exhibits the same defect per the Roon thread in my original report,
  so an empty entry for 2772:0502 cannot break a working device. The
  current MF models known to work with native DSD (M3x, M6x) already
  worked before the vendor flag was added, so they use different IDs.

I'm happy to test the patch on my unit - both that native DSD is no
longer offered (MPD falling back to dsd2pcm as on 6.12.y) and that
normal PCM playback is unaffected. Just let me know.

Best regards,

Salvador

El jue, 9 jul 2026 a las 9:33, Takashi Iwai (<tiwai@suse.de>) escribió:
>
> On Thu, 09 Jul 2026 00:28:00 +0200,
> Jussi Laako wrote:
> >
> > Hi,
> >
> > I don’t think we currently have exclusion method for devices with buggy firmware, which claim to support native DSD, but do it incorrectly. And reverting with device specific white-listing is not a good approach for future maintenance. Having to device-specific white-list each new device appearing on the market from the manufacturer just because some old device is broken is not really a sustainable model.
>
> While I fully agree that white-listing all needed devices won't scale,
> blacklisting the broken device might work.  We can an empty quirk
> entry for 2772:0502 for skipping the vendor match, something like
> below, as an ad hoc fix.
>
> Though, this blindly assumes that there aren't so many broken devices,
> and there will be no firmware fix or another model that works with the
> same ID.  If a model is relatively new and/or the vendor often updates
> the firmware, such an entry can be risky, too.
>
>
> thanks,
>
> Takashi
>
> -- 8< --
> --- a/sound/usb/quirks.c
> +++ b/sound/usb/quirks.c
> @@ -2463,6 +2463,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
>                    QUIRK_FLAG_DSD_RAW),
>         DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
>                    QUIRK_FLAG_IGNORE_CTL_ERROR),
> +       DEVICE_FLG(0x2772, 0x0502, /* Musical Fidelity M6s DAC */
> +                  0), /* for avoiding QUIRK_FLAG_DSD_RAW with vendor match */
>         DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */
>                    QUIRK_FLAG_GET_SAMPLE_RATE),
>         DEVICE_FLG(0x2a70, 0x1881, /* OnePlus Technology (Shenzhen) Co., Ltd. BE02T */

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

* Re: [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast
  2026-07-09  7:54     ` Salvador Blaya
@ 2026-07-09  8:29       ` Jussi Laako
  0 siblings, 0 replies; 8+ messages in thread
From: Jussi Laako @ 2026-07-09  8:29 UTC (permalink / raw)
  To: Salvador Blaya; +Cc: Takashi Iwai, alsa-devel, regressions

Hi Salvador,

No, native DSD with the M3x and M6x for example didn’t work before I added the vendor flag. That is precisely why I added it.

By the way, you can also just convert everything to 48k-base DSD during playback and then the playback speed is correct. It is common that DACs play 48k-base DSD with 44.1k-base clock (or just go silent or play noise), but in this case it seems to be another way around.


Best regards,

	- Jussi


> On 9. Jul 2026, at 10.54, Salvador Blaya <tiniebla6@gmail.com> wrote:
> 
> Hi Takashi,
> 
> Thank you - that approach would fit this case well, and the risks you
> mention are fortunately minimal here:
> 
> - The M6s DAC has been discontinued for years and the defect was first
>  reported to the vendor (via their Windows ASIO driver users) back in
>  2018, with no firmware fix ever published. I have an inquiry open
>  with Musical Fidelity about firmware and will report back if
>  anything changes.
> 
> - The only other model possibly sharing this ID, the M6sR successor,
>  exhibits the same defect per the Roon thread in my original report,
>  so an empty entry for 2772:0502 cannot break a working device. The
>  current MF models known to work with native DSD (M3x, M6x) already
>  worked before the vendor flag was added, so they use different IDs.
> 
> I'm happy to test the patch on my unit - both that native DSD is no
> longer offered (MPD falling back to dsd2pcm as on 6.12.y) and that
> normal PCM playback is unaffected. Just let me know.
> 
> Best regards,
> 
> Salvador
> 
> El jue, 9 jul 2026 a las 9:33, Takashi Iwai (<tiwai@suse.de>) escribió:
>> 
>> On Thu, 09 Jul 2026 00:28:00 +0200,
>> Jussi Laako wrote:
>>> 
>>> Hi,
>>> 
>>> I don’t think we currently have exclusion method for devices with buggy firmware, which claim to support native DSD, but do it incorrectly. And reverting with device specific white-listing is not a good approach for future maintenance. Having to device-specific white-list each new device appearing on the market from the manufacturer just because some old device is broken is not really a sustainable model.
>> 
>> While I fully agree that white-listing all needed devices won't scale,
>> blacklisting the broken device might work.  We can an empty quirk
>> entry for 2772:0502 for skipping the vendor match, something like
>> below, as an ad hoc fix.
>> 
>> Though, this blindly assumes that there aren't so many broken devices,
>> and there will be no firmware fix or another model that works with the
>> same ID.  If a model is relatively new and/or the vendor often updates
>> the firmware, such an entry can be risky, too.
>> 
>> 
>> thanks,
>> 
>> Takashi
>> 
>> -- 8< --
>> --- a/sound/usb/quirks.c
>> +++ b/sound/usb/quirks.c
>> @@ -2463,6 +2463,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
>>                   QUIRK_FLAG_DSD_RAW),
>>        DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
>>                   QUIRK_FLAG_IGNORE_CTL_ERROR),
>> +       DEVICE_FLG(0x2772, 0x0502, /* Musical Fidelity M6s DAC */
>> +                  0), /* for avoiding QUIRK_FLAG_DSD_RAW with vendor match */
>>        DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */
>>                   QUIRK_FLAG_GET_SAMPLE_RATE),
>>        DEVICE_FLG(0x2a70, 0x1881, /* OnePlus Technology (Shenzhen) Co., Ltd. BE02T */


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

* Re: [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast
  2026-07-09  7:33   ` Takashi Iwai
  2026-07-09  7:54     ` Salvador Blaya
@ 2026-07-09  8:34     ` Jussi Laako
  2026-07-09  9:54       ` Takashi Iwai
  1 sibling, 1 reply; 8+ messages in thread
From: Jussi Laako @ 2026-07-09  8:34 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Salvador Blaya, alsa-devel, regressions

This is of course OK for me if it works. The newer Musical Fidelity devices work fine. For example M3x, M6x, M8x, MX and likely upcoming new ones.

So I would rather go with blacklisting broken ones.


	- Jussi


> On 9. Jul 2026, at 10.33, Takashi Iwai <tiwai@suse.de> wrote:
> 
> On Thu, 09 Jul 2026 00:28:00 +0200,
> Jussi Laako wrote:
>> 
>> Hi,
>> 
>> I don’t think we currently have exclusion method for devices with buggy firmware, which claim to support native DSD, but do it incorrectly. And reverting with device specific white-listing is not a good approach for future maintenance. Having to device-specific white-list each new device appearing on the market from the manufacturer just because some old device is broken is not really a sustainable model.
> 
> While I fully agree that white-listing all needed devices won't scale,
> blacklisting the broken device might work.  We can an empty quirk
> entry for 2772:0502 for skipping the vendor match, something like
> below, as an ad hoc fix.
> 
> Though, this blindly assumes that there aren't so many broken devices,
> and there will be no firmware fix or another model that works with the
> same ID.  If a model is relatively new and/or the vendor often updates
> the firmware, such an entry can be risky, too.
> 
> 
> thanks,
> 
> Takashi
> 
> -- 8< --
> --- a/sound/usb/quirks.c
> +++ b/sound/usb/quirks.c
> @@ -2463,6 +2463,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
>   QUIRK_FLAG_DSD_RAW),
> DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
>   QUIRK_FLAG_IGNORE_CTL_ERROR),
> + DEVICE_FLG(0x2772, 0x0502, /* Musical Fidelity M6s DAC */
> +   0), /* for avoiding QUIRK_FLAG_DSD_RAW with vendor match */
> DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */
>   QUIRK_FLAG_GET_SAMPLE_RATE),
> DEVICE_FLG(0x2a70, 0x1881, /* OnePlus Technology (Shenzhen) Co., Ltd. BE02T */


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

* Re: [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast
  2026-07-09  8:34     ` Jussi Laako
@ 2026-07-09  9:54       ` Takashi Iwai
  0 siblings, 0 replies; 8+ messages in thread
From: Takashi Iwai @ 2026-07-09  9:54 UTC (permalink / raw)
  To: Jussi Laako; +Cc: Salvador Blaya, alsa-devel, regressions

On Thu, 09 Jul 2026 10:34:44 +0200,
Jussi Laako wrote:
> 
> This is of course OK for me if it works. The newer Musical Fidelity devices work fine. For example M3x, M6x, M8x, MX and likely upcoming new ones.
> 
> So I would rather go with blacklisting broken ones.

OK, I'll submit the fix patch.


Takashi

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

end of thread, other threads:[~2026-07-09  9:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-08 16:33 [REGRESSION] snd-usb-audio: commit da3a7efff64e ("ALSA: usb-audio: Update for native DSD support quirks") breaks DSD playback on Musical Fidelity M6s DAC (2772:0502), plays ~8.8% fast Salvador Blaya
2026-07-08 22:28 ` Jussi Laako
2026-07-09  7:10   ` Salvador Blaya
2026-07-09  7:33   ` Takashi Iwai
2026-07-09  7:54     ` Salvador Blaya
2026-07-09  8:29       ` Jussi Laako
2026-07-09  8:34     ` Jussi Laako
2026-07-09  9:54       ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.