• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Topping E50 light "crackle" sound on Linux (Pop OS 22.04/Ubuntu 22.04) with Pipewire and Wireplumber

CodeError

Member
Joined
Dec 16, 2022
Messages
8
Likes
1
Hi,

I was wondering if there are other people that have a similar problem with the Topping E50 under Linux (Pop OS/Ubuntu 22.04 and in all honesty it doesn't seem to be limited to the E50)
whenever I Play some music or watch netflix in the browser there is a slight crackle that seems like it has something to do with resampling or buffering.
In order to rule out any hardware problems. I tested the E50 on the same machine with Windows 10 (changed the nvme drive and installed windows 10) and the sound was fine (no crackle)
I switched back to Linux and tested another DAC (Matrix X-Sabre Pro) and that had the exact same problem as the Topping E50.
I also tested audio with a Jabra wireless headset I have attached and there is no sign of any crackle there.

I've used the guide on:

And tested the suggested settings in order to see if that would change anything but it didn't seem to help
Note that alsa-monitoring.conf is in 50-alsa-config.lua in my caser since I use Wireplumber (well the distribution does)
{
matches = {
{
{ "node.name", "matches", "alsa_output.usb-Topping_E50-00.analog-stereo" },
},
},
apply_properties = {
["node.nick"] = "Topping E50",
["node.description"] = "Topping E50 USB DAC",
["resample.quality"] = 4,
["resample.disable"] = false,
["channelmix.normalize"] = false,
["channelmix.mix-lfe"] = false,
["channelmix.upmix"] = true,
["channelmix.upmix-method"] = "psd", -- "none" or "simple"
["channelmix.lfe-cutoff"] = 150,
["channelmix.fc-cutoff"] = 12000,
["channelmix.rear-delay"] = 12.0,
["channelmix.stereo-widen"] = 0.0,
["channelmix.hilbert-taps"] = 0,
["channelmix.disable"] = false,
["audio.channels"] = 2,
["audio.format"] = "S32LE",
["audio.rate"] = 48000,
["audio.allowed-rates"] = "384000,352800,192000,176400,96000,88200,48000,44100",
["audio.position"] = "FL,FR",
["api.alsa.period-size"] = 256,
["api.alsa.period-num"] = 2,
["api.alsa.headroom"] = 1024,
["api.alsa.start-delay"] = 1024,
["api.alsa.disable-mmap"] = false,
["api.alsa.disable-batch"] = true,
["api.alsa.use-chmap"] = false,
["api.alsa.multirate"] = true,
["session.suspend-timeout-seconds"] = 0,
},
},

In pipewire.conf:
default.clock.rate = 48000
default.clock.allowed-rates = [ 48000 88200 96000 176400 192000 352800 384000 ]
default.clock.min-quantum = 1024

In pipewire-pulse.conf:
pulse.min.req = 1024/48000
pulse.min.quantum = 1024/48000

Does this sound familiar for someone? and if so any suggested fixes (besides switching back to Windows ;) )?
Thanks!
 

Thelo80

Member
Joined
Dec 13, 2022
Messages
34
Likes
13
Seems like a Topping E50 driver issue in Linux more than pipewire.
I have Motu M4 working with the alsa-ucm-conf config. But I don't see any Topping device config file there.

I have the default options in 50-alsa-config.lua with -- for all options. Not sure why you need all those delays of headroom and start.delay.
take a look at pw-top quantum output
Have you checked the total delay with pw-jack jack_iodelay with a loopback cable? Mine is 18ms with several 16384 taps FIR filters in brutefir. My buffer is 256 samples.
 
OP
C

CodeError

Member
Joined
Dec 16, 2022
Messages
8
Likes
1
Hi, thanks for the reply!
I haven't checked my delay, i'll check that out asap

With everything set to default I get:
quant 8192 F32LE 2 44100 for Spotify
quant 1024 F32LE 2 48000 for Chromium
quant 2048 S32LE 2 48000 for alsa_output topping e50

Where did you set the buffer btw?
 

Thelo80

Member
Joined
Dec 13, 2022
Messages
34
Likes
13
copy the /usr/share/pipewire folder to your user_home/.config/pipewire (my distro is Ubuntu)
and then go through all the files changing the clock. Rate and quantum max, default and minimum to what your system can manage.
If you are using Spotify you have to allow resampling from 44100 to 48000 if you find that option as false in any of the config files.

And then to run any program, in my case brutefir: pw-jack PIPEWIRE_LATENCY=256/48000 brutefir .brutefir_config
 

Thelo80

Member
Joined
Dec 13, 2022
Messages
34
Likes
13
Do you get the crackle sound with the default config? Smaller buffer is not going to improve the sound quality, just latency
I also have 1024 buffer for chromium. Do not where I can change its buffer
My system is also connected to the TV. That is why latency is critical
 

rentaclaus

Member
Joined
Nov 25, 2022
Messages
90
Likes
81
Can u tell which kernel version (uname -r) ?
And, which motherboard... bios version ?
Have you tried to change the usb cable ?
 

Thelo80

Member
Joined
Dec 13, 2022
Messages
34
Likes
13
Also the Topping buffer should be equal or smaller than any other buffer or you will get xruns
 
OP
C

CodeError

Member
Joined
Dec 16, 2022
Messages
8
Likes
1
First of all,

Thanks for the replies! and apologies for replying a bit late.
I've copied pipewire and wireplumber to my local dir
cp -a /usr/share/wireplumber ~/.config
cp -a /usr/share/pipewire ~/.config

And in order to mitigate some error messages that I noticed when checking the services
systemctl --user status wireplumber pipewire pipewire-pulse
I've disabled an non existing
~/.config/wireplumber/main.lua.d/51-my-libcamera-conf.lua
with content:
libcamera_monitor.enabled = false

And I got some error messages concerning the nice.level in config files:
~/.config/wireplumber/wireplumber.conf
so i just commented that out to:
#nice.level = -11
I did the same for:
~/.config/pipewire/pipewire.conf
~/.config/pipewire/pipewire-pulse.conf

I did not tweak the kernel with setting preempt=full
or setting RLIMITS (think this would need to be done together with the libpipewire-module-rt where i commented out nice.level)

Kernel settings I do have are:
usbcore.autosuspend=-1 iommu=pt amd_iommu=on
My kernel is:
6.0.2-76060002-generic
My Motherboard is:
MZ72-HB0



I've changed the usb cable and no difference (Supra cable) note that the exact same system performed flawlessly with windows 10
(i just swapped the nvme drive with a windows 10 install in order to test that)

The files I checked are:
~/.config/pipewire/pipewire.conf
~/.config/pipewire/pipewire-pulse.conf
~/.config/pipewire/client.conf
~/.config/pipewire/client-rt.conf
~/.config/pipewire/jack.conf
~/.config/wireplumber/wireplumber.conf
~/.config/wireplumber/main.conf
~/.config/wireplumber/main.lua.d/50-alsa-config.lua
I did also disabled suspend:
["session.suspend-timeout-seconds"] = 0

- Any pointers in checking if re-sampling is allowed?
- With the default settings I also get crackle
- I did read that setting the allowed-rates to multiple clocks (like 44100 and 48000, 88200 etc) can be buggy?

I disabled pipewire
When playing 192Khz Flac audio and select:
E50 default audio device; the USB DAC shows 48Khz and there is crackle
E50 direct sample device; the USB DAC shows 48Khz and there is crackle
E50 IEC958 S/PDIF digital output; the USB DAC shows 192Khz and there is crackle
E50 Direct hardware device without any conversions; the USB DAC shows 192Khz and there is crackle
E50 Direct hardware device with all software conversions; the USB DAC shows 192Khz and there is crackle
Jabra Headset No crackle at all

Enabled pipewire:
E50 default audio device; the USB DAC shows 48Khz and there is crackle
Jabra Headset No crackle at all

I get the same results as the Topping E-50 (crackle) with the Matrix X-Sabre dac (that usually sounds great in my non-PC setup) that also has reclocking on-board.
 
Last edited:

rentaclaus

Member
Joined
Nov 25, 2022
Messages
90
Likes
81
As the crackle occurs with and without pipewire, also with E50 and other DAC's I would concentrate on the motherboard and the kernel.

Is the bios up-to-date ?

I'm not familiar with epic, but e.g. on B550 boards there are 2 USB controllers (ASMEDIA and AMD) and there had been quite a long time some usb-disconnects.

Also you are using a non-official kernel, maybe you should try newer ones ?


BTW. I get an error for my jabra when booting, but it works...
" usb 5-1: 1:1: cannot set freq 48000 to ep 0x3"

maybe you should also check with "sudo dmesg" just to see if booting is without hidden issues.
 

Thelo80

Member
Joined
Dec 13, 2022
Messages
34
Likes
13
Two more checks:
1. Install the lowlatency kernel version with ubuntu studio installer

Tweak the rt config

2. Go back to jack and pulseaudio.

systemctl --user unmask pulseaudio
systemctl --user --now disable pipewire-media-session.service
systemctl --user --now disable pipewire pipewire-pulse
systemctl --user --now enable pulseaudio.service pulseaudio.socket
sudo apt remove pipewire-audio-client-libraries pipewire
sudo apt install jack2 qtjack

Configure qtjack to the buffer size and audio interface inputs and outputs
 

777

Senior Member
Joined
Jan 1, 2019
Messages
486
Likes
360
Did you have graphic card ? Or the graphic is integrated like AMD Ryzen "G" precessors ?
 
Joined
Jul 25, 2022
Messages
32
Likes
8
Hi,

I was wondering if there are other people that have a similar problem with the Topping E50 under Linux (Pop OS/Ubuntu 22.04 and in all honesty it doesn't seem to be limited to the E50)
whenever I Play some music or watch netflix in the browser there is a slight crackle that seems like it has something to do with resampling or buffering.
In order to rule out any hardware problems. I tested the E50 on the same machine with Windows 10 (changed the nvme drive and installed windows 10) and the sound was fine (no crackle)
I switched back to Linux and tested another DAC (Matrix X-Sabre Pro) and that had the exact same problem as the Topping E50.
I also tested audio with a Jabra wireless headset I have attached and there is no sign of any crackle there.

I've used the guide on:

And tested the suggested settings in order to see if that would change anything but it didn't seem to help
Note that alsa-monitoring.conf is in 50-alsa-config.lua in my caser since I use Wireplumber (well the distribution does)
{
matches = {
{
{ "node.name", "matches", "alsa_output.usb-Topping_E50-00.analog-stereo" },
},
},
apply_properties = {
["node.nick"] = "Topping E50",
["node.description"] = "Topping E50 USB DAC",
["resample.quality"] = 4,
["resample.disable"] = false,
["channelmix.normalize"] = false,
["channelmix.mix-lfe"] = false,
["channelmix.upmix"] = true,
["channelmix.upmix-method"] = "psd", -- "none" or "simple"
["channelmix.lfe-cutoff"] = 150,
["channelmix.fc-cutoff"] = 12000,
["channelmix.rear-delay"] = 12.0,
["channelmix.stereo-widen"] = 0.0,
["channelmix.hilbert-taps"] = 0,
["channelmix.disable"] = false,
["audio.channels"] = 2,
["audio.format"] = "S32LE",
["audio.rate"] = 48000,
["audio.allowed-rates"] = "384000,352800,192000,176400,96000,88200,48000,44100",
["audio.position"] = "FL,FR",
["api.alsa.period-size"] = 256,
["api.alsa.period-num"] = 2,
["api.alsa.headroom"] = 1024,
["api.alsa.start-delay"] = 1024,
["api.alsa.disable-mmap"] = false,
["api.alsa.disable-batch"] = true,
["api.alsa.use-chmap"] = false,
["api.alsa.multirate"] = true,
["session.suspend-timeout-seconds"] = 0,
},
},

In pipewire.conf:
default.clock.rate = 48000
default.clock.allowed-rates = [ 48000 88200 96000 176400 192000 352800 384000 ]
default.clock.min-quantum = 1024

In pipewire-pulse.conf:
pulse.min.req = 1024/48000
pulse.min.quantum = 1024/48000

Does this sound familiar for someone? and if so any suggested fixes (besides switching back to Windows ;) )?
Thanks!
Same problem here with a Raspberry Pi 4 and E50, after updating Moode version a few months ago. Before that it was working fine!
(so it seems to be a software/drivers issue)

On Windows 10/11 I don’t have that problem.
 
Last edited:

rentaclaus

Member
Joined
Nov 25, 2022
Messages
90
Likes
81
I've just seen that you only have 2 USB ports (3.0) on the rear.
Where is the DAC attached ? Front or rear ?
Other usb-ports are only via frontpanel (quite often problematic) and an additional USB-hub (https://www.realtek.com/en/products/computer-peripheral-ics/item/rts5411e). Realtek is known not to be first choice when it comes to quality ...

Also the onboard graphics (Aspeed ast2500) is connected to the hub, so it could disturb USB.

I'm afraid you have choosen the wrong tool (a server board, with server CPU) for the task.
 
OP
C

CodeError

Member
Joined
Dec 16, 2022
Messages
8
Likes
1
Thanks again for the replies!

Think I can bundle everything in one reply.

Mainboard and USB:
As for the mainboard and the USB controllers, yes I've seen a lot of issues with PCIe 4 and AMD on their recent processors.
Unfortunately this Mainboard/BIOS (most recent BIOS version installed) does not allow me to switch back to PCIe 3.0
and since I have a PCIe 4.0 NVMe drive and RTX3090Ti installed I assume the board is running in PCIe 4.0 mode.
I do have a USB card installed (to compensate for the lack of USB ports) it's a startech PEXUSB312A1C1H
(ASMedia - ASM3142 and Genesys Logic - GL3590) chips
- Note that I don't have any spontaneous disconnects on USB

Graphics Card:
- Nvidia RTX3090Ti

Kernel:
- I've installed the 6.0.6 kernel and there was no difference in terms of crackle (still crackle)
- Installed low latency kernel, no difference in terms of crackle

Revert back to Jack and PulseAudio:
=> !!Still have to test this!!

Jabra headset:
" usb 5-1: 1:1: cannot set freq 48000 to ep 0x3"
Yes I've the same message in the logs, seems to be a bug (read something about it somewhere, i'll try to find it).

Other systems:
E50 on Windows (The same dual Epyc system): No crackle
E50 on On an old intel NUC with Ubuntu 22.04 and kernel 6.0.6 all settings default: No crackle

About the hardware not really being suitable for a workstation, yes I have to agree with you on that one :(

The strange thing is that:
The Jabra 370 Headset produces no crackle
And
I've plugged in an USB Bluetooth dongle (asus) and paired it to a Sony MX3 headset, No crackle

=> I don't know HOW the MX3 presents itself to the system (not as a DAC i assume since it uses another module in pipewire?)

I'll check what happens if I disable Pipewire/Wireplumber and use Pulse and Jack
 

rentaclaus

Member
Joined
Nov 25, 2022
Messages
90
Likes
81
Let me tell you a story,

I once had a PC with windows on it ( W2000), it worked, but randomly crashed. No chance to reproduce the crashes. On the same computer I had linux, it worked, but crashed whenever I wanted to compile something (and at that time you had to compile alot). Finally I tried to install OS/2 on that computer, it refused to do so.
After changing the RAM against something reliable (Infineon at that time), all 3 OS worked without any hassles.
I prefered the habit of OS/2 ... don't touch faulty hardware ...

As I belive that you have tried all possible USB Connections (with 3 different 3 drivers)- have you ?. I'm sure the bug must reside somewhere into the ALSA usb-audio driver (because thats the part in common in all your scenarios). A switch to Jack won't change anything because Jack also sits atop of ALSA.

Best would be to contact the ALSA developers, maybe they can help you to get your fine machine working like a charm.
 
OP
C

CodeError

Member
Joined
Dec 16, 2022
Messages
8
Likes
1
Thanks for the suggestion!
Inspired by your story I've done some digging and it seems that this system is allergic USB hubs (spontaneous disconnects/reconnects)
so I've removed a Startech USB hub and the USB connections are all stable now.
However this didn't matter for the USB DAC crackle. the thing that I find puzzling is that playback through a simple USB dongle is completely crackle free,
I hoped I could just "copy" the working bluetooth settings, but unfortunately its completely different (that was to be expected of course)
so I assume the installation of a RT Kernel is not required (I'm not trying to build a DAW, just some audio playback during work)
I wonder if the amount of Cores is a factor in this, I've 2 CPU's 64 Cores each thus a total of 128 Cores and 256 Threads.

Think I might just ask the ALSA dev's if they have some kind of idea, thanks for the suggestion!
 

rentaclaus

Member
Joined
Nov 25, 2022
Messages
90
Likes
81
Please check if power-saving for usb is disabled, see

These days I had an interesting experience. I tried to lower the gain of my naim pre-amp by changing a resistor in feedback. Unfortunately I got delivered a 200 Ohm resistor instead of the needed 2kOhm. Result: gain was so high that I could hear every movement of the mouse and other electrical noises when the pre-amp was set to any other input. Only the input where the USB Dac was attached stayed to my surprise silent. Seems those Computers produce a lot of noises, and USB does a lot of filter ...
Luckily the seller of the resistor (mil-grade vishay) excused for his error and will send correct ones.

also kernel 6.2rc2 has a lot of usb-audio fixes. Maybe it's a lucky shot
 

rentaclaus

Member
Joined
Nov 25, 2022
Messages
90
Likes
81
the reason why the USB-dongle and USB-Jabra are crackle free, could be quite simple. Both use USB 1.0 full-speed while USB-Dacs (at least my SMSL D6 does) use USB 2.0 high-speed.
check by yourself, execute
"cat /proc/asound/cards"
 
OP
C

CodeError

Member
Joined
Dec 16, 2022
Messages
8
Likes
1
Ah yes you are right! the USB dingles are indeed 1.0 "Full Speed" and the DAC is 2.0 however bandwidth should not be an issue right?
I've tried the onboard usb 2.0 controller (motherboard) and that seemed to produce less crackle, then I installed a startech usb 2.0 controller (it uses a PCI to PCIe bridge chip) and also less crackle, the onboard 3.0 and PCIe Sonnet USB3-PRO-4P10-E (dual ASmedia 3142 full bandwidth per port, no hub) should have more then enough bandwidth (I assume).
One thing that was interesting is that deactivating Conky (I use that to show cpu load, temperatures, fan speed etc) significantly reduced crackle for the usb 2.0 controllers, it didn't have such an impact on the 3.0 controllers. (Conky gets the fan speeds from the Corsair Commander Pro that is attached to the USB 2.0 header on the Motherboard)
Then I opted to go a bit less "high end" and installed a Creative PCIe card the AE-5 and that produces no crackle at all on the analog out (there is also a optical spdif so need to test that as well)
Another thing I found was a list of "Bad" USB controllers (https://uadforum.com/community/index.php?threads/apollo-solo-usb-pops-crackling-in-playback.51593/):

AMD
ASMedia
Etron
Fresco Logic
Nvidia
Texas Instruments

Quite a lot, so that would leave Intel and Via?
 
Top Bottom