Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native DSD not working #230

Open
mimmus opened this issue Jun 27, 2024 · 2 comments
Open

Native DSD not working #230

mimmus opened this issue Jun 27, 2024 · 2 comments

Comments

@mimmus
Copy link

mimmus commented Jun 27, 2024

Hi,
I have an integrated DAC/amplifier advertising up to DSD256 in its datasheet.
But it works only setting "-D" to DSD-over-PCM:
3:dop
(and not with DSD256, only DSD64 and DSD128, probably due to PCM sample rates limitation up to 384kHz)
while I would have expected native DSD.

This is output of cat /proc/asound/card0/stream0:

$ cat /proc/asound/M20/stream0
MISSION MISSION USB Audio 2.0 at usb-0000:01:00.0-1.2, high speed : USB Audio

Playback:
  Status: Stop
  Interface 1
    Altset 1
    Format: S32_LE
    Channels: 2
    Endpoint: 0x01 (1 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 24
    Channel map: FL FR
    Sync Endpoint: 0x81 (1 IN)
    Sync EP Interface: 1
    Sync EP Altset: 1
    Implicit Feedback Mode: No
  Interface 1
    Altset 2
    Format: S16_LE
    Channels: 2
    Endpoint: 0x01 (1 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 16
    Channel map: FL FR
    Sync Endpoint: 0x81 (1 IN)
    Sync EP Interface: 1
    Sync EP Altset: 2
    Implicit Feedback Mode: No
  Interface 1
    Altset 3
    Format: SPECIAL
    Channels: 2
    Endpoint: 0x01 (1 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 32
    DSD raw: DOP=0, bitrev=0
    Channel map: FL FR
    Sync Endpoint: 0x81 (1 IN)
    Sync EP Interface: 1
    Sync EP Altset: 3
    Implicit Feedback Mode: No

and:

$ aplay --dump-hw-params -D hw:0,0 -f cd /dev/zero
Playing raw data '/dev/zero' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
HW Params of device "hw:0,0":
--------------------
ACCESS: MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT: S16_LE S32_LE SPECIAL
SUBFORMAT: STD
SAMPLE_BITS: [16 32]
FRAME_BITS: [32 64]
CHANNELS: 2
RATE: [44100 384000]
PERIOD_TIME: [125 1000000]
PERIOD_SIZE: [8 384000]
PERIOD_BYTES: [64 3072000]
PERIODS: [2 1024]
BUFFER_TIME: (41 2000000]
BUFFER_SIZE: [16 768000]
BUFFER_BYTES: [64 6144000]
TICK_TIME: ALL
--------------------

Here is the actual command line:
/usr/local/bin/squeezelite -n "piCorePlayer" -o hw:CARD=M20,DEV=0 -a 160:4::1: -b 50000:300000 -r 384000 -d all=debug -f /var/log/pcp_squeezelite.log -D 3:dop -C 1 -V "MISSION USB Audio 2.0 "

Any help?

@986ster
Copy link

986ster commented Jun 27, 2024

Your device doesn't list any raw DSD formats that it accepts. Usually for a decvice that supports raw DSD you'd expect to see a format like DSD_U32_BE.

I've seen plenty of devices that list DSD support, but can only handle it when encapsulated in a PCM stream. That is still native DSD and it will be decoded as DSD in the DAC. I've also seen devices that require a proprietary driver to be able to send raw DSD. Some of the firmware versions on Amanero interface cards spring to mind.

Either way, this isn't a Squeezelite issue.

Since your device says it has a SPECIAL stream format you could try the various DSD combinations on the -D setting to see if any of them will actually work, so -D 0:u32be for example as this is a common raw DSD type. The options are u8, u16le, u16be, u32le, and u32be.

@mimmus
Copy link
Author

mimmus commented Jun 27, 2024

yes, I agree: it’s definitely an issue of kernel, probably DAC model is missing in some config file. I will try to understand if it can be added in piCorePlayer kernel or I will try by myself with a more recent kernel or I will ping the vendor, actually offering only a Windows driver on its site.

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants