![]()
Able to send and receive calls, but no sound
We understand the frustration that arises when a custom ROM installation on an older device results in a critical loss of functionality. Specifically, when you are able to initiate and receive calls, but audio input and output are completely absent, the device becomes functionally limited. This scenario is common with older devices, particularly the LG series, when running LineageOS 22.2. In our extensive experience with Android system architecture and audio policy management, we have identified several key layers where audio routing failures occur. The lack of sound during a voice call, despite the cellular connection remaining active, usually points to a conflict in the audio HAL (Hardware Abstraction Layer), incorrect audio policy configurations, or missing proprietary blobs.
In this comprehensive guide, we will walk through the specific causes of this audio silence on LG devices running LineageOS, moving beyond simple build.prop edits to address the root of the problem. We will cover the internal workings of audio policies, the role of fluence, and advanced debugging techniques to restore call audio.
Understanding the LG Audio Architecture on LineageOS
When dealing with older LG hardware, the transition from the stock Android firmware to a custom ROM like LineageOS involves significant changes to how the device handles audio streams. The absence of sound specifically during calls, while LTE and data remain functional, indicates that the baseband and modem interfaces are communicating correctly, but the application processor is failing to route the audio data to the correct hardware interface.
The Role of the Audio HAL
The Audio HAL serves as the bridge between the high-level Android audio framework (Media Framework) and the low-level audio drivers specific to the hardware. On LG devices, manufacturers often rely on proprietary implementations that are tightly coupled with their stock ROM. When LineageOS is installed, it attempts to use a generic or community-maintained HAL. If the specific LG HAL is missing or improperly configured, the system may recognize the call state but fail to open the audio devices for playback and recording.
Audio Policy Configuration Conflicts
We often observe that the audio_policy.conf or audio_policy_configuration.xml files are the primary culprits. These files define the available audio devices (speaker, earpiece, headset, Bluetooth) and the routes allowed between them. On LG phones, the modem may report a specific audio device profile (like AUDIO_DEVICE_OUT_EARPIECE), but the policy file loaded by LineageOS might not map this device to the correct output path. This results in a “silent call” scenario where the audio stream is opened but immediately discarded because no valid sink is found.
Dissecting the Fluence Audio Algorithm
You mentioned attempting to disable Fluence in the /vendor/build.prop file. This is a logical first step, as Fluence is a suite of audio processing algorithms (noise cancellation, echo cancellation) often responsible for audio issues on custom ROMs. However, the persistence of the issue suggests that the configuration is either not applying correctly or is being overridden by another process.
What is Fluence?
Fluence, originally developed by Qualcomm, is designed to improve voice clarity in noisy environments. It uses multiple microphones to isolate the user’s voice from background noise. While beneficial, this process requires precise calibration with the device’s hardware. On older LG devices, the proprietary libraries required to run Fluence may be incompatible with LineageOS 22.2. If the system attempts to process audio through a non-functional Fluence pipeline, the audio output can be nullified entirely.
Why persist.audio.fluence.voicecall=false Didn’t Work
There are several reasons why your edit to the build.prop might not have resolved the audio issue:
- Proprietary Overrides: LG’s audio service may ignore system properties in favor of hardcoded values in vendor libraries.
- Multiple Prop Files: Android loads properties from several locations (
/system,/vendor,/odm,/product). You may have edited the wrong file, or a lower-priority file might be overriding your setting. - Service Restart: Changes to
build.proprequire a full reboot to take effect. Furthermore, if a Magisk module or a system overlay is present, it might revert these changes during boot.
Step-by-Step Troubleshooting for Silent Calls
To effectively resolve the “no sound” issue, we must methodically test and verify each layer of the audio stack. We recommend following these steps in order, ensuring that each modification is tested before moving to the next.
Step 1: Verify Hardware and Basic Audio Functionality
Before diving into deep system modifications, we must rule out physical hardware failures and basic software glitches.
- Test with Speakerphone: During a silent call, switch to speakerphone. If you hear audio through the speaker, the issue is isolated to the earpiece or microphone path (likely the HAL or Fluence). If there is still no sound, the issue is likely system-wide (Audio Policy or Modem interface).
- Reboot into Safe Mode: Boot the device into Safe Mode to disable all third-party apps. While this rarely affects the dialer directly, it eliminates interference from audio equalizers or call recording apps.
- Check Audio via Other Apps: Play a local audio file or a YouTube video. If media audio works but call audio does not, the issue is strictly within the voice call stream (
STREAM_VOICE_CALL).
Step 2: Advanced Build.prop Modifications
While you attempted to disable Fluence, there are other properties that dictate audio routing on Qualcomm chipsets (which most LG phones utilize). We recommend adding the following properties to your /system/build.prop or /vendor/build.prop using a root file explorer or Magisk module:
# Disable fluence and voice processing
persist.audio.fluence.voicecall=false
persist.audio.fluence.speaker=false
persist.audio.fluence.voicerec=false
# Force audio routing to primary output (often fixes earpiece issues)
af.r_path=0
af.tcp_info=incoming
# Disable tunneling for audio offload (can cause silence on older kernels)
tunnel.audio.encode=false
audio.offload.buffer.size.kb=32
Note: If you are using a Magisk environment, creating a module to inject these properties is cleaner and safer than direct system partition modification, as it survives OTA updates. Since you are referencing Magisk Modules, you likely have the capacity to manage this.
Step 3: Modifying Audio Policy Configuration
If property edits fail, the next critical step is to modify the audio policy configuration. This requires root access and a text editor capable of handling XML files.
- Locate the File: Navigate to
/vendor/etc/or/system/etc/. Look foraudio_policy_configuration.xml. - Analyze the Routes: Look for the
<route>tags. You need to ensure that thedeviceattribute in the route matches the device identifiers active during a call. - Force Speaker and Earpiece: If the device is routing audio to a non-existent HDMI or USB device (common glitch), you may need to comment out those routes or adjust the priority.
- Example Fix: Ensure the
<device name="earpiece" />is correctly mapped to the primary output device.
- Example Fix: Ensure the
Step 4: The Mixer Paths XML (For Microphone Issues)
If the person on the other end cannot hear you, the issue is likely in the input path. LG devices use mixer_paths.xml (often found in /vendor/etc/ or /system/etc/).
- Locate
mixer_paths.xml. - Search for “Voice” or “Call”: Look for controls labeled
Voice Call,Mic, orDMIC. - Check Volume Levels: Sometimes, the input gain is set to 0. You can search for
<ctl>tags related toADCorPGAand ensure the values are non-zero (e.g., value=“100”). - Route Fix: If the microphone is being routed to a wrong path (e.g.,
AnalogMicinstead ofDigitalMic), you may need to swap the enabled flags.
Dealing with Missing VoLTE and VoWiFi on LG Devices
You mentioned that LTE is working, but VoLTE and VoWiFi do not function due to carrier locking. This is a crucial detail. On modern Android versions, the absence of VoLTE support forces the device to drop to 2G/3G for voice calls. However, if your LTE data is active and the call drops to a legacy network mode that the custom ROM does not fully support, audio routing can break.
The 2G/3G Fallback Issue
If your device is on an LTE network but the call setup defaults to a legacy circuit-switched network, the audio HAL might not be initialized for that specific network type.
- Force LTE Only: Go to
Settings > Network & Internet > Mobile Network > Preferred Network Type. - Select LTE/4G only: While this prevents incoming calls if the carrier doesn’t support VoLTE, it helps diagnose if the audio issue is tied to 2G/3G handshake failures. If you cannot select this, use a dialer code like
*#*#4636#*#*to access the testing menu. - Modem Firmware Mismatch: LG devices often have specific modem firmware versions. If LineageOS 22.2 expects a different modem version, the audio packets (RTP) may not be encapsulated correctly. You may need to flash a compatible modem.bin via a custom recovery.
Advanced Debugging: Logcats and Audio Hal Logs
For users comfortable with command-line tools, extracting logs is the most direct way to identify the silence.
Capturing the Logcat
We need to see what the Android audio server (audioserver) is doing during a call.
- Connect your device to a PC with ADB debugging enabled.
- Clear the current logs:
adb logcat -c - Start the logcat and save it to a file:
adb logcat -d > audio_log.txt - Initiate a call. Reproduce the silence.
- Stop the logcat.
Analyzing the Audio Stream
Search the saved log for keywords:
AudioStreamOut: Look for errors regarding opening the output stream.setParameters: Check if the audio route is being switched. Look forrouting=...errors.AudioFlinger: This service manages the audio tracks. Errors here indicate the system is rejecting the audio stream.PolicyService: Look for “invalid device” or “route not found” warnings.
If you see errors related to FM Radio or VoIP during a cellular call, it indicates a conflict where the HAL is trying to use the wrong audio path (often FM is mapped to the same output as voice on LG devices).
Magisk Module Solutions
Since you mentioned the Magisk Module Repository, we should explore modules that specifically target audio stability on custom ROMs.
Universal GMS Doze
While not an audio module, aggressive battery optimization can kill the audioserver or modem interfaces. Ensuring that Google Play Services and the Phone app are whitelisted is essential.
Audio Modification Modules
Look for modules in the repository that specifically modify the audio_effects.conf or mixer_paths. Modules like “Audio Modification Library” (AML) can sometimes provide compatibility layers for older devices. However, on LineageOS 22.2, ensure the module is compatible with the Android version (likely Android 14 or 15). Incompatible audio mods are a leading cause of total audio loss.
Creating a Custom Module for LG Audio
If no pre-existing module works, we recommend building a simple Magisk module to override the problematic LG audio files.
- Mount: Create a module folder structure.
- System Props: Include a
system.propfile with the Fluence and audio force-enable properties. - File Replacement: If you identify a specific
mixer_paths.xmlthat works (perhaps from an older LineageOS build for the same device), place it in the module’ssystem/etc/folder. This will overlay the default LineageOS file at boot.
Microphone Not Working: Specific Hardware Checks
If the user can hear the caller but the caller cannot hear you, the issue is strictly input-based. On LG devices, this is often related to the “Headset Mic” detection glitch.
Phantom Headset Detection
The device might think a headset is plugged in, thereby routing the microphone input to the 3.5mm jack (which is empty) instead of the built-in microphone.
- Check the Audio Route: Use a system app like “Simple System Monitor” or a terminal command to check the current audio route.
- Disable Headset Control: In
mixer_paths.xml, you can try to disable the headset detection pin or force the main mic to be active regardless of insertion state.- Search for
JackorHeadsetin the XML and look for<ctl name="Jack Detect" value="..." />. Changing this to0(Disable) can sometimes force the system to use the primary mic.
- Search for
Calibrating Microphone Gain
In the same mixer_paths.xml, the microphone gain (PGA) is critical. On LG phones, the values are often indexed.
- Example:
<ctl name="Mic ADC1" value="100" /> - If the value is too low (or 0), the input is silent. Increasing this value (e.g., to 150 or 200) can boost the mic volume. Proceed with caution, as too high a value introduces noise.
Hardware-Specific Considerations for LG Phones
LG phones (such as the V-series, G-series, or Stylo series) have unique hardware configurations that require specific attention.
Quad-DAC and Audio Chips
High-end LG phones feature a Quad-DAC (ESS Sabre). This chip is powerful but notoriously difficult to drive on custom ROMs.
- If the DAC is not initializing correctly, it may mute all audio output.
- Fix: Some kernels or Magisk modules are required to initialize the DAC. Ensure you are using a kernel that explicitly supports the DAC on LineageOS. If the kernel does not load the DAC drivers, audio will fail.
Carrier Variants (H-Series, MS-Series)
If your LG phone is a carrier variant (e.g., AT&T, Verizon, T-Mobile), the modem and audio partitions are heavily modified by the carrier.
- Flashing a generic LineageOS build on a carrier-locked bootloader can cause these mismatches.
- Solution: Ensure you have flashed the correct firmware for your specific model number (e.g., H918, LS997). Sometimes, cross-flashing firmware partitions (like
adspormodem) from a stock firmware is required to get audio working on custom ROMs.
Kernel-Level Audio Debugging
If userspace solutions (ROM, Apps, Magisk) fail, the issue may reside in the kernel.
Check ALSA Controls
Android uses ALSA (Advanced Linux Sound Architecture). You can access these controls via a root terminal.
- Install a terminal app.
- Type
suto gain root. - Type
tinymixoralsamixer(if available). - This displays a list of audio controls. Look for “Voice Call”, “Speaker”, “Earpiece”, and “Mic”.
- Ensure the volume sliders are not muted (Mute vs. 0 volume). If
tinymixshowsMutefor “Voice Call”, unmute it using the commandtinymix "Voice Call" [volume] [on/off].
Kernel Source Modifications
If you are compiling your own kernel (often necessary for older LG devices on newer Android versions), ensure that the defconfig includes the necessary audio drivers.
- Check for
CONFIG_SND_SOC,CONFIG_SND_SOC_MSM, and specific LG audio codec drivers. - Missing drivers will result in the HAL failing to communicate with the hardware, resulting in silence.
Final Recommendations and Workflow
To resolve the issue on your LG device running LineageOS 22.2, follow this consolidated workflow:
- Test Speakerphone: Determine if the issue is input (mic) or output (speaker/earpiece) specific.
- Apply Force-Enable Properties: Use Magisk to push the
persist.audio.fluence.voicecall=falseand related audio routing properties. - Patch Audio Policy: Manually inspect and edit
audio_policy_configuration.xmlto ensure correct device routing. Comment out any routes involving HDMI or USB if they are conflicting. - Check for Phantom Headset: Modify
mixer_paths.xmlto disable headset detection and force primary mic usage. - Verify Modem/Kernel Compatibility: Ensure the LineageOS build is specifically designed for your exact LG model number. If it is a generic build, you may need to flash specific modem.bin files from the stock firmware via TWRP.
- Logcat Analysis: If all else fails, capture a logcat during a call attempt. Look for
AudioFlingerandAudioPolicyerrors to pinpoint the exact HAL rejection code.
By systematically addressing the Audio HAL, Fluence properties, and hardware-specific routing paths, we can usually restore call audio functionality. The key lies in the precise configuration of the mixer_paths.xml and audio_policy_configuration.xml, which govern how the Linux kernel routes audio streams to the physical hardware.