[alsa-devel] User-friendly dynamic HDA pin reconfiguration
Daniel Drake
drake at endlessm.com
Wed Oct 31 09:47:27 CET 2018
Hi,
We are working with a new consumer All-in-One platform with HDA audio
(Realtek codec).
Upon plugging in an audio device into one of the audio jacks, under
Windows, a prompt appears which says: Which device did you plug in?
And you can select from several options: Mic In / Headphone / Speaker Out
Screenshot: https://imgur.com/a/mrUolHN
The system vendor is asking if we can implement the same under Linux.
At first glance, this sounds quite similar to what happens on other
models when you plug in a headset under GNOME: a dialog pops up asking
if you connected a mic, headphones, or a headset. Under the surface,
such headset jacks seems to correspond to 2 separate HDA pins (one
input and one output) and this dialog seems to manage which streams
are enabled or muted.
However, this case is different. We have experimented, and the jack
corresponds to just a single HDA pin. We can manually quirk or retask
this pin to be an input or an output and it works in the direction
that we choose. But that's a far cry from having a nice GUI that
automatically comes up asking the user how the pin should be
configured.
Is there any current solution or work in progress with the goal of
offering this functionality?
If not, brainstorming, possible solutions could include:
1. Taking the hdajackretask idea but making it user-accessible and
user-friendly (currently it goes through debugfs and must be done by
root). This would require the creation of a new kernel interface to
expose pin reconfiguration in a nicer way, which would have to be
plumbed through pulseaudio and GNOME.
2. Could ALSA ignore the pin config here and provide both input and
output streams for this pin? Then pulseaudio + GUI could pick which
one to use - similar to the existing Headset dialog. This would still
require some work on pulseaudio and the corresponding UI, but it might
be a less invasive project.
Thanks,
Daniel
More information about the Alsa-devel
mailing list