• Welcome to ASR. 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!

On the Distortion of Cirrus Logic CS431xx-Based Devices: A Comparative Review

How would this review influence your purchase decision of a device employing Cirrus Logic CS431xx?

  • Going forward I will not buy a device if it adopts any Cirrus Logic DAC chip.

    Votes: 15 9.0%
  • I would not consider any device with CS431xx.

    Votes: 19 11.4%
  • I'd consider a device with CS431xx only if it's been tested free of the "Cirrus hump" distortion.

    Votes: 90 53.9%
  • I don't care about this distortion issue and would just consider the device's other features.

    Votes: 43 25.7%

  • Total voters
    167
Is it not possible to upgrade firmware to cheap CS43131 such as JM20 to a firmware from another CS43131 device with NOS filter option? or no such device exists where you can upgrade its firmware and said firmware is also compatible with JM20?

Edit: I think FiiO KA11 allows to change it's filter to non oversampled filter. KA11 should be similar to JM20 Max I think? maybe one can load 0.08 firmware to JM20 Max and enable NOS filter into JM20 Max with the FiiO control app? would be nice to test.
The CS43131 chip is a DAC/Amp chip. The FW we’re talking about are for the USB bridge chip—XMOS, Comtrue, Savitech, CBHT, etc.—and they incorporate the CS43131 configuration parameters: registers values, initialization function callouts, and so on.

So, unless the USB bridge is exactly the same between two CS43131-based DAC/dongles, and the internal wiring is also exactly the same (com. interfaces, GPIOs), FWs are most likely not interchangeable.

This is different for a SoC including all the Bridge/DSP/DAC/Amp features such as the FiiO JA11 vs. JCally JM12: they are both using the same KT02H20 single chip.
 
Last edited:
The CS43131 chip is a DAC/Amp chip. The FW we’re talking about are for the USB bridge chip—XMOS, Comtrue, Savitech, CBHT, etc.—and they incorporate the CS43131 configuration parameters: registers values, initialization function callouts, and so on.

So, unless the USB bridge is exactly the same between two CS43131-based DAC/dongles, and the internal wiring is also exactly the same (com. interfaces, GPIOs), FWs are most likely not interchangeable.

This is different for a SoC including all the Bridge/DSP/DAC/Amp features such as the FiiO JA11 vs. JCally JM12: they are both using the same KT02H20 single chip.

KA11 and JM20 Max seem to use the same SA9312L USB bridge. But as far as internal wiring, who knows. I would bet they are the same also in that regard. We just need someone to try to upgrade the firmware.
 
KA11 and JM20 Max seem to use the same SA9312L USB bridge. But as far as internal wiring, who knows. I would bet they are the same also in that regard. We just need someone to try to upgrade the firmware.
People will be reluctant to take the risk of bricking it. So, I served as your guinea pig :) Flashing the FiiO KA11 firmware to the JM20 Max was successful. Now the dongle is recognized as "FIIO KA11." But unfortunately, its filter setting cannot be changed from the Android FiiO app. It is changed on screen but has no actual effect (and whenever plugged in again the setting reverts back to default). Recording of test signals indicates it's not in the NOS mode.

Not sure if this is the case even with the FiiO KA11 (i.e., a bug of the firmware itself), though. At least, it works just as before. The only difference (other than the device label) is that it has a fade-in effect when audio starts after idling, which was not present with the stock FW. FiiO seems to always consider power saving as an important feature.

Now it cannot go back to its stock FW.
 
Last edited:
But unfortunately, its filter setting cannot be changed from the Android FiiO app. It is changed on screen but has no actual effect
Note that this would not be the first time FiiO Control shows options that are either not enabled or have no effect—e.g. H2/H3 harmonic compensation on the BTR13/Snowsky Retro Nano...
 
My TempoTec Variations V1 DAP has arrived. Sadly, there are no NOS on digital filter, only Fast LL, Fast PC, Slow LL, and Slow PC.

I think the Hiby R3Pro ii is the best choice, it has the NOS option.
 

Attachments

  • 20250723_232935.jpg
    20250723_232935.jpg
    142.1 KB · Views: 75
People will be reluctant to take the risk of bricking it. So, I served as your guinea pig :) Flashing the FiiO KA11 firmware to the JM20 Max was successful. Now the dongle is recognized as "FIIO KA11." But unfortunately, its filter setting cannot be changed from the Android FiiO app. It is changed on screen but has no actual effect (and whenever plugged in again the setting reverts back to default). Recording of test signals indicates it's not in the NOS mode.

Not sure if this is the case even with the FiiO KA11 (i.e., a bug of the firmware itself), though. At least, it works just as before. The only difference (other than the device label) is that it has a fade-in effect when audio starts after idling, which was not present with the stock FW. FiiO seems to always consider power saving as an important feature.

Now it cannot go back to its stock FW.

Thanks for the testing anyway, much appreciated.
 
People will be reluctant to take the risk of bricking it. So, I served as your guinea pig :) Flashing the FiiO KA11 firmware to the JM20 Max was successful. Now the dongle is recognized as "FIIO KA11." But unfortunately, its filter setting cannot be changed from the Android FiiO app. It is changed on screen but has no actual effect (and whenever plugged in again the setting reverts back to default). Recording of test signals indicates it's not in the NOS mode.
Thank you for doing this, I was about to try this to see if I'll be able to change the filter setting and to get ASIO support with FiiO drivers. (Savitech drivers are not signed properly and won't install unless I disable signature verification, which is a bad idea).

The only difference (other than the device label) is that it has a fade-in effect when audio starts after idling, which was not present with the stock FW.
Well, in my case the stock FW fades-in on stop, pause, fast forward, sample rate change (foobar on windows). On android it FF and pause normally without fade-in, unless I pause and switch to another app, then it will fade-in once play is pressed.

Btw, did you have a chance to try FiiO drivers, does ASIO and Native DSD work on windows? Is there any difference in tuning VS stock FW?

Thanks! :)
 
Thank you for doing this, I was about to try this to see if I'll be able to change the filter setting and to get ASIO support with FiiO drivers. (Savitech drivers are not signed properly and won't install unless I disable signature verification, which is a bad idea).
If that is what you're looking for, there is a benefit of flashing the FiiO FW. Its ASIO driver works.
1753313055376.png


Well, in my case the stock FW fades-in on stop, pause, fast forward, sample rate change (foobar on windows).
I remember someone else said this before, which was puzzling because I did not experience any fade-in or skip. Anyway, on the FiiO driver control panel I found this option:
1753313475070.png


1753313419902.png


And it works as intended. When it is set to 'Always On' there is no fade-in!

Btw, did you have a chance to try FiiO drivers, does ASIO and Native DSD work on windows?
ASIO works as said above. I do not play native DSD. By the way, why do you need ASIO? For general audio playback we do not need ASIO.

Is there any difference in tuning VS stock FW?
I don't understand what you mean here. Can you clarify?
 
  • Like
Reactions: o0o
Finally, I can hear the Dune soundtrack without crackling noise. I assume this issue is solved on my TRN Black Pearl.

---

Now that I know how the Dune soundtrack would normally sound, I checked this issue on my TempoTec V1 which also use dual CS43131. When I use it as a DAP, playing the Dune soundtrack, this crackling noise issue happened. Then, I try to use it as a PC DAC, playing the Dune soundtrack from my laptop, and the crackling noise happened as expected.

So, I try to use it as a Phone DAC, playing the Dune soundtrack from my android phone, it's normal without crackling noise. Then, I try to use it as a BT DAC for my android, playing the Dune soundtrack from my android phone, again it's normal without crackling noise. So I'm curious and went back to my laptop to try to use it as a BT DAC, playing the Dune soundtrack from my laptop, the crackling noise happened again.
 
If that is what you're looking for, there is a benefit of flashing the FiiO FW. Its ASIO driver works.
Great, thank you for checking!
Anyway, on the FiiO driver control panel I found this option: ... And it works as intended. When it is set to 'Always On' there is no fade-in!
The very same option is available with hiby drivers (same provider), and it also "fixes" the fade-in of FC3 (ES9281 SoC), for ex.
ASIO works as said above. I do not play native DSD. By the way, why do you need ASIO? For general audio playback we do not need ASIO.
I use ASIO with DAWs and to play DSD in native mode. I often prefer the way DACs sound in DSD (bypassing the PCM-path with it's filters, and other shenanigans).
I don't understand what you mean here. Can you clarify?
Sure, did you notice any difference in terms of sound after flashin FiiO FW?
 
Maybe I don't quite understand the graphs, but isn't NOS filter with 96KHz very good in practice and only producing artifacts in the very high ultrasonic range? why should that matter? if for some reason I need to use 96KHz instead of 192 or 384KHz, shouldn't that be ok too?
Also, what would you say is worse if, for some reason, we cannot even select more than 44.1 or 48KHz, NOS or regular filter? what is worse in terms of sound, those broken waves at the high end, or the instances where the cirrus hump is audible?
 
Maybe I don't quite understand the graphs, but isn't NOS filter with 96KHz very good in practice and only producing artifacts in the very high ultrasonic range? why should that matter? if for some reason I need to use 96KHz instead of 192 or 384KHz, shouldn't that be ok too?
Your question is valid. Quantization noise looks ugly from a technical, engineering viewpoint, but its audibility is questionable. Even at the 44.1 kHz Fs, possibly a more audible effect should be the roll-off, not the ultrasonic artifact. There's some discussion at ASR.

Also, what would you say is worse if, for some reason, we cannot even select more than 44.1 or 48KHz, NOS or regular filter? what is worse in terms of sound, those broken waves at the high end, or the instances where the cirrus hump is audible?
This is a difficult question as it concerns audibility (which, as you know, involves subjective experience). If I had to, I would rather choose NOS with no host-side oversampling than having DRE artifacts. Right, in this sense, if even 96 kHz resampling is available, it'll be a no-brainer.
 
Since we are into the details of artifacts and low level distortion.
Low frequency PEQ with high frequency samplerate often intoduce distortion. If not 64 bit prosessor. How is this implementation?
 
Low frequency PEQ with high frequency samplerate often intoduce distortion. If not 64 bit prosessor. How is this implementation?
Would you be more specific with some link(s) to such information?
 
Tried to find the Texas Instruments article about it, but could not find it.
But it is easy to measure.
Use max samplerate
Use minimum PEQ frequency. 1 db lift should be enough.
Measure normal THD at PEQ frequency with and without PEQ
 
the fundamental reason, IMO, is that filter coefficients are often
based on the value:

cos(2*pi*f0/Fs)

where f0 is the "significant frequency" whatever type filter you have
and Fs is the sampling frequency. the problem with cos(w) when w is
very small is that it gets so close to 1 and all of the information
about w is really contained in the difference cos(w) is from 1 (which
is around (w^2)/2). even with floating point representation, these
important bits drop off the edge of your finite precision word.
 
Back
Top Bottom