Volumio won't play DSD native

Hello, I have this DAC/Amplifier: ROTEL RA-1592
Volumio is installed on a Raspberry PI 3

volumio@volumio:~$ cat /proc/asound/card*/stream0
Rotel Rotel USB Audio 2.0 at usb-3f980000.usb-1.4, high speed : USB Audio

Playback:
Status: Running
Interface = 1
Altset = 2
Packet Size = 36
Momentary freq = 44099 Hz (0x5.8328)
Feedback Format = 16.16
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us
Interface 1
Altset 2
Format: S16_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us
Interface 1
Altset 3
Format: SPECIAL
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us

Bus 001 Device 004: ID 278b:5100
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Thanks

Hi,
this is a problem.
Rotel needs to get it in the Raspberry Kernel, we can’t do anything about it as we take the foundations kernel.

Ok, no problem. I have tried with some dsd file in the dop mode and all it’s working. If i set DSD on Volumio, my Rotel show PCM. I don’t think there are difference in audio quality.
Thanks.

Hello Michelangelo, gkkpch,

I’m a bit disappointed that my DAC is not in the list of officially supported DSD DACs.

I’m the one that initiated this topic, two years ago.

Anyway, when you get a chance, can you add my DAC to the list?

Platform is Raspberry Pi.

root@volumio:~# lsusb
Bus 001 Device 005: ID 0499:3111 Yamaha Corp.
root@volumio:~#

The result of the cat /proc/asound/card*/stream0 command:

root@volumio:~# cat /proc/asound/card*/stream0
Yamaha Corporation Yamaha USB DAC at usb-3f980000.usb-1.5, high speed : USB Audio

Playback:
Status: Stop
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us
Interface 1
Altset 2
Format: S32_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us

Capture:
Status: Stop
Interface 2
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 3 IN (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us
root@volumio:~#

I hope you can add my DAC to the list.

Thanks!!!
Richard

You may be disappointed, but please start with telling us what platform you are talking about.
We try to support them as well as possible, but depend on the kernels we can use or compile ourselves for them.
They all have different levels of DSD support, Raspberry, Tinkerboard, Odroids, or a PC or any other device out there.

Sorry, missed a part of you message, platform is in there. to be investigated.
But still, we depend on the kernels we can use or compile ourselves for them.

Edit:
So as it appears, this is because Raspberry kernel settings, which we do not change and have no influence over.
If the Raspberry foundation is not modifying the USB Audio quirks for your USB DAC in their kernel settings then there is not much we can do about it. Whether we like it or not, it is how it is…

Hello.
Kindly asking if possible to add the Rockna Wavelight on the list . It has direct DSD support (up to 512). Dsd 128 works perfect, both native and DoP. But 256 and 512 aren’t.
I’m using latest Volumio on Raspberry Pi 3b.
Thank you in advance!

Florin

I believe this “list” is a misunderstanding, we do not have a general list we can add to.
We can register DACs, with Vendor ID, Product ID and alt-set to the usb audio module.
But, this can only be done for kernels which we maintain and compile ourselves.
Or with board suppliers or board communities who maintain the kernel and we have a good contact with.

This is not the case for a Raspberry PI ! With the PI kernel, we just have to take what is being offered.
The PI list of supported DACs is already fairly extensive and should cover most of the popular ones, new kernel versions sometimes have new additions.
In general, it is the DAC supplier who is responsible to get kernel support, perhaps you should check with them.

Does the Pioneer A-50A / A-70DA support DSD either via DoP or Native DSD?

we don’t know until we get specific information from you regarding the platform you are using (PI, Odroid, Tinkerboard, X86, whatever) and the output of lsusb while the Pioneer is connected,

Hi,
I have an Aiyima Xmos based DAC from Aliexpress. It would be nice if I would be able to play direct DSD from volumio to this DAC.
My board is an Asus Tinkerboard.

The result of lsusb is:

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 20b1:0008 XMOS Ltd Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 002: ID 0bda:481a Realtek Semiconductor Corp. Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

The result of /proc/asound/DSD/stream0 , where DSD is the actual name of the DAC:

[code]
XMOS HIFI DSD at usb-ff540000.usb-1.4, high speed : USB Audio

Playback:
Status: Running
Interface = 1
Altset = 2
Packet Size = 120
Momentary freq = 192004 Hz (0x18.0020)
Feedback Format = 16.16
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us
Interface 1
Altset 2
Format: S16_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us
Interface 1
Altset 3
Format: SPECIAL DSD_U32_BE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us[/code]

Well, I manage to rebuild the modules for my tinkerboard and to modify the quirks.c file to include my Product ID for the altset 3 like that:

case USB_ID(0x20b1, 0x000a): /* Gustard DAC-X20U */ case USB_ID(0x20b1, 0x0008): /* XMOS demo */ case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */ case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */ case USB_ID(0x20b1, 0x3023): /* Aune X1S 32BIT/384 DSD DAC */ case USB_ID(0x2616, 0x0106): /* PS Audio NuWave DAC */ case USB_ID(0x6b42, 0x0042): /* MSB Technology */ case USB_ID(0x20a0, 0x4143): /* WaveIO USB Audio 2.0 */ case USB_ID(0x20b1, 0x3073): /* Soekris dac1101 */ case USB_ID(0x20b1, 0x2005): /* Denafrips DAC */ case USB_ID(0x16d0, 0x0733): /* Furutech ADL Stratos */ case USB_ID(0x22e1, 0xca01): /* HDTA Serenade DSD */ case USB_ID(0x2622, 0x0041): /* Audiolab M-DAC+ */ case USB_ID(0x1db5, 0x0003): /* Bryston BDA3 */ case USB_ID(0x20b1, 0x302d): /* Unison Research Unico CD Due */ case USB_ID(0x16b0, 0x06b2): /* NuPrime DAC-10 */ case USB_ID(0x20b1, 0x3036): /* Holo Springs Level 3 R2R DAC */ case USB_ID(0x20b1, 0x300f): /* Engineered Electronics Stereo Playback Interface */ case USB_ID(0x20b1, 0x3021): /* Eastern El. MiniMax Tube DAC Supreme */ printk("Selected correct XMOS DSD device\n"); if (fp->altsetting == 3) { printk( "Selected correct XMOS DSD device altset %llu\n", SNDRV_PCM_FMTBIT_DSD_U32_BE); return SNDRV_PCM_FMTBIT_DSD_U32_BE; } break; default: printk("Selected DEFAULT XMOS DSD device\n"); break; }

As you can see I put also some kernel messages to be sure that is working.
As you can see from the dmesg output this is working:

[23703.858798] snd_usb_interface_dsd_format_quirks VID = 20b1 PID=8 altseting = 1 [23703.868292] Selected correct XMOS DSD device [23703.874808] New playback formats after quirk = 1024 [23703.884892] snd_usb_parse_audio_format [23703.890849] New playback VID = 8369 PID=8 altseting = 2, protocol:32 [23703.899434] Playback formats = 4 [23703.904877] snd_usb_interface_dsd_format_quirks VID = 20b1 PID=8 altseting = 2 [23703.914340] Selected correct XMOS DSD device [23703.920847] New playback formats after quirk = 4 [23703.930639] snd_usb_parse_audio_format [23703.936610] New playback VID = 8369 PID=8 altseting = 3, protocol:32 [23703.945174] Playback set pcm special [23703.950927] Playback formats = 2147483648 [23703.957092] snd_usb_interface_dsd_format_quirks VID = 20b1 PID=8 altseting = 3 [23703.966494] Selected correct XMOS DSD device [23703.972936] Selected correct XMOS DSD device altset 4503599627370496 [23703.981464] New playback formats after quirk = 4503601774854144

But, still, I don’t get DSD native playback.
My DAC doesn’t have a display, but as documented here:https://github.com/lintweaker/xmos-native-dsd, I read from cat /proc/asound/DSD/pcm0p/sub0/hw_params the status. And the result is:

volumio@volumio:~$ cat /proc/asound/DSD/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 384000 (384000/1)
period_size: 48000
buffer_size: 192000

The format should be DSD_U32_BE but is still S16_LE

My mpd.conf file is:

[spoiler][code]# Volumio MPD Configuration File

Files and directories

music_directory “/var/lib/mpd/music”
playlist_directory “/var/lib/mpd/playlists”
db_file “/var/lib/mpd/tag_cache”
log_file “/var/log/mpd.log”
#pid_file “/var/run/mpd/pid”
#state_file “/var/lib/mpd/state”
#sticker_file “/var/lib/mpd/sticker.sql”
###############################################################################

General music daemon options

user “mpd”
group “audio”
bind_to_address “any”
#port “6600”
#log_level “default”
gapless_mp3_playback “no”
#save_absolute_paths_in_playlists “no”
#metadata_to_use “artist,album,title,track,name,genre,date,composer,performer,disc”
auto_update “yes”
#auto_update_depth “3”
###############################################################################

Symbolic link behavior

follow_outside_symlinks “yes”
follow_inside_symlinks “yes”
###############################################################################

Input

input {
plugin “curl”

proxy “proxy.isp.com:8080

proxy_user “user”

proxy_password “password”

}
###############################################################################

Decoder

###############################################################################

Audio Output

resampler {
plugin “soxr”
quality “high”
threads “1”
}

audio_output {
type “alsa”
name “alsa”
device “hw:5,0”
dop “no”

}

audio_output {
type “fifo”
enabled “no”
name “multiroom”
path “/tmp/snapfifo”
format “44100:16:2”
}

#replaygain “album”
#replaygain_preamp “0”
volume_normalization “yes”
###############################################################################

MPD Internal Buffering

audio_buffer_size “12288”
buffer_before_play “40%”
###############################################################################

Resource Limitations

#connection_timeout “60”
max_connections “20”
max_playlist_length “81920”
max_command_list_size “81920”
max_output_buffer_size “81920”
###############################################################################

Character Encoding

filesystem_charset “UTF-8”
id3v1_encoding “UTF-8”
###############################################################################
volumio@volumio:~$
[/code][/spoiler]

Some extra info. When I try to play DSD direct with aplay I get an error that the format is not supported:

[code]volumio@volumio:~$ cat /dev/urandom | aplay -f DSD_U32_BE
Playing raw data ‘stdin’ : Direct Stream Digital, 4-byte (x32), big endian, oldest bits in MSB, Rate 8000 Hz, Mono
aplay: set_params:1233: Sample format non available
Available formats:

  • S8
  • U8
  • S16_LE
  • S16_BE
  • U16_LE
  • U16_BE
  • S24_LE
  • S24_BE
  • U24_LE
  • U24_BE
  • S32_LE
  • S32_BE
  • U32_LE
  • U32_BE
  • FLOAT_LE
  • FLOAT_BE
  • FLOAT64_LE
  • FLOAT64_BE
  • MU_LAW
  • A_LAW
  • IMA_ADPCM
  • S24_3LE
  • S24_3BE
  • U24_3LE
  • U24_3BE
  • S20_3LE
  • S20_3BE
  • U20_3LE
  • U20_3BE
  • S18_3LE
  • S18_3BE
  • U18_3LE
  • U18_3BE[/code]

Maybe I the alsa version is wrong?

And at this point I am stuck. I see that this quirk is only called for setting the format when the snd-usb-audio module is loaded, but never when I start playing a song. Does anybody know how the format is selected when I start playback? I could put a kernal message there to see what is happening. Or any other suggestions how can I enable DSD native are welcome.

use U32_BE, not DSD_U32_BE :wink:

Are you sure the soundtrack you are playing is in DSD format?
The rest seems ok, I see no reason otherwise why it should not work.
It is correct, that this quirk is only called when usb-audio is loaded, its only purpose is to tell ALSA what the current device’s capabilities are.

Hi gkkpch. Thank you for your answer
Managed to get it work in the end.
I updated Alsa to 1.1.9 following this guide: https://scribles.net/updating-alsa-on-raspbian-stretch/
I updated MPD using this guide: https://forum.volumio.org/tutorial-update-mpd-version-t642.html

But what did the trick I think is turning off the volume normalization option. And now, I get the correct DSD format as DSD_U32_BE. The thing is, if I try to set the volume to anything other than 100%, I will get only noise.

So for all of you that are using tinker board and you don’t have your USB DAC added to the kernel for DSD, you only need to recompile the modules and replace the snd-usb-sound.ko module. For compiling the modules you need to use the latest configuration file from your boot folder. I will get back with a step by step guide when I will have a little time.

Hi,
I have a Raspberry Pi 4 + Cambridge CXA61, Volumio play DSD but with no sound.

“lsusb -t” command :
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 3, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 3, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 3, If 2, Class=Application Specific Interface, Driver=, 480M

“aplay -l aplay -L” command :
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
default:CARD=ALSA
bcm2835 ALSA, bcm2835 ALSA
Default Audio Device
sysdefault:CARD=ALSA
bcm2835 ALSA, bcm2835 ALSA
Default Audio Device
dmix:CARD=ALSA,DEV=0
bcm2835 ALSA, bcm2835 ALSA
Direct sample mixing device
dmix:CARD=ALSA,DEV=1
bcm2835 ALSA, bcm2835 IEC958/HDMI
Direct sample mixing device
dmix:CARD=ALSA,DEV=2
bcm2835 ALSA, bcm2835 IEC958/HDMI1
Direct sample mixing device
dsnoop:CARD=ALSA,DEV=0
bcm2835 ALSA, bcm2835 ALSA
Direct sample snooping device
dsnoop:CARD=ALSA,DEV=1
bcm2835 ALSA, bcm2835 IEC958/HDMI
Direct sample snooping device
dsnoop:CARD=ALSA,DEV=2
bcm2835 ALSA, bcm2835 IEC958/HDMI1
Direct sample snooping device
hw:CARD=ALSA,DEV=0
bcm2835 ALSA, bcm2835 ALSA
Direct hardware device without any conversions
hw:CARD=ALSA,DEV=1
bcm2835 ALSA, bcm2835 IEC958/HDMI
Direct hardware device without any conversions
hw:CARD=ALSA,DEV=2
bcm2835 ALSA, bcm2835 IEC958/HDMI1
Direct hardware device without any conversions
plughw:CARD=ALSA,DEV=0
bcm2835 ALSA, bcm2835 ALSA
Hardware device with all software conversions
plughw:CARD=ALSA,DEV=1
bcm2835 ALSA, bcm2835 IEC958/HDMI
Hardware device with all software conversions
plughw:CARD=ALSA,DEV=2
bcm2835 ALSA, bcm2835 IEC958/HDMI1
Hardware device with all software conversions
default:CARD=C20
CA CXA61 2.0, USB Audio
Default Audio Device
sysdefault:CARD=C20
CA CXA61 2.0, USB Audio
Default Audio Device
front:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
Front speakers
surround21:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
Direct sample mixing device
dsnoop:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
Direct sample snooping device
hw:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
Direct hardware device without any conversions
plughw:CARD=C20,DEV=0
CA CXA61 2.0, USB Audio
Hardware device with all software conversions
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 7/7
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: ALSA [bcm2835 ALSA], device 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 5: C20 [CA CXA61 2.0], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0

Thank you :slight_smile:

Could you do an ‘lsbusb’ (without -t), I like to see what vendor id/ product id the cxa61 usb interface returns.

From the last logs that I took, I reinstalled the system to a clean volumio install at the latest version. At this moment DSD native is no longer an interest for me, as I don’t see any difference and I wanted to use the DSP FIR plugin to do room correction, and that one doesn’t support output to DSD.
But, Here are all the logs again:
volumio@volumio:~$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 20b1:0008 XMOS Ltd
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 0bda:481a Realtek Semiconductor Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
volumio@volumio:~$ lsusb -t
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 1: Dev 2, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 1: Dev 2, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 1: Dev 2, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 1: Dev 2, If 4, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 1: Dev 2, If 5, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 1: Dev 2, If 255, Class=Human Interface Device, Driver=usbhid, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 3, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 3, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 3, If 2, Class=Application Specific Interface, Driver=, 480M
volumio@volumio:~$ aplay -l aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
softvolume
softvol
default:CARD=rockchipminiarm
rockchip,miniarm-codec,
Default Audio Device
sysdefault:CARD=rockchipminiarm
rockchip,miniarm-codec,
Default Audio Device
dmix:CARD=rockchipminiarm,DEV=0
rockchip,miniarm-codec,
Direct sample mixing device
dsnoop:CARD=rockchipminiarm,DEV=0
rockchip,miniarm-codec,
Direct sample snooping device
hw:CARD=rockchipminiarm,DEV=0
rockchip,miniarm-codec,
Direct hardware device without any conversions
plughw:CARD=rockchipminiarm,DEV=0
rockchip,miniarm-codec,
Hardware device with all software conversions
default:CARD=OnBoard
USB Audio OnBoard, USB Audio
Default Audio Device
sysdefault:CARD=OnBoard
USB Audio OnBoard, USB Audio
Default Audio Device
front:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
Front speakers
surround21:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
Direct sample mixing device
dmix:CARD=OnBoard,DEV=1
USB Audio OnBoard, USB Audio #1
Direct sample mixing device
dmix:CARD=OnBoard,DEV=2
USB Audio OnBoard, USB Audio #2
Direct sample mixing device
dsnoop:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
Direct sample snooping device
dsnoop:CARD=OnBoard,DEV=1
USB Audio OnBoard, USB Audio #1
Direct sample snooping device
dsnoop:CARD=OnBoard,DEV=2
USB Audio OnBoard, USB Audio #2
Direct sample snooping device
hw:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
Direct hardware device without any conversions
hw:CARD=OnBoard,DEV=1
USB Audio OnBoard, USB Audio #1
Direct hardware device without any conversions
hw:CARD=OnBoard,DEV=2
USB Audio OnBoard, USB Audio #2
Direct hardware device without any conversions
plughw:CARD=OnBoard,DEV=0
USB Audio OnBoard, USB Audio
Hardware device with all software conversions
plughw:CARD=OnBoard,DEV=1
USB Audio OnBoard, USB Audio #1
Hardware device with all software conversions
plughw:CARD=OnBoard,DEV=2
USB Audio OnBoard, USB Audio #2
Hardware device with all software conversions
default:CARD=DSD
HIFI DSD, USB Audio
Default Audio Device
sysdefault:CARD=DSD
HIFI DSD, USB Audio
Default Audio Device
front:CARD=DSD,DEV=0
HIFI DSD, USB Audio
Front speakers
surround21:CARD=DSD,DEV=0
HIFI DSD, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=DSD,DEV=0
HIFI DSD, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=DSD,DEV=0
HIFI DSD, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=DSD,DEV=0
HIFI DSD, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=DSD,DEV=0
HIFI DSD, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=DSD,DEV=0
HIFI DSD, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=DSD,DEV=0
HIFI DSD, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=DSD,DEV=0
HIFI DSD, USB Audio
Direct sample mixing device
dsnoop:CARD=DSD,DEV=0
HIFI DSD, USB Audio
Direct sample snooping device
hw:CARD=DSD,DEV=0
HIFI DSD, USB Audio
Direct hardware device without any conversions
plughw:CARD=DSD,DEV=0
HIFI DSD, USB Audio
Hardware device with all software conversions
default:CARD=Loopback
Loopback, Loopback PCM
Default Audio Device
sysdefault:CARD=Loopback
Loopback, Loopback PCM
Default Audio Device
front:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Front speakers
surround21:CARD=Loopback,DEV=0
Loopback, Loopback PCM
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Loopback,DEV=0
Loopback, Loopback PCM
4.0 Surround output to Front and Rear speakers
surround41:CARD=Loopback,DEV=0
Loopback, Loopback PCM
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Loopback,DEV=0
Loopback, Loopback PCM
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Loopback,DEV=0
Loopback, Loopback PCM
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Loopback,DEV=0
Loopback, Loopback PCM
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
dmix:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Direct sample mixing device
dmix:CARD=Loopback,DEV=1
Loopback, Loopback PCM
Direct sample mixing device
dsnoop:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Direct sample snooping device
dsnoop:CARD=Loopback,DEV=1
Loopback, Loopback PCM
Direct sample snooping device
hw:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Direct hardware device without any conversions
hw:CARD=Loopback,DEV=1
Loopback, Loopback PCM
Direct hardware device without any conversions
plughw:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Hardware device with all software conversions
plughw:CARD=Loopback,DEV=1
Loopback, Loopback PCM
Hardware device with all software conversions
**** List of PLAYBACK Hardware Devices ****
card 0: rockchipminiarm [rockchip,miniarm-codec], device 0: ff890000.i2s-i2s-hifi i2s-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: OnBoard [USB Audio OnBoard], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: OnBoard [USB Audio OnBoard], device 1: USB Audio [USB Audio #1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: OnBoard [USB Audio OnBoard], device 2: USB Audio [USB Audio #2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 5: DSD [HIFI DSD], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 7: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 2/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
card 7: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 2/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1

so Cambridge used a standard XMOS usb interface and that should actually work, no idea. In case you do need DSD, then there is some more debugging to do to verify DSD is supported at all.

lsusb
Bus 001 Device 004: ID 0781:5530 SanDisk Corp. Cruzer
Bus 001 Device 005: ID 21b4:0245
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


volumio@stova:~$ cat /proc/asound/card*/stream0 Grace Design SDAC-B USB 2.0 at usb-3f980000.usb-1.3, high speed : USB Audio

Playback:
Status: Running
Interface = 1
Altset = 1
Packet Size = 720
Momentary freq = 705598 Hz (0x58.3320)
Feedback Format = 16.16
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600
Data packet interval: 125 us
Interface 1
Altset 2
Format: SPECIAL
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600
Data packet interval: 125 us

on which device? RPi, Tinkerboard, Odroid, Pine…?