Audinst HUD-MX1USB DAC - sound volume very low

I'm running 14.4-RELEASE on a thinkpad X220.

I've done some tests with an Audinst HUD-MX1 usb dac. This is the dac: http://www.audinst.com/en/mx1?ckattempt=1 . It uses a wolfson WM8740 https://www.chipfind.net/datasheet/pdf/wolfson/wm8740.pdf .

It appears to work, except for one problem: the sound volume in the headphones is very low, even at full volume. On the same machine a JCALLY JM20 usb dac works perfectly, as do others I have tried. The Audinst works perfectly on another machine running debian, everything plays at full volume. The thinkpad onboard conexant dac with output at the thinkpad headphone socket also works perfectly. In fact every other dac I've tried worked right off in freebsd, this is the first one I've had a problem with.

It's pretty strange; its obviously working and getting a digital music stream from the usb connection, and converting it to analog; but the volume level in the headphones is extremely low. I can hear it if I turn the headphone amp volume up to the max, but the sound level is very low.

I have used 'mixer' to set both PCM and VOL to 100, and 'mixertui' confirms both are set to the maximum levels. I have also tried varying the value of hw.snd.vpd_0db but found it makes no difference to the audible volume. I am using OSS without any pulseaudio or pipewire or anything else on top. The problem is the same with mpd, mpv, or firefox. I am not using bitperfect, just the default settings.

Attached shows dmesg output from both the JM20 and the Audinst for comparison, and also mixer -a output and /dev/sndstat. The JM20 was pulled out before the audinst was plugged in. I checked /var/log/messages, it shows the same data as dmesg, I can see no error messages from the soundcards. The only real difference I can see if that the audinst supports lower sample rates than the JM20, in each case the driver has selected the highest supported rate.

I have tested the audinst a number of times with freebsd and get the same results consistently. On linux, it plays music at full volume, with high quality sound, so the dac itself appears to be working normally.

Any suggestions? Is there any more trace I can get out of the system to help debug it?
 

Attachments

Yes I tried that, it makes no difference to the sound level. I tried setting hw.snd.vpc_0db to various values including down to 1, and also tried above 40, it doesn't appear to change anything, it just stays at the same very quiet volume level in the headphones. I tried playing a .flac this morning to see if that is any different from .mp4, but it's exactly the same.

The strange thing is I can actually hear the music, it is being played correctly, it's just very quiet. There's no crackling or pops or other artefacts. It's as if the volume has been divided by 8 or 16. I've tested 4 or 5 other dacs with freebsd on this same machine and they all worked fine out of the box, except for this one.

I have looked through the manpage, I tried changing the feeder_rate_quality as well but that didn't make any difference. The vchanformat is s16le:2.0, as expected. I tried changing vchanmode to passthrough, no difference.
I tried changing the setting of mixer_bypass, but again no difference.

I noticed hw.snd.vpc_reset is set to 0 by default, and if I try to set it to 1, it stays set at 0; it will not allow root to set it to 1, which contradicts the manpage.

I set verbosity to max, /dev/sndstat attached below. I can't see any error messages in the output.
Perhaps this is just one dac that isn't going to work with freebsd, not out of the box anyway. The dac itself works fine with a different o/s, so I don't think the problem is in the dac.
 

Attachments

FWIW I took it apart, it's definitely genuine, not a fake. Board says made in korea, and mine looks identical to the photo in a review here https://audio.com.pl/testy/stereo/przetworniki-c-a/1257-audinst-hud-mx1
... En translation https://audio-com-pl.translate.goog...uto&_x_tr_tl=en&_x_tr_hl=en-US&_x_tr_pto=wapp

I guess it's an older model... audinst currently sell the 'mx2' which is a redesign with more modern components. Wolfson got bought out by Cirrus years ago, so perhaps the dac chip it uses is no longer available.

audinst1.jpegaudinst2.jpeg

The sound quality is excellent with HD650's, using linux. I guess the next step would be to go and debug the uaudio driver itself, unless anyone has any other suggestions to get it working on freebsd. I was wondering if it's something simple like just adding the device id to a list in the driver somewhere, although I haven't looked at the code yet.
 
Are you sure your bit depth of output stream matches 24bit?
If it is 16bit and your Audinst HUD-MX1 believes it's 24bit but no in-kernel conversions are made, it would mean the maximum volume is 1/256 compared with 24bit outputs.
 
ahh. interesting, that sounds like the kind of thing that would cause what I'm seeing, I will investigate; although I'm not using bitperfect... so the sound driver should be doing it's standard conversions. I will investigate that...
 
The audinst uses a Tenor TE7022L usb interface chip https://static.qobuz.com/info/IMG/pdf/TE7022SL_PB-v21.pdf
The datasheet says the highest rate that chip supports is 96 kHz @ 24 bits.

From dmesg, uaudio appears to have configured the link as 96 kHz / 24-bit, which is the highest resolution the TE7022 supports.
So it looks like the auto-negotiation of the uaudio driver with the interface chip in the audinst has worked.

uhid0: <Audinst, Inc. Audinst HUD-mx1, class 0/0, rev 1.10/0.01, addr 3> on usbus1
uaudio0 on uhub3
uaudio0: <Audinst, Inc. Audinst HUD-mx1, class 0/0, rev 1.10/0.01, addr 3> on usbus1
uaudio0: Play[0]: 96000 Hz, 2 ch, 24-bit S-LE PCM format, 2x4ms buffer. (selected) <====
uaudio0: Play[0]: 48000 Hz, 2 ch, 24-bit S-LE PCM format, 2x4ms buffer.
 
Well, I tried setting
dev.pcm.4.play.vchanformat=s24le:2:0
... and no change, still extremely quiet. I tried changing the vchanmode to adaptive as well, no difference. Setting a 32 bit format didn't work either.
 
hw.snd.vchans_enable is set to 1 by default, so presumably that means it's enabled, at least, according to 'man sound'.

I installed audacious and set the output to OSS4 and the bit depth to 24-bit. Now I have some normal volume hissing in the headphones, but no music at all when I try to play a track! Well, I will have to come back to this later and play around with the settings some more.

I also need to check what happens when I use a dac that works, like the JM20, for comparison.
 
Even if vchans are enabled, if mpv grabs raw physical channel (exclusively), it could bypass kernel side mixers. Not sure mpv does so or not.
 
I get the same problem with mpd and firefox, so it's not just mpv. I'm pretty sure they use OSS the same way. I've been trying different settings in audacious, but haven't got it to work so far!
 
Hmmmm...
As sound-related codes are largely reworked by christos@ recently, my old experiences could no longer be applicable.

Possibly having no effect here with regard to the results you tested, but
sndctl play.format=s24le:2.0 play.rate=96000
as root (via sudo or doas is OK) take effect?
 
Back
Top