A couple of weeks ago I received a USB DAC e1da 9038d. It should have natively played DSD128, 256.
But the output was the following:
:~$ cat /proc/asound/card*/pcmp/sub/hw_params
access: MMAP_INTERLEAVED
format: S24_3LE
subformat: STD
channels: 2
rate: 352800 (352800/1)
period_size: 43691
buffer_size: 174762
or:
:~$ cat /proc/asound/card*/pcmp/sub/hw_params
access: MMAP_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 352800 (352800/1)
period_size: 32768
buffer_size: 131072
It can be seen that the sound is being converted.
I started to find out the reason, after reading the forums, I realized that I needed a patch to the kernel. It was only necessary to fork quirks.
I wrote a patch, compiled the kernel with parameters for E1 DA 9038D, built a Volume image for OrangePi.
I installed and received the native DSD sound:
DSD128:
:~$ cat /proc/asound/card*/pcmp/sub/hw_params
access: MMAP_INTERLEAVED
format: DSD_U32_BE
subformat: STD
channels: 2
rate: 176400 (176400/1)
period_size: 22050
buffer_size: 88200
DSD256:
~$ cat /proc/asound/card*/pcmp/sub/hw_params
access: MMAP_INTERLEAVED
format: DSD_U32_BE
subformat: STD
channels: 2
rate: 352800 (352800/1)
period_size: 32768
buffer_size: 131072
The load on the processor is now minimal, it does not have to digest resampling through itself:
Download here: