Andriy
Developer
Just a small discovery that I recently made.
It looks that HDA uses "igain" mixer to control what is actually a path from input and output (actually, from input mixer to output).
In my opinion, this is very confusing as most would expect igain to control input amplification.
And the input → output path control should be something like "monitor".
But HDA uses "monitor" to mean a secondary microphone that can be present on some systems.
Also, when you set recording level via pulseaudio, its OSS plugin sets levels of 3 mixers: mic, rec, igain.
So, that might not play well with HDA because of igain.
One solution is to force "mix" mixer to be muted.
In newer FreeBSD (14+) it's also possible to set mute on igain as now volume and muting are separate controls.
Then pulseaudio would be changing igain volume, but it would still be muted.
It looks that HDA uses "igain" mixer to control what is actually a path from input and output (actually, from input mixer to output).
In my opinion, this is very confusing as most would expect igain to control input amplification.
And the input → output path control should be something like "monitor".
But HDA uses "monitor" to mean a secondary microphone that can be present on some systems.
Also, when you set recording level via pulseaudio, its OSS plugin sets levels of 3 mixers: mic, rec, igain.
So, that might not play well with HDA because of igain.
One solution is to force "mix" mixer to be muted.
In newer FreeBSD (14+) it's also possible to set mute on igain as now volume and muting are separate controls.
Then pulseaudio would be changing igain volume, but it would still be muted.