You are not logged in.
Hello,
I've recently aquired a used RME Hammerfall Multiface I and a RME HDSPe PCIe (PCI Express) Rev. 1.2 IMM which I put in a suitable chassis (an OWC Mercury Helios 3S), connected to my computer via Thunderbolt. I'm using Arch Linux with Pipewire installed. Within Pipwire I've installed JACK support as I wanted low latency support for audio.
Basically I got sound working with my setup (in the beginning I couldn't set the sample rate to a value higher than 48 kHz but after disabling "Sample Clock Source Locking" in alsamixer I could set the sample rate to 96 kHz, however, losing microphone support
).
But what's worrying me much more is that I can't set the buffersize ("Frames/Period" in QjackCtl) for JACK to anything else than 1024. Any other value generates totally distorted audio!
I've posted this to the RME forum before and someone from RME suspected it might have to do with the fact that, according to the manufacturer's description, the chassis isn't necessarily Linux compatible (however, I couldn't find any other chassis that mentioned the their chassis to be Linux compliant with an RME PCIe card...). So far I can only say it it *kind of* works but realtime audio isn't (which was really why I went this direction...).
So, if it's not the hardware's fault (which I'm not exactly sure of), what could I try e.g. within Pipewire or ALSA configs?
Thanks very much for any hints!
My machine:
OS: Arch Linux x86_64
Host: 20HGS1R90U ThinkPad T470s
Kernel: 6.6.87-rt54-arch1-2-rt-lts
CPU: Intel i7-7600U (4) @ 3.900GHz
Memory: 5672MiB / 23910MiBHere's some output from various commands
$ lsmod | grep snd_hdsp
snd_hdsp 94208 0
snd_rawmidi 53248 4 snd_seq_midi,snd_usbmidi_lib,snd_hdsp,snd_ump
snd_hwdep 20480 3 snd_usb_audio,snd_hda_codec,snd_hdsp
snd_pcm 200704 15 snd_soc_avs,snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,soundwire_intel,snd_sof,snd_hdsp,snd_sof_intel_hda_common,snd_compress,snd_soc_core,snd_sof_utils,snd_soc_skl,snd_hda_core,snd_pcm_dmaengine
snd 155648 25 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_sof,snd_hdsp,snd_timer,snd_compress,thinkpad_acpi,snd_soc_core,snd_ump,snd_pcm,snd_rawmidi
# lspci -k -v
06:00.0 Multimedia audio controller: Xilinx Corporation RME Hammerfall DSP (rev 3c)
Subsystem: Xilinx Corporation Device 0000
Flags: bus master, fast devsel, latency 0, IRQ 18
Memory at c4000000 (32-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [48] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [58] Express Endpoint, IntMsgNum 0
Capabilities: [100] Device Serial Number 00-00-00-01-01-00-0a-35
Kernel driver in use: snd_hdsp
Kernel modules: snd_hdsp
07:00.0 USB controller: Intel Corporation JHL7440 Thunderbolt 3 USB Controller [Titan Ridge DD 2018] (rev 06) (prog-if 30 [XHCI])
Subsystem: OWC Device 001d
Flags: fast devsel, IRQ 132
Memory at c4100000 (32-bit, non-prefetchable) [size=64K]
Capabilities: [80] Power Management version 3
Capabilities: [88] MSI: Enable+ Count=1/8 Maskable- 64bit+
Capabilities: [c0] Express Endpoint, IntMsgNum 0
Capabilities: [100] Device Serial Number d3-2a-dc-a9-b5-e9-07-00
Capabilities: [200] Advanced Error Reporting
Capabilities: [300] Virtual Channel
Capabilities: [400] Power Budgeting <?>
Capabilities: [500] Vendor Specific Information: ID=1234 Rev=1 Len=100 <?>
Capabilities: [600] Vendor Specific Information: ID=8086 Rev=2 Len=04c <?>
Capabilities: [700] Secondary PCI Express
Capabilities: [800] Latency Tolerance Reporting
Kernel driver in use: xhci_hcd
Kernel modules: xhci_pci
$ boltctl
● Other World Computing Mercury Helios 3S
├─ type: peripheral
├─ name: Mercury Helios 3S
├─ vendor: Other World Computing
├─ uuid: 00b5a9dc-2ad3-5a00-ffff-ffffffffffff
├─ generation: Thunderbolt 3
├─ status: authorized
│ ├─ domain: be030000-0082-8088-207e-61045661c91e
│ ├─ rx speed: 40 Gb/s = 2 lanes * 20 Gb/s
│ ├─ tx speed: 40 Gb/s = 2 lanes * 20 Gb/s
│ └─ authflags: boot
├─ authorized: Sun Aug 17 13:11:09 2025
├─ connected: Sun Aug 17 13:11:09 2025
└─ stored: Tue Aug 5 15:48:19 2025
├─ policy: auto
└─ key: noLast edited by nuftes (2025-08-17 14:45:54)
Offline
Just one more observation - I've created some sound using SuperCollider. The following code plays a sine wave at 220 Hz in the left speaker and another sine wave at 221 Hz in the right speaker:
{ SinOsc.ar([220, 221], mul: 0.4} }.playWhile this was playing I switched the "Frames/Period" parameter in QjackCtl from 1024 to 512 and other values unequal to 1024. Any value other than 1024 produced distorted sound. At the same time I did a recording (while switching buffer sizes back and forth). To my surprise, when listening to the recordings there were no distortions at all!
So, I was was wondering what would happen if I I record some analog input (e.g. a microphone, routed through my mixer to an analog input on the back of my card). I've accomplished this in SuperCollider with this code (which is also playing the input to the speakers):
// first analog input of the soundcard, routed to speakers left and right
{ SoundIn.ar(0!2) }.play... some thing as in the first example: when switching to any other buffer size than 1024 the sound coming out of the speaker was completely distorted. I suspected that this time the distortions would also be audible in the recording but to my surprise - recording was clean!
My conclusion: It's not the converters that cause distortion. There's something else going on that I don't understand at all. I pretty clueless on how to debug this (besides various commandline calls and my SuperCollider tests). I understand too little about ALSA to say if there could be some remedy for my problem. Anyone else has some hints?
Thanks very much for your attention!
Offline
Just wanted to return to this thread briefly as I've been able to solve my problem. The key to the solution was pipewire-jack, respectively, not using pipewire-jack with PipeWire. I have meanwhile reinstalled my OS completely but this time I didn't install pipewire-jack, only Jack2 which I start from QjackCtl with JACK D-Bus interface activated. And - voilà! - I got PipeWire running on top of JACK. I can now do pro-audio work at 96 kHz sample rate at a latency of less than 0.7 ms and pretty decent CPU usage. Pipewire-jack and RME hdsp don't seem to be best friends...
Offline