You are not logged in.
I got myself a https://moondroplab.com/en/products/dawn-pro:
dmesg
[ 3950.797950] usbcore: registered new interface driver snd-usb-audio
[ 3954.576305] usb 1-3: new high-speed USB device number 10 using xhci_hcd
[ 3954.700269] usb 1-3: config 1 interface 2 altsetting 0 endpoint 0x5 has an invalid bInterval 0, changing to 7
[ 3954.701758] usb 1-3: New USB device found, idVendor=2fc6, idProduct=f06a, bcdDevice=c5.51
[ 3954.701764] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3954.701768] usb 1-3: Product: MOONDROP Dawn Pro
[ 3954.701771] usb 1-3: Manufacturer: MOONDROP
[ 3954.701773] usb 1-3: SerialNumber: MOONDROP Dawn Pro
[ 3955.042229] input: MOONDROP MOONDROP Dawn Pro as /devices/pci0000:00/0000:00:08.1/0000:03:00.3/usb1/1-3/1-3:1.2/0003:2FC6:F06A.000A/input/input22
[ 3955.093611] hid-generic 0003:2FC6:F06A.000A: input,hidraw1: USB HID v1.11 Device [MOONDROP MOONDROP Dawn Pro] on usb-0000:03:00.3-3/input2Which supports this range of sampling rates: [44100, 384000].
I use Tidal, which allows me to stream some songs at 192000 24 bit, or more. FLACs. Their app is Electron, so Chromium.
The DAC itself shows different colors depending on its current frequency: reference, so I know if the frequency actually got applied.
The issue is that I am always getting 48000 (Pipewire's default, afaiu). Some things I tried:
- Manually set the frequency (works): pw-metadata -n settings 0 clock.force-rate 384000
- Test it with different configurations: speaker-test -D hw:1 -c 2 -r $FREQ -F $BIT, with values of 384000, 196000, 96000 for FREQ, and S24_3LE, S32_LE, S24_LE.
Some info:
❯ cat /proc/asound/cards
0 [Generic ]: HDA-Intel - HD-Audio Generic
HD-Audio Generic at 0xfe7c8000 irq 66
1 [Generic_1 ]: HDA-Intel - HD-Audio Generic
HD-Audio Generic at 0xfe7c0000 irq 67
2 [Pro ]: USB-Audio - MOONDROP Dawn Pro
MOONDROP MOONDROP Dawn Pro at usb-0000:03:00.3-3, high speedI also tried:
~
❯ cat .config/alsa/conf.d/99-moondrop-dac.conf
pcm."MOONDROP_Dawn_Pro" {
type hw
card "MOONDROP_Dawn_Pro"
device 0
hint {
show on
description "MOONDROP Dawn Pro (Hi-Res)"
rate_list [ 44100 48000 88200 96000 176400 192000 352800 384000 ]
}
}Some other way I checked the current frequency:
# after forcing with pw-metadata
~
❯ cat /proc/asound/card*/stream* | grep -A 5 "Playback"
Playback:
Status: Running
Interface = 1
Altset = 3
Packet Size = 576
Momentary freq = 384009 Hz (0x30.0048)~
❯ LC_ALL=C pw-cli list-objects
id 0, type PipeWire:Interface:Core/4
object.serial = "0"
core.name = "pipewire-0"
id 1, type PipeWire:Interface:Module/3
object.serial = "1"
module.name = "libpipewire-module-rt"
id 2, type PipeWire:Interface:Module/3
object.serial = "2"
module.name = "libpipewire-module-protocol-native"
id 3, type PipeWire:Interface:SecurityContext/3
object.serial = "3"
id 4, type PipeWire:Interface:Module/3
object.serial = "4"
module.name = "libpipewire-module-profiler"
id 5, type PipeWire:Interface:Profiler/3
object.serial = "5"
id 6, type PipeWire:Interface:Module/3
object.serial = "6"
module.name = "libpipewire-module-metadata"
id 7, type PipeWire:Interface:Factory/3
object.serial = "7"
module.id = "6"
factory.name = "metadata"
factory.type.name = "PipeWire:Interface:Metadata"
factory.type.version = "3"
id 8, type PipeWire:Interface:Module/3
object.serial = "8"
module.name = "libpipewire-module-spa-device-factory"
id 9, type PipeWire:Interface:Factory/3
object.serial = "9"
module.id = "8"
factory.name = "spa-device-factory"
factory.type.name = "PipeWire:Interface:Device"
factory.type.version = "3"
id 10, type PipeWire:Interface:Module/3
object.serial = "10"
module.name = "libpipewire-module-spa-node-factory"
id 11, type PipeWire:Interface:Factory/3
object.serial = "11"
module.id = "10"
factory.name = "spa-node-factory"
factory.type.name = "PipeWire:Interface:Node"
factory.type.version = "3"
id 12, type PipeWire:Interface:Module/3
object.serial = "12"
module.name = "libpipewire-module-client-node"
id 13, type PipeWire:Interface:Factory/3
object.serial = "13"
module.id = "12"
factory.name = "client-node"
factory.type.name = "PipeWire:Interface:ClientNode"
factory.type.version = "6"
id 14, type PipeWire:Interface:Module/3
object.serial = "14"
module.name = "libpipewire-module-client-device"
id 15, type PipeWire:Interface:Factory/3
object.serial = "15"
module.id = "14"
factory.name = "client-device"
factory.type.name = "Spa:Pointer:Interface:Device"
factory.type.version = "0"
id 16, type PipeWire:Interface:Module/3
object.serial = "16"
module.name = "libpipewire-module-portal"
id 17, type PipeWire:Interface:Module/3
object.serial = "17"
module.name = "libpipewire-module-access"
id 18, type PipeWire:Interface:Module/3
object.serial = "18"
module.name = "libpipewire-module-adapter"
id 19, type PipeWire:Interface:Factory/3
object.serial = "19"
module.id = "18"
factory.name = "adapter"
factory.type.name = "PipeWire:Interface:Node"
factory.type.version = "3"
id 20, type PipeWire:Interface:Module/3
object.serial = "20"
module.name = "libpipewire-module-link-factory"
id 21, type PipeWire:Interface:Factory/3
object.serial = "21"
module.id = "20"
factory.name = "link-factory"
factory.type.name = "PipeWire:Interface:Link"
factory.type.version = "3"
id 22, type PipeWire:Interface:Module/3
object.serial = "22"
module.name = "libpipewire-module-session-manager"
id 23, type PipeWire:Interface:Factory/3
object.serial = "23"
module.id = "22"
factory.name = "client-endpoint"
factory.type.name = "PipeWire:Interface:ClientEndpoint"
factory.type.version = "0"
id 24, type PipeWire:Interface:Factory/3
object.serial = "24"
module.id = "22"
factory.name = "client-session"
factory.type.name = "PipeWire:Interface:ClientSession"
factory.type.version = "0"
id 25, type PipeWire:Interface:Factory/3
object.serial = "25"
module.id = "22"
factory.name = "session"
factory.type.name = "PipeWire:Interface:Session"
factory.type.version = "0"
id 26, type PipeWire:Interface:Factory/3
object.serial = "26"
module.id = "22"
factory.name = "endpoint"
factory.type.name = "PipeWire:Interface:Endpoint"
factory.type.version = "0"
id 27, type PipeWire:Interface:Factory/3
object.serial = "27"
module.id = "22"
factory.name = "endpoint-stream"
factory.type.name = "PipeWire:Interface:EndpointStream"
factory.type.version = "0"
id 28, type PipeWire:Interface:Factory/3
object.serial = "28"
module.id = "22"
factory.name = "endpoint-link"
factory.type.name = "PipeWire:Interface:EndpointLink"
factory.type.version = "0"
id 29, type PipeWire:Interface:Module/3
object.serial = "29"
module.name = "libpipewire-module-x11-bell"
id 30, type PipeWire:Interface:Node/3
object.serial = "30"
factory.id = "11"
priority.driver = "200000"
node.name = "Dummy-Driver"
id 31, type PipeWire:Interface:Node/3
object.serial = "31"
factory.id = "11"
priority.driver = "190000"
node.name = "Freewheel-Driver"
id 32, type PipeWire:Interface:Metadata/3
object.serial = "32"
metadata.name = "settings"
id 33, type PipeWire:Interface:Client/3
object.serial = "33"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1084"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "libcanberra"
id 34, type PipeWire:Interface:Client/3
object.serial = "34"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1084"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "Mutter"
id 35, type PipeWire:Interface:Client/3
object.serial = "35"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1084"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "libcanberra"
id 36, type PipeWire:Interface:Client/3
object.serial = "36"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1964"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "portal"
application.name = "xdg-desktop-portal"
id 37, type PipeWire:Interface:Client/3
object.serial = "37"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "15889"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0-manager"
pipewire.access = "unrestricted"
application.name = "WirePlumber"
id 38, type PipeWire:Interface:Metadata/3
metadata.name = "schema-sm-settings"
factory.id = "7"
module.id = "6"
client.id = "37"
object.serial = "38"
id 39, type PipeWire:Interface:Metadata/3
metadata.name = "persistent-sm-settings"
factory.id = "7"
module.id = "6"
client.id = "37"
object.serial = "39"
id 40, type PipeWire:Interface:Metadata/3
metadata.name = "sm-settings"
factory.id = "7"
module.id = "6"
client.id = "37"
object.serial = "40"
id 41, type PipeWire:Interface:Metadata/3
metadata.name = "sm-objects"
factory.id = "7"
module.id = "6"
client.id = "37"
object.serial = "41"
id 42, type PipeWire:Interface:Metadata/3
metadata.name = "default"
factory.id = "7"
module.id = "6"
client.id = "37"
object.serial = "42"
id 43, type PipeWire:Interface:Metadata/3
metadata.name = "filters"
factory.id = "7"
module.id = "6"
client.id = "37"
object.serial = "43"
id 44, type PipeWire:Interface:Metadata/3
metadata.name = "route-settings"
factory.id = "7"
module.id = "6"
client.id = "37"
object.serial = "44"
id 45, type PipeWire:Interface:Client/3
object.serial = "45"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "15889"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0-manager"
pipewire.access = "unrestricted"
application.name = "WirePlumber [export]"
id 46, type PipeWire:Interface:Device/3
object.serial = "46"
factory.id = "15"
client.id = "45"
device.api = "alsa"
device.description = "Raven/Raven2/Fenghuang HDMI/DP Audio Controller"
device.name = "alsa_card.pci-0000_03_00.1"
device.nick = "HD-Audio Generic"
media.class = "Audio/Device"
id 47, type PipeWire:Interface:Device/3
object.serial = "47"
factory.id = "15"
client.id = "45"
device.api = "alsa"
device.description = "MOONDROP Dawn Pro"
device.name = "alsa_card.usb-MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro-00"
device.nick = "MOONDROP Dawn Pro"
media.class = "Audio/Device"
id 48, type PipeWire:Interface:Device/3
object.serial = "48"
factory.id = "15"
client.id = "45"
device.api = "alsa"
device.description = "Ryzen HD Audio Controller"
device.name = "alsa_card.pci-0000_03_00.6"
device.nick = "HD-Audio Generic"
media.class = "Audio/Device"
id 49, type PipeWire:Interface:Node/3
object.serial = "49"
factory.id = "11"
client.id = "45"
priority.session = "100"
priority.driver = "1"
node.name = "Midi-Bridge"
media.class = "Midi/Bridge"
id 50, type PipeWire:Interface:Port/3
object.serial = "50"
object.path = "alsa:seq:default:client_14:playback_0"
format.dsp = "8 bit raw midi"
node.id = "49"
port.id = "0"
port.name = "Midi Through Port-0 (playback)"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "Midi Through:Midi Through Port-0"
port.group = "client_14"
id 51, type PipeWire:Interface:Port/3
object.serial = "51"
object.path = "alsa:seq:default:client_14:capture_0"
format.dsp = "8 bit raw midi"
node.id = "49"
port.id = "0"
port.name = "Midi Through Port-0 (capture)"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "Midi Through:Midi Through Port-0"
port.group = "client_14"
id 52, type PipeWire:Interface:Node/3
object.serial = "52"
factory.id = "14"
client.id = "45"
node.description = "BLE MIDI 1"
node.name = "bluez_midi.server"
media.class = "Midi/Bridge"
id 53, type PipeWire:Interface:Port/3
object.serial = "53"
object.path = "bluez_midi.server:input_0"
format.dsp = "8 bit raw midi"
node.id = "52"
port.id = "0"
port.name = "in"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "in"
port.group = "group.0"
id 54, type PipeWire:Interface:Port/3
object.serial = "54"
object.path = "bluez_midi.server:output_0"
format.dsp = "8 bit raw midi"
node.id = "52"
port.id = "0"
port.name = "out"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "out"
port.group = "group.0"
id 55, type PipeWire:Interface:Node/3
object.serial = "55"
object.path = "alsa:acp:Pro:0:playback"
factory.id = "19"
client.id = "45"
device.id = "47"
priority.session = "1600"
priority.driver = "1600"
node.description = "MOONDROP Dawn Pro Pro"
node.name = "alsa_output.usb-MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro-00.pro-output-0"
node.nick = "MOONDROP Dawn Pro"
media.class = "Audio/Sink"
id 56, type PipeWire:Interface:Node/3
object.serial = "56"
object.path = "alsa:acp:Generic_1:3:playback"
factory.id = "19"
client.id = "45"
device.id = "48"
priority.session = "1009"
priority.driver = "1009"
node.description = "Ryzen HD Audio Controller Estèreo analògic"
node.name = "alsa_output.pci-0000_03_00.6.analog-stereo"
node.nick = "ALC294 Analog"
media.class = "Audio/Sink"
id 57, type PipeWire:Interface:Node/3
object.serial = "57"
object.path = "alsa:acp:Generic_1:0:capture"
factory.id = "19"
client.id = "45"
device.id = "48"
priority.session = "2009"
priority.driver = "2009"
node.description = "Ryzen HD Audio Controller Estèreo analògic"
node.name = "alsa_input.pci-0000_03_00.6.analog-stereo"
node.nick = "ALC294 Analog"
media.class = "Audio/Source"
id 58, type PipeWire:Interface:Port/3
object.serial = "58"
object.path = "alsa:acp:Pro:0:playback:playback_0"
format.dsp = "32 bit float mono audio"
node.id = "55"
audio.channel = "AUX0"
port.id = "0"
port.name = "playback_AUX0"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "MOONDROP Dawn Pro:playback_AUX0"
port.group = "playback"
id 59, type PipeWire:Interface:Port/3
object.serial = "59"
object.path = "alsa:acp:Pro:0:playback:monitor_0"
format.dsp = "32 bit float mono audio"
node.id = "55"
audio.channel = "AUX0"
port.id = "0"
port.name = "monitor_AUX0"
port.direction = "out"
port.monitor = "true"
port.alias = "MOONDROP Dawn Pro:monitor_AUX0"
port.group = "playback"
id 60, type PipeWire:Interface:Port/3
object.serial = "60"
object.path = "alsa:acp:Pro:0:playback:playback_1"
format.dsp = "32 bit float mono audio"
node.id = "55"
audio.channel = "AUX1"
port.id = "1"
port.name = "playback_AUX1"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "MOONDROP Dawn Pro:playback_AUX1"
port.group = "playback"
id 61, type PipeWire:Interface:Port/3
object.serial = "61"
object.path = "alsa:acp:Pro:0:playback:monitor_1"
format.dsp = "32 bit float mono audio"
node.id = "55"
audio.channel = "AUX1"
port.id = "1"
port.name = "monitor_AUX1"
port.direction = "out"
port.monitor = "true"
port.alias = "MOONDROP Dawn Pro:monitor_AUX1"
port.group = "playback"
id 62, type PipeWire:Interface:Device/3
object.serial = "62"
factory.id = "15"
client.id = "45"
device.api = "v4l2"
device.description = "USB2.0 HD UVC WebCam"
device.name = "v4l2_device.pci-0000_03_00.4-usb-0_2.1_1.0"
media.class = "Video/Device"
id 63, type PipeWire:Interface:Device/3
object.serial = "63"
factory.id = "15"
client.id = "45"
device.api = "v4l2"
device.description = "USB2.0 HD UVC WebCam"
device.name = "v4l2_device.pci-0000_03_00.4-usb-0_2.1_1.0.2"
media.class = "Video/Device"
id 64, type PipeWire:Interface:Device/3
object.serial = "64"
factory.id = "15"
client.id = "45"
device.api = "libcamera"
device.description = "Unknown device"
device.name = "libcamera_device.0"
media.class = "Video/Device"
id 65, type PipeWire:Interface:Port/3
object.serial = "65"
object.path = "alsa:acp:Generic_1:3:playback:playback_0"
format.dsp = "32 bit float mono audio"
node.id = "56"
audio.channel = "FL"
port.id = "0"
port.name = "playback_FL"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "ALC294 Analog:playback_FL"
port.group = "playback"
id 66, type PipeWire:Interface:Port/3
object.serial = "66"
object.path = "alsa:acp:Generic_1:3:playback:monitor_0"
format.dsp = "32 bit float mono audio"
node.id = "56"
audio.channel = "FL"
port.id = "0"
port.name = "monitor_FL"
port.direction = "out"
port.monitor = "true"
port.alias = "ALC294 Analog:monitor_FL"
port.group = "playback"
id 67, type PipeWire:Interface:Port/3
object.serial = "67"
object.path = "alsa:acp:Generic_1:3:playback:playback_1"
format.dsp = "32 bit float mono audio"
node.id = "56"
audio.channel = "FR"
port.id = "1"
port.name = "playback_FR"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "ALC294 Analog:playback_FR"
port.group = "playback"
id 68, type PipeWire:Interface:Port/3
object.serial = "68"
object.path = "alsa:acp:Generic_1:3:playback:monitor_1"
format.dsp = "32 bit float mono audio"
node.id = "56"
audio.channel = "FR"
port.id = "1"
port.name = "monitor_FR"
port.direction = "out"
port.monitor = "true"
port.alias = "ALC294 Analog:monitor_FR"
port.group = "playback"
id 69, type PipeWire:Interface:Port/3
object.serial = "69"
object.path = "alsa:acp:Generic_1:0:capture:capture_0"
format.dsp = "32 bit float mono audio"
node.id = "57"
audio.channel = "FL"
port.id = "0"
port.name = "capture_FL"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "ALC294 Analog:capture_FL"
port.group = "capture"
id 70, type PipeWire:Interface:Port/3
object.serial = "70"
object.path = "alsa:acp:Generic_1:0:capture:capture_1"
format.dsp = "32 bit float mono audio"
node.id = "57"
audio.channel = "FR"
port.id = "1"
port.name = "capture_FR"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "ALC294 Analog:capture_FR"
port.group = "capture"
id 71, type PipeWire:Interface:Node/3
object.serial = "71"
object.path = "v4l2:/dev/video0"
factory.id = "11"
client.id = "45"
device.id = "62"
priority.session = "1000"
node.description = "USB2.0 HD UVC WebCam (V4L2)"
node.name = "v4l2_input.pci-0000_03_00.4-usb-0_2.1_1.0"
node.nick = "USB2.0 HD UVC WebCam"
media.class = "Video/Source"
media.role = "Camera"
id 72, type PipeWire:Interface:Port/3
object.serial = "72"
object.path = "v4l2:/dev/video0:capture_0"
node.id = "71"
port.id = "0"
port.name = "capture_1"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "USB2.0 HD UVC WebCam:capture_1"
port.group = "stream.0"
id 73, type PipeWire:Interface:Client/3
object.serial = "73"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1084"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "GNOME Volume Control Media Keys"
id 74, type PipeWire:Interface:Client/3
object.serial = "74"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1084"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "GNOME Shell Volume Control"
id 75, type PipeWire:Interface:Client/3
object.serial = "75"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1189"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "gnome-shell"
id 76, type PipeWire:Interface:Client/3
object.serial = "81"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1084"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "flatpak"
pipewire.client.access = "flatpak"
application.name = "Chromium input"
id 77, type PipeWire:Interface:Client/3
object.serial = "93"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1084"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "flatpak"
pipewire.client.access = "flatpak"
application.name = "Chromium"
id 78, type PipeWire:Interface:Node/3
object.serial = "94"
factory.id = "7"
client.id = "77"
client.api = "pipewire-pulse"
application.name = "Chromium"
node.name = "Chromium"
media.class = "Stream/Output/Audio"
id 79, type PipeWire:Interface:Link/3
object.serial = "97"
factory.id = "21"
client.id = "37"
link.output.port = "80"
link.input.port = "58"
link.output.node = "78"
link.input.node = "55"
id 80, type PipeWire:Interface:Port/3
object.serial = "95"
object.path = "Chromium:output_0"
format.dsp = "32 bit float mono audio"
node.id = "78"
audio.channel = "FL"
port.id = "0"
port.name = "output_FL"
port.direction = "out"
port.alias = "Chromium:output_FL"
port.group = "stream.0"
id 81, type PipeWire:Interface:Link/3
object.serial = "98"
factory.id = "21"
client.id = "37"
link.output.port = "82"
link.input.port = "60"
link.output.node = "78"
link.input.node = "55"
id 82, type PipeWire:Interface:Port/3
object.serial = "96"
object.path = "Chromium:output_1"
format.dsp = "32 bit float mono audio"
node.id = "78"
audio.channel = "FR"
port.id = "1"
port.name = "output_FR"
port.direction = "out"
port.alias = "Chromium:output_FR"
port.group = "stream.0"
id 83, type PipeWire:Interface:Client/3
object.serial = "100"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "18994"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "1000"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "pw-cli"~
❯ cat .config/pipewire/pipewire.conf.d/99-high-sample-rate.conf
context.properties = {
default.clock.allowed-rates = [ 44100, 48000, 96000, 176400, 192000, 352800, 384000 ]
}~
❯ wpctl status
PipeWire 'pipewire-0' [1.4.9, icar@asus-arch-icar, cookie:2946276335]
└─ Clients:
33. libcanberra [1.4.9, icar@asus-arch-icar, pid:1687]
34. Mutter [1.4.9, icar@asus-arch-icar, pid:1189]
35. libcanberra [1.4.9, icar@asus-arch-icar, pid:1690]
36. xdg-desktop-portal [1.4.9, icar@asus-arch-icar, pid:1964]
37. WirePlumber [1.4.9, icar@asus-arch-icar, pid:15889]
45. WirePlumber [export] [1.4.9, icar@asus-arch-icar, pid:15889]
73. GNOME Volume Control Media Keys [1.4.9, icar@asus-arch-icar, pid:1687]
74. GNOME Shell Volume Control [1.4.9, icar@asus-arch-icar, pid:1189]
75. gnome-shell [1.4.9, icar@asus-arch-icar, pid:1189]
76. Chromium input [1.4.9, icar@asus-arch-icar, pid:156]
77. Chromium [1.4.9, icar@asus-arch-icar, pid:156]
83. wpctl [1.4.9, icar@asus-arch-icar, pid:19145]
Audio
├─ Devices:
│ 46. Raven/Raven2/Fenghuang HDMI/DP Audio Controller [alsa]
│ 47. MOONDROP Dawn Pro [alsa]
│ 48. Ryzen HD Audio Controller [alsa]
│
├─ Sinks:
│ * 55. MOONDROP Dawn Pro Pro [vol: 0.60]
│ 56. Ryzen HD Audio Controller Estèreo analògic [vol: 0.50]
│
├─ Sources:
│ * 57. Ryzen HD Audio Controller Estèreo analògic [vol: 0.16 MUTED]
│
├─ Filters:
│
└─ Streams:
78. Chromium
80. output_FL > MOONDROP Dawn Pro:playback_AUX0 [active]
82. output_FR > MOONDROP Dawn Pro:playback_AUX1 [active]
Video
├─ Devices:
│ 62. USB2.0 HD UVC WebCam [v4l2]
│ 63. USB2.0 HD UVC WebCam [v4l2]
│ 64. USB2.0 HD UVC WebCam: USB2.0 HD [libcamera]
│
├─ Sinks:
│
├─ Sources:
│ * 71. USB2.0 HD UVC WebCam (V4L2)
│
├─ Filters:
│
└─ Streams:
Settings
└─ Default Configured Devices:
0. Audio/Sink alsa_output.usb-MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro-00.pro-output-0
1. Audio/Source alsa_input.pci-0000_03_00.6.analog-stereo
~ I am trying to make it switch automatically to the requested frequency, and afaiu, the issue is that ALSA is not telling Pipewire the supported frequencies because I can't see it specified in places like pw-cli list-objects.
Last edited by icar (2026-01-02 00:17:25)
Offline
Get rid of that ALSA config and install pipewire-alsa so that ALSA using applications are routed via pipewire.
Check with
pactl list sink-inputs
pactl list sinkswhich rates you are actually receiving. Chances that electron/chromium just downsamples whatever "should be" the rate you get are very high, test with actual local files and actual clients that you know can be told to not resample themselves (e.g. paplay or so for FLACs)
Last edited by V1del (2025-12-31 17:26:48)
Offline
Thanks for your time, V1del.
I already had pipewire-alsa installed. I can see the relevant thing of that package happens in /etc/alsa/conf.d/99-pipewire-default.conf.
Here are the two commands:
~
❯ pactl list sink-inputs
~
❯ pactl list sinks
Sink #56
State: SUSPENDED
Name: alsa_output.pci-0000_03_00.6.analog-stereo
Description: Ryzen HD Audio Controller Estèreo analògic
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 29500 / 45% / -20,80 dB, front-right: 29500 / 45% / -20,80 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: alsa_output.pci-0000_03_00.6.analog-stereo.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
Properties:
alsa.card = "1"
alsa.card_name = "HD-Audio Generic"
alsa.class = "generic"
alsa.components = "HDA:10ec0294,10431b11,00100004"
alsa.device = "0"
alsa.driver_name = "snd_hda_intel"
alsa.id = "ALC294 Analog"
alsa.long_card_name = "HD-Audio Generic at 0xfe7c0000 irq 67"
alsa.mixer_name = "Realtek ALC294"
alsa.name = "ALC294 Analog"
alsa.resolution_bits = "16"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
api.alsa.card.longname = "HD-Audio Generic at 0xfe7c0000 irq 67"
api.alsa.card.name = "HD-Audio Generic"
api.alsa.path = "front:1"
api.alsa.pcm.card = "1"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
card.profile.device = "3"
device.api = "alsa"
device.bus = "pci"
device.class = "sound"
device.icon_name = "audio-card-analog"
device.id = "48"
device.profile.description = "Estèreo analògic"
device.profile.name = "analog-stereo"
device.routes = "2"
factory.name = "api.alsa.pcm.sink"
media.class = "Audio/Sink"
device.description = "Ryzen HD Audio Controller"
node.name = "alsa_output.pci-0000_03_00.6.analog-stereo"
node.nick = "ALC294 Analog"
node.pause-on-idle = "false"
object.path = "alsa:acp:Generic_1:3:playback"
port.group = "playback"
priority.driver = "1009"
priority.session = "1009"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "46"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "55"
object.serial = "56"
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "1"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio1"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus_path = "pci-0000:03:00.6"
device.enum.api = "udev"
device.name = "alsa_card.pci-0000_03_00.6"
device.nick = "HD-Audio Generic"
device.plugged.usec = "15149295"
device.product.id = "0x15e3"
device.product.name = "Ryzen HD Audio Controller"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:03:00.6/sound/card1"
device.vendor.id = "0x1022"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
spa.object.id = "4"
device.string = "1"
Ports:
analog-output-speaker: Altaveus (type: Speaker, priority: 10000, availability group: Legacy 3, availability unknown)
analog-output-headphones: Auriculars (type: Headphones, priority: 9900, availability group: Legacy 4, not available)
Active Port: analog-output-speaker
Formats:
pcm
Sink #74
State: SUSPENDED
Name: alsa_output.usb-MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro-00.pro-output-0
Description: MOONDROP Dawn Pro Pro
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: aux0,aux1
Owner Module: 4294967295
Mute: no
Volume: aux0: 65536 / 100% / 0,00 dB, aux1: 65536 / 100% / 0,00 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: alsa_output.usb-MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro-00.pro-output-0.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY
Properties:
alsa.card = "2"
alsa.card_name = "MOONDROP Dawn Pro"
alsa.class = "generic"
alsa.components = "USB2fc6:f06a"
alsa.device = "0"
alsa.driver_name = "snd_usb_audio"
alsa.id = "USB Audio"
alsa.long_card_name = "MOONDROP MOONDROP Dawn Pro at usb-0000:03:00.3-2, high speed"
alsa.mixer_name = "USB Mixer"
alsa.name = "USB Audio"
alsa.resolution_bits = "32"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
api.alsa.card.longname = "MOONDROP MOONDROP Dawn Pro at usb-0000:03:00.3-2, high speed"
api.alsa.card.name = "MOONDROP Dawn Pro"
api.alsa.path = "hw:2,0"
api.alsa.pcm.card = "2"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "AUX0,AUX1"
card.profile.device = "0"
clock.name = "api.alsa.2"
device.api = "alsa"
device.bus = "usb"
device.class = "sound"
device.icon_name = "audio-card-analog"
device.id = "67"
device.profile.description = "Pro"
device.profile.name = "pro-output-0"
device.profile.pro = "true"
device.routes = "0"
factory.name = "api.alsa.pcm.sink"
media.class = "Audio/Sink"
device.description = "MOONDROP Dawn Pro"
node.name = "alsa_output.usb-MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro-00.pro-output-0"
node.nick = "MOONDROP Dawn Pro"
node.pause-on-idle = "false"
object.path = "alsa:acp:Pro:0:playback"
port.group = "playback"
priority.driver = "1600"
priority.session = "1600"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "46"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "68"
object.serial = "74"
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "2"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio2"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus-id = "usb-MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro-00"
device.bus_path = "pci-0000:03:00.3-usb-0:2:1.0"
device.enum.api = "udev"
device.name = "alsa_card.usb-MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro-00"
device.nick = "MOONDROP Dawn Pro"
device.plugged.usec = "99261472"
device.product.id = "0xf06a"
device.product.name = "MOONDROP Dawn Pro"
device.serial = "MOONDROP_MOONDROP_Dawn_Pro_MOONDROP_Dawn_Pro"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:03:00.3/usb1/1-2/1-2:1.0/sound/card2"
device.vendor.id = "0x2fc6"
device.vendor.name = "Comtrue Inc."
spa.object.id = "6"
device.string = "2"
Formats:
pcmHappy new year!
Last edited by icar (2026-01-01 23:49:47)
Offline
Update: downloaded a sample file from https://msbtechnology.com/support/bit-perfect-testing/ ("24 bit x 384 kHz sample rate file.") and played it with mpv. After selecting in pavucontrol S/PDIF Digital Output (instead of Pro Audio) it did work.
Indeed Tidal Electron client is not working, so I blame the client. I'll keep that in mind.
Offline
FYI, I've been using https://github.com/Nokse22/high-tide which does indeed work with high quality FLACs.
For example with this random headset:
R 110 4096 96000 29,4us 10,0us 0,00 0,00 0 S24LE 2 96000 alsa_output.usb-HP__Inc_HyperX_Cloud_III_000000000000-00.analog-stereo
R 89 8192 96000 15,2us 10,4us 0,00 0,00 0 F32LE 2 96000 + high-tideSame with the DAC.
Offline