[Xiaomi Redmi Note 4 Questions & Answers] mirfatif:
Device:

Redmi Note 4 SD

OS:

MIUI 8 up to 8.5.4.0 all official and xiaomi.eu versions flashable zips,

MIUI 9 official stable release and xiaomi.eu versions flashable zips and MIUI Pro as well,

Fastboot flash Global ROM MIUI 8.5.4.0,

Fastboot flash developer ROM MIUI 9 7.8.24,

RR, AEX, LOS up to 7.1.2

Android Oreo 8.1.0; Cardinal AOSP 5.3.1, OmniROM Oreo

Problem:

In-call mic volume is too low / distorted unless you speak very close to the phone. If phone is tilted, other person can hear only a robotic sound coming from space (most probably aggressive noise cancellation). However, internet calling apps (WhatsApp, FB Messenger, IMO etc.) work quite normal. Voice Recorder and Camera recordings are also quite acceptable. Though video recording from some distance has bad audio. Not tested for audio recording.

Failed Solutions:

Tried by disabling Google Voice / "OK Google" and denying Mic permission for Google app. Also tried SoundAbout app. Nothing helps.

Editing these files (as guided in 4pda post) improves the quality a little bit:

/system/etc/audio_platform_info.xml,

/system/etc/media_profiles.xml,

/system/etc/mixer_paths_mtp.xml,

system/build.prop

WORKING SOLUTION:

Changing "ro.qc.sdk.audio.fluencetype" value to "none" improves the low volume issue but with low quality voice (in-call noise) and disturbed speakerphone (low) and earphone (high) volumes. Speakerphone volume is fixed by editing "audio_platform_info.xml".

1. Unlock bootloader

2. Install custom recovery

3. Use my flashable zip if you don't wanna go through this hassle of step 4 & 5 manually. V-2 fixes both of these issues i.e. in-call mic volume (4) and speakerphone volume (5).

or

To fix in-call mic volume:

4 (i). Root your device.

(ii). Edit

build.prop

in /system with any text editor.

(iii). Find this line:

ro.qc.sdk.audio.fluencetype=[COLOR="red"]fluence[/COLOR]

On Oreo, it's

ro.vendor.audio.sdk.fluencetype=[COLOR="red"]fluence[/COLOR]

(iv). Replace "fluence" with "none".

(v). Reboot or proceed to next step.

To fix low speakerphone volume after disabling noise cancellation:

5 (i). Edit

audio_platform_info.xml

in /system/etc with any text editor.

On Oreo, it's /system/vendor/etc/audio_platform_info.xml​

(ii). Find this line:

<device name="SND_DEVICE_OUT_VOICE_SPEAKER" acdb_id="[COLOR="red"]50[/COLOR]"/>

(iii). Change value to 50 or if not found, add complete line at end before:

</acdb_ids>
</audio_platform_info>

(iv). Reboot.

CHANGELOG:

v-4

Support for Android Oreo added

v-5

Set SELinux Context on modified files.

v-7

Works with Android 10

v-8

Minor fixes

Edit 1:

Setting "ro.qc.sdk.audio.fluencetype" value in build.prop to "fluencepro" instead of "fluence" makes no difference.

Edit 2:

Changing "ro.qc.sdk.audio.fluencetype" value to "none" or "persist.audio.fluence.voicecall" value to "false" improves the mic volume (no other changes required) but with low quality voice, even distorted. Earphone volume and speakerphone volumes are disturbed. Respectively one is too louder, second is hard to listen.

Edit 3:

Magisk module "Android Mic Fix" claim to modify these values in build.prop but it doesn't work on RN4.

ro.qc.sdk.audio.fluencetype=none
persist.audio.fluence.voicerec=true
persist.audio.fluence.speaker=false
use.voice.path.for.pcm.voip=true

Edit 4:

Editing these lines in /system/etc/mixer_path_mtp.xml doesn't fix speakerphone volume after fluence disabled:

<ctl name="RX3 Digital Volume" value="89" />

Origianl value is "78".

<ctl name="Speaker Boost" value="ENABLE" />

Original value is "DISABLE".

Suggestion:

There are also a few further lines mentioned in different forums which can be added to build.prop but these aren't found by default in Redmi Note 4. Anyone tried these?

persist.audio.fluence.mode = endfire or false

persist.audio.handset.mic = digital or analog

persist.audio.voice.clarity = ON or none

persist.audio.voicecall.mic = 0

persist.audio.aanc.enable = false

persist.audio.handset_rx_type = DEFAULT

persist.audio.nsenabled = ON

persist.audio.fluence.audiorec = false

persist.audio.fluence.spk.mono = true or false

persist.audio.spkcall_2mic = OFF