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

3 Likes

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.

2 Likes

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.

2 Likes