Repository navigation
Releases: Briclyaz/NLSound
Release list
NLSound v4.5 RELEASED
🚀 NLSound Release Notes
⚠️ IMPORTANT NOTE ON MEDIATEK (MTK) DEVICES
- Before: MTK-based devices had zero support in the codebase.
- Now: Initial mechanisms and configurations for Dimensity and Helio chipsets have been implemented:
- Unlocked 32-bit output and sample rates up to 384 kHz in the
mtk_bessoundandmtk_iirprocessing engines;- Completely deactivated the aggressive stock
BesLoudnesslimiter/compressor (MTK_BESLOUDNESS_SUPPORT=no);- The speaker output stage has been switched to the high-efficiency
CLASSHmode;- Hardware-level jitter reduction mode has been enabled for I2S digital audio buses (
Low_Jitter);- Base system flags
ro.vendor.mtk_hifiaudio_support=1and hardware FLAC/APE/ALAC decoders have been enabled.- Fine, device-specific tuning of MTK audio pipelines will continue in future updates.
🎵 1. Global Audio Path Cleanup (Rejecting Placebos and Distortions)
The primary focus of this release is pure audio engineering. Dozens of obsolete and harmful tweaks, copied across forums for years and breaking the Android Audio HAL architecture, have been completely removed.
A. system.prop and AudioFlinger Cleanup:
- Removal of the bogus 24-bit software decoder block:
- Before: More than 20 non-existent AOSP/CAF keys were injected, such as
vendor.audio.mp3.sw.decoder.24bit=trueandvendor.audio.dsd.sw.decoder.24bit=true. - Now: All fictitious keys have been completely removed.
- Impact on sound: Resolved an initialization issue with C2/OpenMAX media decoders where the system would fail over from hardware DSP offload to CPU-heavy software decoding, introducing jitter and excessive battery drain.
- Before: More than 20 non-existent AOSP/CAF keys were injected, such as
- Removal of the forced 64-bit mediaserver (
ro.mediaserver.64b.enable=true):- Before: Forcing 64-bit mode caused the audio server to crash on devices with 32-bit vendor libraries.
- Now: Process architecture is determined natively by the firmware.
- Removal of synthetic reverb (
effect.reverb.pcm=1):- Before: Artificial echo was injected into the digital signal path.
- Now: The parameter has been stripped. The sound is now focused, clean, with precise instrument localization and natural transient punch.
- Removal of the static volume lock (
persist.audio.hifi.volume=90):- Before: A fixed volume value disrupted the gain staging of Qualcomm WCD chips, clipping dynamic headroom and causing distortion on high-impedance headphones.
- Now: Dynamic range headroom management has been fully restored to the native DSP.
- Deprecation of archaic LPA flags:
- Removed dead parameters from the Android 4.4–6.0 era (
lpa.decode=false,lpa.use-stagefright=false).
- Removed dead parameters from the Android 4.4–6.0 era (
B. Hardware Distortion Fixes in the Mixer:
- Total deactivation of soft-clipping (Softclip):
- Before:
Softclip Enablemixer controls were set to1, aggressively flattening and compressing volume peaks. - Now: Soft-clipping limiters (
RX_Softclip,WSA_Softclip0/1) are forcibly zeroed out (0). The low-end is no longer muffled or muddy—restoring tight, punchy dynamics.
- Before:
- Disabling multiband compressors and noise gates (MBDRC, Compander, Noise Gate):
- Before: Stock noise gates and compressors choked quiet string decays and natural room reverberations.
- Now:
COMP,MBDRC,Compander, andNoise Gateblocks have been completely zeroed in the mixer. Subtle textures and micro-details of live recordings are now fully audible.
- Removal of stock battery-level speaker throttling:
- Before: When battery levels dropped below 20%, vendor drivers forcibly choked volume and cut low frequencies.
- Now:
lowbattery_speaker_profile_support=false,battery_listener_enabled=false, andoplus_ear_protection_enable=falsehave been disabled.
- Restoring true infrasonic sub-bass (Step 8):
- Before: Stock High-Pass Filters (HPF) cut frequencies below 25–40 Hz to protect cheap phone hardware.
- Now: The hardware HPF cutoff in DSP registers has been lowered to 4 Hz (
CF_NEG_3DB_4HZ/MIN_3DB_4Hz), and the headphone path interpolator is switched toPURE_HIFI/CLS_H_HIFI. Quality headphones now deliver deep, physically resonant sub-bass.
- Proper microphone gain staging (Step 3):
- Before: The script blindly inflated primary ADC sensitivity (
ADC Volume), introducing severe electrical hiss and room noise. - Now: Only digital recording decimators (
DEC Volume) are calibrated, preserving clean voice capture without room rumble or clipping.
- Before: The script blindly inflated primary ADC sensitivity (
🎬 2. New Dolby Atmos Architecture (Step 14)
- Universal DAX cleanup profile (
dax-default.xml):- Disabled the automatic volume leveler (
volume-leveler), eliminating sudden volume pumping during bass-heavy drops; - Disabled artificial dialogue enhancers (
dialog-enhancer), removing metallic, synthetic vocal coloration; - Eliminated the hollow "sound in a bucket" effect in headphones while preserving punchy bass and wide imaging.
- Disabled the automatic volume leveler (
- Dedicated stereo speaker tunings:
- Xiaomi 13 Ultra / 14 Ultra (
ishtar,aurora) — Precision phase balance, fine-tuned harmonic distortion (harmonic_2/3), and parametric GEQ profiles to flatten the stereo frequency response; - Oppo Find X6 Pro / OnePlus 12 (
PGEM10,OP595D,OP528BL1) — Hardware offload unlock and removal of power caps on smart amplifiers.
- Xiaomi 13 Ultra / 14 Ultra (
🧩 3. Installer Architecture & Full OverlayFS / Mountify Compatibility
- Adaptive path normalization (
normalize_path):- Before: The installer hardcoded all files into
/system/..., causing symlink collisions on modern dynamic partitions. - Now: The
normalize_path()function automatically detects the environment:- Under KernelSU, APatch, Magisk OverlayFS, and Mountify, files are routed directly to their respective partition roots (
/vendor,/product,/system_ext,/odm,/my_product); - Under classic Magisk (Magic Mount), the standard
/system/tree layout is maintained.
- Under KernelSU, APatch, Magisk OverlayFS, and Mountify, files are routed directly to their respective partition roots (
- Before: The installer hardcoded all files into
- Elimination of leftover folder bugs in
/data/adb/metamodules/:- Completely eliminated legacy
post-fs-data.shscripts with manualmount --bindloops that previously causedEBUSY (Device or resource busy)errors upon module removal. - Eliminated folder collisions caused by simultaneous
/vendorand/system/vendorstructures inside the module. - Injected
PARTOVER=trueinto the rootcustomize.shto prevent MMT-Ex from dropping partition definitions viaunset PARTITIONS.
- Completely eliminated legacy
- Kernel protection against invalid overlays (
/sys):- Before: The module created physical files under
$MODPATH/sys/module/..., attempting to overlay the kernelsysfsfilesystem, which is strictly prohibited by the Linux kernel and broke overlay managers. - Now: Kernel parameter tweaks (
maximum_substreams=4096,high_perf_mode=1,impedance_detect_en=1) are injected as runtimeechocommands intoservice.shand applied safely after boot completion.
- Before: The module created physical files under
- Reliable Xiaomi device detection:
- Added fallback handling for the
mivendorplaceholder inro.product.vendor.device, switching to the true codename fromro.product.device(resolving issues on Xiaomi 13/14 Ultra and Redmi Note 13).
- Added fallback handling for the
- Ultra-fast filesystem scanning:
- Heavy directories such as
/lib,/lib64,/framework,/fonts, and/binare excluded from discovery. Initial system scanning time has been reduced from tens of seconds to 1–2 seconds.
- Heavy directories such as
- Pure POSIX Shell migration:
- The installer has been rewritten entirely for the native Android shell
#!/system/bin/sh, eliminating bash dependencies and explicitly adding KernelSU and APatch binary paths to$PATH.
- The installer has been rewritten entirely for the native Android shell
🎚 4. Hardware Mixer & Direct Patching Technology (Step 13)
- Two-stage hardware register application:
- The module no longer relies solely on boot scripts. Generated mixer parameters are directly injected into
mixer_paths.xmlas native<ctl>/<kctl>tags. Audio chips initialize in Hi-Fi mode from the very first millisecond of boot. - For live enforcement, parameters are also appended to
service.shwith asys.boot_completed=1watchdog.
- The module no longer relies solely on boot scripts. Generated mixer parameters are directly injected into
- Updated
tinymix_extbinary build:- Integrated a custom
tinymix_extutility compiled from AOSP sources with support for string selectors and crash prevention when sending unconventional hex values.
- Integrated a custom
- Native DSD support:
- Activated native DSD routing in the mixer (
DSD_L Switch=1,DSD_R Switch=1, switching TERT MI2S toNATIVE_DSD_DATA, and routing DSD over PCM via SLIMBUS).
- Activated native DSD routing in the mixer (
- Ultra-low ADM buffer latency:
- Qualcomm Audio Downlink Module (ADM) DSP routing latency has been reduced to 2 ms (
vendor.audio.adm.buffering.ms=2).
- Qualcomm Audio Downlink Module (ADM) DSP routing latency has been reduced to 2 ms (
🔍 5. Hardware Scanner (Hardware Detection)
- Implemented low-level bus scanning across
I2C,SoundWire,Slimbus,Platform, and DeviceTree nodes for exact chip identification:- Amplifiers: Cirrus Logic (CS35L41), NXP/Goodix (TFA98xx), Texas Instruments (TAS25xx), Awinic (AW88xx), Maxim (MAX98373), Qualcomm WSA (WSA88xx);
- DACs & Codecs: Qualcomm WCD (Aqstic / Bolero family), ESS Sabre, Asahi Kasei (AKM).
- If a device is missing from the preset database, the installer dynamically generates an adaptive tuning profile based on the detected amplifier hardware.
🔊 6. Audio Stack & Codec Optimization
- Direct PCM routing (Step 11):
- The
DIRECT_PCMflag is merged into existing direct streams via a logical OR (AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_DIRECT_PCM), preventing track initialization crashes and allowing compatible players (Poweramp, UAPP, Neutron) to send bit-perfect streams straight to the DAC without AudioFlinger processing.
- The
- Safe Hi-Res sample rate additions (Step 5):
- Selected sa...
NLSound v4.4 RELEASED
We have prepared a major update for you, aimed at improving the quality of the module and fixing many known bugs!
What was done:
💀 BUGFIXES
- Fixed a global issue related to installer item 16: it just didn't work due to a bug in the code. Now everything functions properly;
- Fixed problem with acdb files downloading for some users: now everything works properly, thanks for your feedback.
😋 CHANGES
- Made changes in the 14th item of the installer: now the code for making changes for all devices that do not have parameters selected by our team works properly;
- We made some changes to the audio output patching policy: now RAW output (often used in games and other applications to output audio with minimal latency) is also subject to changes, but only the sample rate is patched for better compatibility;
- Some code changes “under the hood” for better readability (renamed some variables and so on).
😳 ADDED
- Nothing in this version.
😭 REMOVED
- Nothing in this version.
Now you can help us translate the module into your language!
We have created a profile on Crowdin where you can conveniently translate the module into the language you need.
At the moment we are planning to translate the module into 30 of the most popular languages around the world.
The English version of the module installer has been uploaded to the platform for the template.
Link on Crowdin - https://ru.crowdin.com/project/nlsound
We have abandoned the division of the module into STABLE and BETA versions
This is due to the lack of testers, lack of sufficient quality control. In other words, we cannot guarantee that the STABLE branch will work STABILIER THAN BETA because we lack the resources to test it. From this version onwards, the module will only have a version and a designation that it is for Qualcomm-based devices (even though the MTK branch is abandoned, we will continue to indicate this in the names so as not to mislead people with Tensor, Kirin, etc.).
NLSound v4.3 RELEASED
We have prepared a major update for you, aimed at improving the quality of the module and fixing many known bugs!
What was done:
💀 BUGFIXES
- Fixed an issue that caused the speaker to not work on Redmi Note 9 Pro device when using the 8 installer item;
- Added fixes for correct operation of volume key selector for those who prefer to install the module via APatch. But, we need additional tests;
- Fixed an issue that could cause a bootloop on a Poco F5 device when using the 14 point installer;
- Fixed multiple issues with calls not working on some devices;
- We have rewritten the patching of resourcemanger files and fixed several issues related to these files: now everything works correctly;
- Fixed an issue that caused the module to not always fully restore past installation settings;
😋 CHANGES
- Made changes to the 13 and 15 installer items working together: now your Dolby shouldn't die if you agreed to install both items;
- We have prescribed the use of CLS_H_LOHIFI instead of CLS_H_H_HIFI for the mixer patch file patching clause, which should have a positive effect on the compatibility of the clause with a large number of devices and not affect the audio quality;
- Numerous fixes have been made to the 13 installer item as well as 6, which should have a positive impact on compatibility with more devices;
- Changes were made to the structure of the module: we are tired of seeing how our developments are carelessly stolen by unscrupulous individuals, so we have to make amendments and complicate the structure of the module;
- Numerous corrections have been made to the Chinese translation of the module. Nevertheless, we would not refuse your help, but about it a bit below;
- Updated tinymix parameters for the 1+12 device;
- A lot of work has been done on code refactoring;
- We have made some improvements in mounting files in the system to reduce the number of mount points, which should have a positive effect on the performance of the module and not offset the negative effects of using it;
- We have made many fixes to the module to make it work properly on the Mi 10 device;
- Made some compatibility improvements to the 6 point installer for Realme 12 Pro+ and 1+12 devices;
- We have once again reviewed the prop list and edited it a bit, but overall it won't affect anything, but we had to report it;
- Many changes and fixes for the 1+7 lineup devices have been made to various items in the installer;
- We've made some changes to the patching files for those who prefer to use KSU, KSU Next, and other crap;
- The algorithm of searching for files in the system that will be modified by the module has been optimized: now this process is faster and works more accurately;
- We continue to work on improving the visual component of the module: in this version we have once again slightly changed the appearance of the installer. We hope you will like it;
- Made changes to the audio_io_policy file patching: this should now work properly and without crashing on some devices;
😳 ADDED
- We've added a button to the module to invoke some number of actions that may be useful to you;
- As a test, we added support for Sony Xperia 1 II to the 14 point installer;
😭 REMOVED
- We removed the audio bitrate change when agreeing to install the 8 installer item;
- Superfluous files were removed from the module, which also had a positive effect on the final weight of the module;
Now you can help us translate the module into your language!
We have created a profile on Crowdin where you can conveniently translate the module into the language you need.
At the moment we are planning to translate the module into 30 of the most popular languages around the world.
The English version of the module installer has been uploaded to the platform for the template.
Link on Crowdin - https://ru.crowdin.com/project/nlsound
We have abandoned the division of the module into STABLE and BETA versions
This is due to the lack of testers, lack of sufficient quality control. In other words, we cannot guarantee that the STABLE branch will work STABILIER THAN BETA because we lack the resources to test it. From this version onwards, the module will only have a version and a designation that it is for Qualcomm-based devices (even though the MTK branch is abandoned, we will continue to indicate this in the names so as not to mislead people with Tensor, Kirin, etc.).
v4.2 BETA
v4.1 BETA
v4.0 STABLE
Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:
- If you are upgrading from versions 3.9 and below - do not use previous settings, perform manual installation to update the configuration file;
- On devices based on processors lower than SDM625, work of the modification is not guaranteed.
Support group: @nlsound_support
Sources: Github
Trello: »Click«
v3.9 BETA
Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:
- ONLY CLEAN INSTALL
- On devices based on processors lower than SDM625, work of the modification is not guaranteed.
Support group: @nlsound_support
Sources: Github
Trello: »Click«
v3.8 STABLE
Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:
- ONLY CLEAN INSTALL
- On devices based on processors lower than SDM625, work of the modification is not guaranteed.
Support group: @nlsound_support
Sources: Github
Trello: »Click«
v3.7-STABLE
Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:
-
ONLY CLEAN INSTALL
-
On devices based on processors lower than SDM625, work of the modification is not guaranteed.
Support group: @nlsound_support
Sources: Github
Trello: »Click«
v3.6-STABLE
Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:
-
ONLY CLEAN INSTALL
-
On devices based on processors lower than SDM625, work of the modification is not guaranteed.
Support group: @nlsound_support
Sources: Github
Trello: »Click«