If you are in a call and the other person hears himself or noises when the top mic is touched, by hair or hat..., you can try this:
[ROOT needed]
Edit this file:
\vendor\etc\mixer_paths_overlay_static.xml
find this sections:
<!-- Dual MIC devices -->
<path name="handset-dmic-endfire">
<ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="AMIC" />
<ctl name="AMIC MUX7" value="ADC3" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="AMIC" />
<ctl name="AMIC MUX8" value="ADC1" />
<ctl name="SLIM_0_TX Channels" value="Two" />
</path>
<path name="speaker-dmic-endfire">
<ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="AMIC" />
<ctl name="AMIC MUX7" value="ADC3" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="AMIC" />
<ctl name="AMIC MUX8" value="ADC1" />
<ctl name="SLIM_0_TX Channels" value="Two" />
</path>
and add this lines, so they look like this:
<!-- Dual MIC devices -->
<path name="handset-dmic-endfire">
<ctl name="DEC8 Volume" value="0" />
<ctl name="DEC7 Volume" value="92" />
<ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="AMIC" />
<ctl name="AMIC MUX7" value="ADC3" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="AMIC" />
<ctl name="AMIC MUX8" value="ADC1" />
<ctl name="SLIM_0_TX Channels" value="Two" />
</path>
<path name="speaker-dmic-endfire">
<ctl name="DEC8 Volume" value="84" />
<ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="AMIC" />
<ctl name="AMIC MUX7" value="ADC3" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="AMIC" />
<ctl name="AMIC MUX8" value="ADC1" />
<ctl name="SLIM_0_TX Channels" value="Two" />
</path>
This will set top mic sensitivity to 0, noise cancellation will not work but you can adjust "<ctl name="DEC8 Volume" value="0" />" as needed to have a little noise cancellation, default is 84. I've set it to 0 and i find it very good, no complains about the sound quality.
Also I've set 92 as the sensitivity for the lower mic, and it helps a little. Adjust <ctl name="DEC7 Volume" value="92" /> as you wish, default is 84.
I don't know if this is the best solution, but it helped me, so I share
* to make changes to this file, you need to mount vendor and system in twrp (in twrp>mount>check both)
** please report this bug using Settings > Feedback > and check "Issue" and describe the problem you are having, hopping that Poco devs will look into it.
*** I've built a magisk module to apply this fix, it makes it easier for those who flash roms frequently.
[ROOT needed]
Edit this file:
\vendor\etc\mixer_paths_overlay_static.xml
find this sections:
<!-- Dual MIC devices -->
<path name="handset-dmic-endfire">
<ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="AMIC" />
<ctl name="AMIC MUX7" value="ADC3" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="AMIC" />
<ctl name="AMIC MUX8" value="ADC1" />
<ctl name="SLIM_0_TX Channels" value="Two" />
</path>
<path name="speaker-dmic-endfire">
<ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="AMIC" />
<ctl name="AMIC MUX7" value="ADC3" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="AMIC" />
<ctl name="AMIC MUX8" value="ADC1" />
<ctl name="SLIM_0_TX Channels" value="Two" />
</path>
and add this lines, so they look like this:
<!-- Dual MIC devices -->
<path name="handset-dmic-endfire">
<ctl name="DEC8 Volume" value="0" />
<ctl name="DEC7 Volume" value="92" />
<ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="AMIC" />
<ctl name="AMIC MUX7" value="ADC3" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="AMIC" />
<ctl name="AMIC MUX8" value="ADC1" />
<ctl name="SLIM_0_TX Channels" value="Two" />
</path>
<path name="speaker-dmic-endfire">
<ctl name="DEC8 Volume" value="84" />
<ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="AMIC" />
<ctl name="AMIC MUX7" value="ADC3" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="AMIC" />
<ctl name="AMIC MUX8" value="ADC1" />
<ctl name="SLIM_0_TX Channels" value="Two" />
</path>
This will set top mic sensitivity to 0, noise cancellation will not work but you can adjust "<ctl name="DEC8 Volume" value="0" />" as needed to have a little noise cancellation, default is 84. I've set it to 0 and i find it very good, no complains about the sound quality.
Also I've set 92 as the sensitivity for the lower mic, and it helps a little. Adjust <ctl name="DEC7 Volume" value="92" /> as you wish, default is 84.
I don't know if this is the best solution, but it helped me, so I share
* to make changes to this file, you need to mount vendor and system in twrp (in twrp>mount>check both)
** please report this bug using Settings > Feedback > and check "Issue" and describe the problem you are having, hopping that Poco devs will look into it.
*** I've built a magisk module to apply this fix, it makes it easier for those who flash roms frequently.
Attachments
Last edited: