External Microphone via 3.5mm Jack (Librem 14)

nothing ready for testing yet. Still working on tweaking things so jack detection/removal works (consistently), mic detect works, and the noise floor of the external mic is low end to actually be usable

1 Like

Any sort of very rough eta on this fix?

no. The registers controlling these things are entirely undocumented


I did a bit more tinkering recently and found another way to get the same results as my prior “half-workaround” from earlier in this thread: set the 2nd GPIO to on, direction 1, data 1, so that it appears like this in /proc/asound/card0/codec#0

GPIO: io=3, o=0, i=0, unsolicited=1, wake=0
  IO[0]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
  IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
  IO[2]: enable=1, dir=1, wake=0, sticky=0, data=1, unsol=0

This can be done by verb’ing the 0x01 node like so:

hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x04
hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x04
hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x04

I have no idea what this means or why it might be so, just throwing it out there in case it might be useful to anyone else.


so where did it come from?

Trial and error. I browsed through recent commits to patch_realtek.c which mention the ALC256, and also tried a few of the model name quirks.