Has anyone tried a CX31993 USB DAC with FreeBSD?

No.

However, I tried numerous USB class compliant devices on FreeBSD and they worked fine. Basically if it says it is iPad compatible it will probably work.
 
Just for interest I ordered a "nice-hck" ALC5686 one as well, that one cost me 13 GBP. They are probably even cheaper on aliexpress. That DAC has some interesting features:-

It's pocket money prices so it's worth a try. I will report back if either of them work with freebsd.
 
Last edited:
A major problem all of those cheap dongles seem to have is a delayed output/fade in, so the first ~0.3-0.5sec of playback are missing:


Otherwise, those cheap one-chip solutions nowadays offer pretty reasonable sound quality for their price. (Certainly better than most onboard chips that suffer heavily from EMI noise, cross-talk and noisy power supply)


Regarding compatibility: As cracauer@ already mentioned, anything that registers as a USB HID audio device will be picked up by the uaudio driver and work just fine.
 
Otherwise, those cheap one-chip solutions nowadays offer pretty reasonable sound quality for their price. (Certainly better than most onboard chips that suffer heavily from EMI noise, cross-talk and noisy power supply)
Perhaps surprisingly I've had very good results from my mini-pc's onboard ALC269VC. No cross-talk or emi etc, or mains hum, certainly nothing I can hear. That machine is just a cheap N100 mini-pc from aliexpress. And my thinkpad X201's ancient onboard connexant chip also gives reasonable results. Yes I've heard other people say onboard sound chips are rubbish but I haven't seen that myself. Maybe I've just been lucky. Or... maybe both the machines I'm using are laptop type chipsets and boards without the big standard PC psu, who knows.

Anyhow it will be interesting to see if these cheap usb devices are any better, the codec chips themselves are both higher grade than my onboard one.
 
Last edited:
Perhaps I should add... I'm not using the onboard amp to drive headphones directly, on the mini-pc. I have an external class A headphone amp powered from a decent quality linear regulated psu. Using the separate amp and psu to drive HD6XX's and other headphones certainly improves the sound quality, adding the good PSU to the mix made a very noticable improvment. I will try this setup with the usb dacs, as well as testing what they are like to listen to directly, although I'm guessing they're probably intended to drive low power devices like earbuds rather than midrange headphones.
 
Hmm ASR liked that JCALLY JM20, for sure. Nice performance. I noticed max power 13 mw for 300 ohm load, so using the separate headphone amp to buffer it should definitely help with the 6XX's. Very likely the ones I've already ordered have similar driving characteristics. It stands to reason you're not going to get much output drive power from the tiny on-chip amp, especially into higher load impedances.
 
Last edited:
I found the JM20 on ali for 15 quid so I've ordered one of those as well. Should be fun to try these out. :)
(I'd better not buy any more! 😂 )
 
Regarding compatibility: As cracauer@ already mentioned, anything that registers as a USB HID audio device will be picked up by the uaudio driver and work just fine.

There is one complication: there are audio devices that have their basic playback functionality exported as class compliant, but they have USB controls for things like audio routing that have to be controlled by custom apps. Whether any output happens at all if those control apps are missing is device-dependent. Sound Devices' MixPre 1 is such an example that is registering as class compliant but useless since by default nothing is routed.

But as I said, if it says "iPad compatible" that should work all the way. Thanks Apple.
 
For this kind of pocket money I'm not going to worry too much if they don't work. Just a little experiment to satisfy my curiosity. :)
 
So far I have received the JM20 (cirrus logic CS43131) and the NICE-HCK (realtek ALC5686) usb dac's, I'm still waiting to receive the conexant CX31993.

Both the JM20 and NICE-HCK work fine with freebsd 14.3-RELEASE, I tested them on my thinkpad, both with a pair of sennheiser HD560S headphones. The JM20 has noticably more drive power, so a more powerful output amp, and the construction is a bit more robust than the NICE-HCK, although both of them look physically quite fragile, the multi-strand connecting cable between the usb plug and the floating jack socket looks pretty fragile in both of them, so I'm not sure how long they would last; I can see one or more of the fine cores in those cables breaking after a while. Apart from the volume level, I really couldn't tell the difference between them for sound quality, they both sound very good. The JM20 came with no accessories, whereas the NICE-HCK came with a usb C to usb A adapter, two carrying cases, and a pack of spare earbud rubber earpieces!

I tried setting hw.snd.default_auto to 1 which the man page says is supposed to automatically set the most recently plugged in device to the current default unit, but it didn't work, I had to manually cat /dev/sndstat and set hw.snd.default_unit to get them to work.

I didn't notice any problems with fade-in or any other artefacts... clicks, pops, hum, etc; they both sound excellent. The NICE-HCK one is a bit quieter with the HD560S 120 ohm headphones but would probably be much louder with low-impedance earbuds (which I don't have available). Just for fun I tried the JM20 with my 300 ohm sennheiser HD6XX (aka HD650) and found they work fine, its got enough drive power for those too, so there's a good headphone amp in the JM20 / CS43131.

When I get the CX31993 I'll give them a bit more of a test.
 
I received the CX31993 now and have tried all three. The bottom line is they all work fine with freebsd 14.3. I tested them with my thinkpad X201 and Sennheiser HD560S headphones. Configuration consists of plugging it in, cat'ing /dev/sndstat to see which device number was assigned, and then setting that value to the hw.snd.default_unit sysctl.

In the photo below, the CX31993 is at the top, the JM20 is in the middle and the NICE-HCK is at the bottom.

usbdacs.jpg


A few observations.

Each unit consists of a USB-C plug containing the electronics, a multi-strand connecting cable (variously described as 'silver' or 'silver plated') and a floating 3.5 mm jack socket. There were claims that silver or silver-plated wire improves the sound quality... well, how much difference a couple of inches of silver wire will make when connected to about 1-2m of copper headphone cable, I really don't know.

They all have different strengths and weaknesses.

Connector build quality: the CX31993 looked the best, with high quality metal parts, then the JM20, then the NICE-HCK which appeared to have a slightly cheap-looking metallised plastic plug.

Cable build quality: all three had what are claimed to be silver multi-strand cables, with no overall outer casing. The JM20 cable looked the most robust and the CX31993 the most fragile. All three of the cables concerned me, they want to show off the silver wire, so they omit an overall jacket, however that leaves the cable strands vulnerable to damage. Memories of bending cables with broken cores to try to get a connection in the old days come to mind. The cable on the CX31993 in particular looked like it wouldnt stand up to much rough handling, in contrast to the high quality connectors they've used. I guess if the device is wired into a static system where the cable isn't moved around much it wouldn't matter. But if it's shoved in a pocket with some earbuds and pulled out and put back every time it's used, perhaps none of them are going to last very long. Of course once one of those delicate cores is broken there is really no way to repair the thing. They are all one-time assembly, there's no way to take them apart without destroying them, or not that I could see.

Accessories. The JM20 came with nothing, not even a USB C to A adapter, just a little cardboard box. The CX31993 came in a steel presentation tin with a USB C to A adapter; and the NICE-HCK came with a USB C-to-A adapter, two cloth carrying cases, and a set of spare rubber earbud earpieces in a carrying case, so you get a LOT of accessories with the NICE-HCK, and they might be useful for someone who uses earbuds.

Sound quality. All three are good, but I thought the JM20 sounded the best overall with my 120 ohm headphones. However that might not be a very fair test as I suspect these are mainly intended to be used with low-impedance earbuds. I got the impression the JM20's dac chip has the best headphone amplifier of the three, it seemed to have a bit more power than the other two; in fact the JM20 was the only one of the three that had as much drive power as the thinkpad's own audio output through the headphone socket. If I was chosing from them purely on sound quality, I would get the JM20 - with the proviso that I've only tested them on the HD560S's; the other two might well be great with lower impedance phones or earbuds.

Value for money. I paid 8 GBP for the CX31993, 13 pounds for the NICE-HCK and 15 pounds for the JM20. So the JM20 was almost twice the price of the CX31993, and it came with the least amount of accessories.

Noise and other artefacts: I didn't notce any audible sign of problems with fade-in, pops or clicks, hum, or anything else with any of them. All three of them worked fine.

Were any of them audibly significantly better than the thinkpad's own audio output through the headphone socket? Not much. The thinkpad has an older conexant sound chip, and I strongly suspect a separate dedicated headphone amp chip driving the headphone socket, since it has plenty of output power. The JM20 was perhaps slightly better than the thinkpad, although the differences are pretty small; and the other two usb dacs had less drive power than the thinkpad. It might be that if I had a pair of high-end 2000-GBP Focal headphones I might be able to hear a real difference, but with the HD560s the JM20 sounded just about the same as the thinkpad headphone socket. Which I was ever so slightly disappointed at. What differences there are, are very subtle. They both (thinkpad and JM20) sound pretty good to my ears. Doh, there goes my career as a golden-eared hifi reviewer...

Right, I'm off to get a hifi mains plug for my laptop mains adapter.... 😁
 
I found the CS43131 data sheet here: https://statics.cirrus.com/pubs/proDatasheet/CS43131_DS1155F2.pdf

I noticed it says:-
"Integrated high performance, ground-centered stereo
headphone outputs
— 130-dB dynamic range (A-weighted)
— –115-dB total harmonic distortion + noise (THD+N)
— 110-dB interchannel isolation
— Up to 2-Vrms stereo output
— Headphone power output
– 30 mW per channel into 32 
– 5 mW per channel into 600 
• Headphone detection
— Headphone DC and AC impedance measurement
— Headphone plug-in detection
— Popguard® technology eliminates pop noise"

and

"The integrated ground-centered stereo headphone amplifiers are capable of delivering more than 30 mW into 32- load
or 5 mW into 600- load per channel at full performance. It is also capable of generating 2 V rms on a 600- load.
Proprietary headphone impedance detection enables wide-band impedance detection for further digital post-processing"

So they sense the impedance of the attached headphones, and then optimise the system to drive the headphones that are currently plugged in. In other words, it's a fancy headphone amplifier. Perhaps that explains the better sound quality I got with the JM20 compared with the other two chips when using my 120 ohms HD560S headphones. Pretty impressive sound quality for the price.
 
Value for money. I paid 8 GBP for the CX31993, 13 pounds for the NICE-HCK and 15 pounds for the JM20. So the JM20 was almost twice the price of the CX31993, and it came with the least amount of accessories.

Where did you find the JM20 for that price? Sellers on amazon US want a lot more.
 
After plugging it in, /dev/sndstat lists it as
pcm4: <Shenzhen CBHT Technology Co., Ltd CS43131 HIFI Audio> (play)

So you have to hope it's got a genuine CS43131 in it and not something else... it probably has, it sounds pretty good. It has CS43131 printed on the usb plug too. But its all encapsulated, you can't see the circuit board. Not that that would help you much nowadays.

The writing on the plug reads :-
JM20 CS43131 DSD256
PCM32bits 384KHz

Possibly from this company, although I'm not 100% certain http://cbht-micro.com/
 
Interesting... when I plug it into linux, the lsusb id string for the JM20 comes up as "SAVITECH Corp. CS43131 HIFI Audio". So that would point to this taiwan audio company, which makes more sense. CBHT looks more like a semiconductor merchants, but I can't read mandarin.


Interesting that it shows up with a different ID string on linux than on freebsd! I'm not going to worry about it, not at that price, it sounds pretty good anyway :)
 
Remember to get yourself a usb C to A adapter while you're ordering it, mine didn't come with one. Unless your pc already has usb-c of course.
 
But as I said, if it says "iPad compatible" that should work all the way. Thanks Apple.

Not an Apple developer so this might be stupid question, but iPad apps cannot generically access USB, only through class-compliant abstraction?

This could be used as a good marketing gizmo for FreeBSD audio peripherals. "If it works on iPad, it works for us".
 
Back
Top