How To Guide Bluetooth Hearing Aids Support (using ASHA)

Search This thread

Qualx

Member
Apr 14, 2022
7
3
UPDATE: I made it work! I'll add a reply below.

This might be a bit of a stretch, but I don't suppose anyone has managed to get bluetooth hearing aids (that support the ASHA protocol) working properly on this phone, either with OxygenOS or an aftermarket mod? I'm at my wits' end trying to work out why my mum's aren't working for calls while media audio is completely fine.

Stuff we've tried:
  • I've tested her hearing aids on my own OnePlus 7 Pro and they work absolutely perfectly. Media audio is fine, call audio is fine.
  • I tried looking at her phone's logcat output, from vanilla OxygenOS, and there were a *lot* of exceptions being thrown from the BluetoothAdapter constructor, from all sorts of apps. It seems that the static getDefaultAdapter() method was constructing a BluetoothAdapter incorrectly, which implied it was an OxygenOS bug.
  • And so we've just installed the LineageOS build from here, which I was certain would work - no joy. The issue is exactly the same; when the hearing aids are selected as the output device, no sound comes out of them, and the phone's microphone is disabled. With my own phone, it (correctly) uses the phone's microphone as the audio input.
Since media audio is fine, I presume it's not a hardware problem with the bluetooth adapter in the phone? But since the hearing aids work fine with my phone, running vanilla OxygenOS, it can't be an issue with the hearing aids, and since LineageOS fails in exactly the same way as OxygenOS, it surely can't be an issue with the operating system. I'm really out of ideas.
 
Last edited:

Qualx

Member
Apr 14, 2022
7
3
I managed to make it work!

Apparently OnePlus in their infinite wisdom didn't bother to put the hearing-aid and hearing-aid-mic audio route paths in /vendor/etc/mixer_paths_lagoonqrd.xml (that file name might be LineageOS specific - my own phone has two mixer_paths_*.xml files and neither of them are called that). I've attached a Magisk module with my fix in case it's useful for anyone else.

Please note: I've only tested this with LineageOS 18.1 and it's a modification of the LineageOS file I pulled from my mum's phone; I have absolutely no idea whether it'll work on OxygenOS.

Update: I've now tested on stock OxygenOS 11.0.16 (EU flavour) and it needed an extra line added, which I've now added and I've replaced the download here. Now it works perfectly on both OxygenOS and LineageOS! :D

I have absolutely no idea what I'm doing and this is provided "as-is" and nothing is my fault etc.
(ɔ) no rights reserved (by me, but other people might have rights, I don't know - look it up if you care)
 

Attachments

  • qualx-hearing-aid-fix v1.0.1_105204.zip
    13.2 KB · Views: 291
Last edited:

andrea7376

Member
Nov 13, 2015
11
1
I managed to make it work!

Apparently OnePlus in their infinite wisdom didn't bother to put the hearing-aid and hearing-aid-mic audio route paths in /vendor/etc/mixer_paths_lagoonqrd.xml (that file name might be LineageOS specific - my own phone has two mixer_paths_*.xml files and neither of them are called that). I've attached a Magisk module with my fix in case it's useful for anyone else.

Please note: I've only tested this with LineageOS 18.1 and it's a modification of the LineageOS file I pulled from my mum's phone; I have absolutely no idea whether it'll work on OxygenOS.

Update: I've now tested on stock OxygenOS 11.0.16 (EU flavour) and it needed an extra line added, which I've now added and I've replaced the download here. Now it works perfectly on both OxygenOS and LineageOS! :D

I have absolutely no idea what I'm doing and this is provided "as-is" and nothing is my fault etc.
(ɔ) no rights reserved (by me, but other people might have rights, I don't know - look it up if you care)
Hi,
I have the same problem with my nord 2 and oxygen 11, so do you think that if I root my device, and install your magisk module it they will work?
Thanks
Andrea
 

Qualx

Member
Apr 14, 2022
7
3
Hi,
I have the same problem with my nord 2 and oxygen 11, so do you think that if I root my device, and install your magisk module it they will work?
Thanks
Andrea

Almost certainly not, sorry! The files seem extremely device-specific - but by all means give it a go; if your device happens to use the same mixer_paths file I'd expect it would work, and it certainly won't do any harm, apart from needing to wipe your device in the process of rooting it.

I'd be happy to try and make a module for you though if you can work out which mixer_paths file your device is loading and give me a copy of it. I should probably have written down my method in more detail for people with other devices...

I'll check exact commands and update this post with them later on, but essentially, if you restart your device and immediately dump adb logcat output to a file, you should be able to ctrl+F for the string "mixer_paths" and you'll find the phone loading audio routes from one specific mixer_paths_something.xml file during startup. If you then pull that file to your computer with adb (it's located in /vendor/etc, I can't remember if that logcat line has the full path or not) and post it here or DM it to me, I'll make the modifications for you. (And I'll actually document my method this time for future people.)

Also, if you need help with any of the above then please ask! I'm trying not to make assumptions about your level of expertise.
 

andrea7376

Member
Nov 13, 2015
11
1
Almost certainly not, sorry! The files seem extremely device-specific - but by all means give it a go; if your device happens to use the same mixer_paths file I'd expect it would work, and it certainly won't do any harm, apart from needing to wipe your device in the process of rooting it.

I'd be happy to try and make a module for you though if you can work out which mixer_paths file your device is loading and give me a copy of it. I should probably have written down my method in more detail for people with other devices...

I'll check exact commands and update this post with them later on, but essentially, if you restart your device and immediately dump adb logcat output to a file, you should be able to ctrl+F for the string "mixer_paths" and you'll find the phone loading audio routes from one specific mixer_paths_something.xml file during startup. If you then pull that file to your computer with adb (it's located in /vendor/etc, I can't remember if that logcat line has the full path or not) and post it here or DM it to me, I'll make the modifications for you. (And I'll actually document my method this time for future people.)

Also, if you need help with any of the above then please ask! I'm trying not to make assumptions about your level of expertise.
Hi, thanks for your support,
first of all... my symptom are: the bluetooth connect to my hearing aid through the Hearing aid helper in the settings but there don't show nothing connected, but from this point ahead, I can't hear nothing from the phone and no one can hear me through the mic in a call, for this reason I thought it's the same bug, what do you think?

The problem is that I don't have the phone rooted yet, also it's coming the first open beta OS12 for the nord 2, even if it's for the indian version, if it will work I would get a try, but if it is not , I'm will stuck with that beta until it will output the Final OS12.

Anyway I have got from my non rooted phone the LogCat.
 

Attachments

  • LogCat.log
    11.7 KB · Views: 39

Qualx

Member
Apr 14, 2022
7
3
Hi, thanks for your support,
first of all... my symptom are: the bluetooth connect to my hearing aid through the Hearing aid helper in the settings but there don't show nothing connected, but from this point ahead, I can't hear nothing from the phone and no one can hear me through the mic in a call, for this reason I thought it's the same bug, what do you think?

The problem is that I don't have the phone rooted yet, also it's coming the first open beta OS12 for the nord 2, even if it's for the indian version, if it will work I would get a try, but if it is not , I'm will stuck with that beta until it will output the Final OS12.

Anyway I have got from my non rooted phone the LogCat.

It definitely does sound like the same issue!

Cynically, I think it's very unlikely OnePlus will get it working with the OxygenOS 12 beta - they don't care about anything besides whatever current flagship is. Honestly, given my experiences with my own OP7Pro I wouldn't dare to install a OnePlus beta; even their actual releases are barely fit to be called betas.

Your logcat output doesn't seem to have the line specifying the mixer_paths file. You need to restart your phone with it already connected to your PC, since the line appears right at the start while it's booting up, and I think it gets flooded out of the logcat log very soon after the phone has booted up. You definitely don't need a rooted phone to get this info - my own phone's not rooted.

Here's what I did:
  1. Connect phone to PC, get ADB connected and make sure that the phone is set to always allow USB debugging from this PC.
  2. Restart phone.
  3. As soon as the computer registered the phone as disconnected (I was going by the "USB device disconnected" sound but if you're deaf or hard of hearing I think it's when the screen has gone black), I started logcat piped through grep. (I'll explain that last bit in a sec)
  4. ADB should wait for a device to connect.
  5. Around when the OnePlus bootup animation starts, the phone should connect to the computer and almost immediately you should get a line from logcat.
If you're using Windows, this Powershell command will filter logcat output and it'll just output the line you need:
Code:
adb logcat | Select-String 'mixer_paths'

If you're using Linux (or MacOS, probably), you can use grep instead of Select-String:
Code:
adb logcat | grep 'mixer_paths'

The output line you're looking for should look like this (generated from my OP7Pro):
Code:
04-27 14:36:30.932   907   969 D msm8974_platform: platform_init: Loading mixer file: /vendor/etc/mixer_paths_tavil.xml

So in my case, you can see the file I'm looking for is /vendor/etc/mixer_paths_tavil.xml and I can pull it from the device using ADB:
Code:
adb pull /vendor/etc/mixer_paths_tavil.xml

The mixer file your device loads will almost certainly be called something different, but obviously just replace the "tavil" bit with whatever your one is called. If you post that XML file, I'll try and fix it and put the fixed version into a Magisk module for you.

Note: If your file is called mixer_paths_lagoonqrd.xml then that's the same as the Nord CE so the Magisk module I already posted should work for you.
 
Last edited:
  • Like
Reactions: Sony make.believe

andrea7376

Member
Nov 13, 2015
11
1
Bad news,

There isn' that file, and of course isn't called from the boot process.
I have got the all the boot log, but i don't know if there are sensible data inside, and anyway even if there aren't I would send to you directly.
I'm contacting you in private.
 

[[[zen]]]

Senior Member
Mar 1, 2006
75
3
hi Qualx ,
you can help me for the the Hearing aid , i have onePlus5T android 10 OxygenOS 10.0.1 , root with twrp and magisk.
Thanks a lot ( sorry for my bad english )
 

Kev007

Senior Member
Jan 16, 2008
239
11
Leipzig, Germany
www.facebook.com
Hi Qualx,
thanks for adding instructions on how to extract the mixer_paths file. I've attached mine from my OnePlus 6 running crDroid Android 12. I tried copy-pasting the 3 hearing-aid entries to the file, re-zipping the magisk module with my modified .xml and installing the module, but had no difference in functionality. Could you take a look at the original file and work your magic?
Many thanks!
 

harturicko

Member
Oct 26, 2022
9
0
UPDATE: I made it work! I'll add a reply below.

This might be a bit of a stretch, but I don't suppose anyone has managed to get bluetooth hearing aids (that support the ASHA protocol) working properly on this phone, either with OxygenOS or an aftermarket mod? I'm at my wits' end trying to work out why my mum's aren't working for calls while media audio is completely fine.

Stuff we've tried:
  • I've tested her hearing aids on my own OnePlus 7 Pro and they work absolutely perfectly. Media audio is fine, call audio is fine.
  • I tried looking at her phone's logcat output, from vanilla OxygenOS, and there were a *lot* of exceptions being thrown from the BluetoothAdapter constructor, from all sorts of apps. It seems that the static getDefaultAdapter() method was constructing a BluetoothAdapter incorrectly, which implied it was an OxygenOS bug.
  • And so we've just installed the LineageOS build from here, which I was certain would work - no joy. The issue is exactly the same; when the hearing aids are selected as the output device, no sound comes out of them, and the phone's microphone is disabled. With my own phone, it (correctly) uses the phone's microphone as the audio input.
Since media audio is fine, I presume it's not a hardware problem with the bluetooth adapter in the phone? But since the hearing aids work fine with my phone, running vanilla OxygenOS, it can't be an issue with the hearing aids, and since LineageOS fails in exactly the same way as OxygenOS, it surely can't be an issue with the operating system. I'm really out of ideas.
Hello, recently after 5 years of using the hearing aid, took a new one for testing, with bluetooth function. Oticon hearing aid. It suits me very well, but there is a small but, Audio Sharing does not work on my phone Xiaomi Redmi 8 Note Pro. My android version 10.0 and bluetooth version 5.0, all as required. I have read the forum and found out that changing the operating system on the phone can help, but I don't know what exactly needs to be done. I plan to try putting ArrowOS and see if ASHA will be supported.
 

AmarnathNR

Account currently disabled
May 3, 2022
37
9
GB
meettomy.site
Realme X
Hello, recently after 5 years of using the hearing aid, took a new one for testing, with bluetooth function. Oticon hearing aid. It suits me very well, but there is a small but, Audio Sharing does not work on my phone Xiaomi Redmi 8 Note Pro. My android version 10.0 and bluetooth version 5.0, all as required. I have read the forum and found out that changing the operating system on the phone can help, but I don't know what exactly needs to be done. I plan to try putting ArrowOS and see if ASHA will be supported.
Hi, most success I have noticed are
  1. ported OOS 11 ROM if available for your device
  2. if not available you need to try with Android 12/13 custom ROM(s). [i prefer A13]
    1. Please note its just not ROM which need ASHA feature enabled but also config needs to be set in source Device tree (Device specific configs to enable BLE options).
Also most imp hearing aid option dont appear under Accessibility until and unless you enabled the Bluetooth meaning if BT is turned off then option will disappear automatically and you dont find it anywhere.. turn-on then it will come under Accessibility.
Please go thru this link, recently I helped few to get the Audio streaming fixed.
 

Tesito

New member
Jan 17, 2015
3
0
Hi, I have a OnePlus 6 and tried to modify the mixer file, but it doesn't work.
There is no sound when calling.
How do you know what to put in the path entries?

Edit: The file (mixer_paths_tavil.xml) won't attach. So here is the first part of the file. I hope that is enough to get the necessary info
XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.    -->
<!--                                                                        -->
<!-- Redistribution and use in source and binary forms, with or without     -->
<!-- modification, are permitted provided that the following conditions are -->
<!-- met:                                                                   -->
<!--     * Redistributions of source code must retain the above copyright   -->
<!--       notice, this list of conditions and the following disclaimer.    -->
<!--     * Redistributions in binary form must reproduce the above          -->
<!--       copyright notice, this list of conditions and the following      -->
<!--       disclaimer in the documentation and/or other materials provided  -->
<!--       with the distribution.                                           -->
<!--     * Neither the name of The Linux Foundation nor the names of its    -->
<!--       contributors may be used to endorse or promote products derived  -->
<!--       from this software without specific prior written permission.    -->
<!--                                                                        -->
<!-- THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED           -->
<!-- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF   -->
<!-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -->
<!-- ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -->
<!-- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -->
<!-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF   -->
<!-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        -->
<!-- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,  -->
<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          -->
<mixer>
    <!-- These are the initial mixer settings -->
    <ctl name="Voice Rx Device Mute" id="0" value="0" />
    <ctl name="Voice Rx Device Mute" id="1" value="-1" />
    <ctl name="Voice Rx Device Mute" id="2" value="20" />
    <ctl name="Voice Tx Mute" id="0" value="0" />
    <ctl name="Voice Tx Mute" id="1" value="-1" />
    <ctl name="Voice Tx Mute" id="2" value="500" />
    <ctl name="Voice Rx Gain" id="0" value="0" />
    <ctl name="Voice Rx Gain" id="1" value="-1" />
    <ctl name="Voice Rx Gain" id="2" value="20" />
    <ctl name="Voice Sidetone Enable" value="0" />
    <ctl name="Voip Tx Mute" id="0" value="0" />
    <ctl name="Voip Tx Mute" id="1" value="500" />
    <ctl name="Voip Rx Gain" id="0" value="0" />
    <ctl name="Voip Rx Gain" id="1" value="20" />
    <ctl name="Voip Mode Config" value="12" />
    <ctl name="Voip Rate Config" value="0" />
    <ctl name="Voip Evrc Min Max Rate Config" id="0" value="1" />
    <ctl name="Voip Evrc Min Max Rate Config" id="1" value="4" />
    <ctl name="Voip Dtx Mode" value="0" />
    <ctl name="TTY Mode" value="OFF" />
    <ctl name="SLIMBUS_0_RX Port Mixer SLIM_0_TX" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia1" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia5" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia7" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia8" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia11" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia12" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia13" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia14" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia15" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia16" value="0" />
    <ctl name="SLIMBUS_6_RX Port Mixer SLIM_0_TX" value="0" />
    <ctl name="SLIMBUS_4_RX Audio Mixer MultiMedia1" value="0" />
    <ctl name="SLIMBUS_4_RX Audio Mixer MultiMedia2" value="0" />
    <ctl name="MultiMedia5 Mixer SLIM_0_TX" value="0" />
    <ctl name="MultiMedia5 Mixer AFE_PCM_TX" value="0" />
    <ctl name="MultiMedia5 Mixer SLIM_8_TX" value="0" />
    <ctl name="MultiMedia5 Mixer SLIM_7_TX" value="0" />
    <ctl name="MultiMedia1 Mixer SLIM_0_TX" value="0" />
    <ctl name="MultiMedia1 Mixer SLIM_4_TX" value="0" />
    <ctl name="MultiMedia1 Mixer SLIM_7_TX" value="0" />
    <ctl name="MultiMedia8 Mixer SLIM_0_TX" value="0" />
    <ctl name="MultiMedia8 Mixer SLIM_4_TX" value="0" />
    <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="0" />
    <ctl name="MultiMedia10 Mixer SLIM_0_TX" value="0" />
    <ctl name="MultiMedia10 Mixer SLIM_7_TX" value="0" />
    <ctl name="MultiMedia10 Mixer AFE_PCM_TX" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia1" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia2" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia3" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia4" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia5" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia6" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia7" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia8" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia9" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia10" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia11" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia12" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia13" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia14" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia15" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia16" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia2" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia2" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia5" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia7" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia7" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia8" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia8" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia8" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia10" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia10" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia11" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia11" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia12" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia12" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia13" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia13" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia14" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia14" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia15" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia15" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="0" />
    <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="0" />
    <ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia16" value="0" />
    <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia1" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia2" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia3" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia5" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia7" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia8" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia10" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia11" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia12" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia13" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia14" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia15" value="0" />
    <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia16" value="0" />
    <ctl name="MultiMedia1 Mixer USB_AUDIO_TX" value="0" />
    <ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="0" />
    <ctl name="MultiMedia5 Mixer USB_AUDIO_TX" value="0" />
    <ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="0" />
    <ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="0" />
    <!-- #ifdef VENDOR_EDIT-->
    <!-- #if OP_FEATURE_MM_RECORDING_SCREEN == 1-->
    <!-- zhanglixia@MM.Audio, 2019/07/13, add for screen record -->
    <ctl name="MultiMedia1 Mixer AFE_LOOPBACK_TX" value="0" />
    <ctl name="AUDIO_REF_EC_UL1 MUX" value="ZERO" />
    <ctl name="EC Reference Channels" value="One" />
    <ctl name="EC Reference Bit Format" value="S16_LE" />
    <ctl name="EC Reference SampleRate" value="48000" />
    <ctl name="USB_TX Channels" value="One" />
    <ctl name="AFE_LOOPBACK_TX Channels" value="One" />
    <ctl name="MultiMedia1 Channels" value="1" />
    <ctl name="MultiMedia1 Channel Rule" value="2" />
    <ctl name="MultiMedia1 Output Channel1" value="0 0" />
    <ctl name="MultiMedia1 Channel Mixer" value="Enable" />
    <ctl name="MultiMedia1 Channel1" value="USB_TX" />
    <ctl name="MultiMedia1 Channel2" value="AFE_LOOPBACK_TX" />
    <!-- #endif OP_FEATURE_MM_RECORDING_SCREEN-->
    <!-- #endif VENDOR_EDIT-->
    <ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
    <ctl name="SLIM_2_RX Format" value="UNPACKED" />
    <ctl name="SLIM_2_RX SampleRate" value="KHZ_48" />
    <ctl name="SLIM_5_RX SampleRate" value="KHZ_44P1" />
    <ctl name="SLIM_0_RX Channels" value="One" />
    <ctl name="SLIM_5_RX Channels" value="One" />
    <ctl name="SLIM_6_RX Channels" value="One" />
    <ctl name="SLIM_2_RX Channels" value="One" />
    <ctl name="SLIM_0_TX Channels" value="One" />
    <ctl name="SLIM_1_TX Channels" value="One" />
    <ctl name="AIF1_CAP Mixer SLIM TX9" value="0"/>
    <ctl name="AIF1_CAP Mixer SLIM TX8" value="0"/>
    <ctl name="AIF1_CAP Mixer SLIM TX7" value="0" />
    <ctl name="AIF1_CAP Mixer SLIM TX6" value="0" />
    <ctl name="AIF1_CAP Mixer SLIM TX5" value="0"/>
    <ctl name="AIF1_CAP Mixer SLIM TX4" value="0" />
    <ctl name="AIF1_CAP Mixer SLIM TX3" value="0"/>
    <ctl name="AIF1_CAP Mixer SLIM TX2" value="0" />
    <ctl name="AIF1_CAP Mixer SLIM TX1" value="0"/>
    <ctl name="AIF1_CAP Mixer SLIM TX0" value="0"/>
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="SLIM0_RX_VI_FB_LCH_MUX" value="ZERO" />
    <ctl name="SLIM0_RX_VI_FB_RCH_MUX" value="ZERO" />
    <ctl name="VI_FEED_TX Channels" value="Two" />
    <ctl name="AIF4_VI Mixer SPKR_VI_1" value="0" />
    <ctl name="AIF4_VI Mixer SPKR_VI_2" value="0" />
    <ctl name="SLIM_4_TX Format" value="UNPACKED" />
    <ctl name="AANC_SLIM_0_RX MUX" value="ZERO" />
    <!-- HFP start -->
    <ctl name="HFP_PRI_AUX_UL_HL Switch" value="0" />
    <ctl name="SLIMBUS_0_RX Port Mixer SLIM_7_TX" value="0" />
    <!-- HFP end -->
    <!-- echo reference -->
    <ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
    <!-- usb headset -->
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia1" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia2" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia7" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia11" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia12" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia13" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia14" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia15" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia16" value="0" />
    <ctl name="MultiMedia1 Mixer AFE_PCM_TX" value="0" />
    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia5" value="0" />
    <!-- usb headset end -->
    <!-- fm -->
    <ctl name="SLIMBUS_8 LOOPBACK Volume" value="0" />
    <ctl name="SLIMBUS_0_RX Port Mixer SLIM_8_TX" value="0" />
    <ctl name="SLIMBUS_DL_HL Switch" value="0" />
    <ctl name="SLIMBUS_6_RX Port Mixer SLIM_8_TX" value="0" />
    <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
    <ctl name="MultiMedia1 Mixer SLIM_8_TX" value="0" />
    <ctl name="MultiMedia2 Mixer SLIM_8_TX" value="0" />
    <!-- fm end -->

    <!-- Multimode Voice1 -->
    <ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="0" />
    <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="0" />
    <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
    <!-- Multimode Voice1 BTSCO -->
    <ctl name="SLIM_7_RX_Voice Mixer VoiceMMode1" value="0" />
    <ctl name="VoiceMMode1_Tx Mixer SLIM_7_TX_MMode1" value="0" />
    <!-- Multimode Voice1 USB headset -->
    <ctl name="AFE_PCM_RX_Voice Mixer VoiceMMode1" value="0" />
    <ctl name="VoiceMMode1_Tx Mixer AFE_PCM_TX_MMode1" value="0" />
    <ctl name="USB_AUDIO_RX_Voice Mixer VoiceMMode1" value="0" />
    <ctl name="VoiceMMode1_Tx Mixer USB_AUDIO_TX_MMode1" value="0" />
    <!-- Multimode Voice1 Display-Port -->
    <ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode1" value="0" />
    <!-- Miltimode Voice1 end-->

    <!-- Multimode Voice2 -->
    <ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="0" />
    <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="0" />
    <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
    <!-- Multimode Voice2 BTSCO -->
    <ctl name="SLIM_7_RX_Voice Mixer VoiceMMode2" value="0" />
    <ctl name="VoiceMMode2_Tx Mixer SLIM_7_TX_MMode2" value="0" />
    <!-- Multimode Voice2 USB headset -->
    <ctl name="AFE_PCM_RX_Voice Mixer VoiceMMode2" value="0" />
    <ctl name="VoiceMMode2_Tx Mixer AFE_PCM_TX_MMode2" value="0" />
    <ctl name="USB_AUDIO_RX_Voice Mixer VoiceMMode2" value="0" />
    <ctl name="VoiceMMode2_Tx Mixer USB_AUDIO_TX_MMode2" value="0" />
    <!-- Multimode Voice2 Display-Port -->
    <ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode2" value="0" />
    <!-- Multimode Voice2 end-->

    <!-- Voice external ec. reference -->
    <ctl name="VOC_EXT_EC MUX" value="NONE" />
    <ctl name="AIF3_CAP Mixer SLIM TX1" value="0" />
    <ctl name="AIF3_CAP Mixer SLIM TX2" value="0" />
    <!-- Voice external ec. reference end -->

    <!-- RT Proxy Cal -->
    <ctl name="RT_PROXY_1_RX SetCalMode" value="CAL_MODE_NONE" />
    <ctl name="RT_PROXY_1_TX SetCalMode" value="CAL_MODE_NONE" />
    <!-- RT Proxy Cal end -->

    <!-- Incall Recording -->
    <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="0" />
    <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" />
    <ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" />
    <ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" />
    <!-- Incall Recording End -->

    <!-- Incall Music -->
    <ctl name="Incall_Music Audio Mixer MultiMedia2" value="0" />
    <!-- Incall Music End -->

    <!-- compress-voip-call start -->
    <ctl name="SLIM_0_RX_Voice Mixer Voip" value="0" />
    <ctl name="SLIM_6_RX_Voice Mixer Voip" value="0" />
    <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="0" />
    <ctl name="SLIM_7_RX_Voice Mixer Voip" value="0" />
    <ctl name="Voip_Tx Mixer SLIM_7_TX_Voip" value="0" />
    <ctl name="AFE_PCM_RX_Voice Mixer Voip" value="0" />
    <ctl name="Voip_Tx Mixer AFE_PCM_TX_Voip" value="0" />
    <ctl name="USB_AUDIO_RX_Voice Mixer Voip" value="0" />
    <ctl name="Voip_Tx Mixer USB_AUDIO_TX_Voip" value="0" />
    <!-- compress-voip-call end-->

    <!-- Audio BTSCO -->
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia1" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia5" value="0" />
    <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia6" value="0" />
    <ctl name="MultiMedia1 Mixer SLIM_7_TX" value="0" />
    <!-- audio record compress-->
    <ctl name="MultiMedia8 Mixer SLIM_0_TX" value="0" />
    <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="0" />
    <ctl name="MultiMedia8 Mixer AFE_PCM_TX" value="0" />
    <!-- audio record compress end-->

    <!-- split a2dp -->
    <ctl name="BT SampleRate" value="KHZ_8" />
    <ctl name="AFE Input Channels" value="Zero" />
    <ctl name="SLIM7_RX ADM Channels" value="Zero" />
    <!-- split a2dp end-->

    <!-- ADSP testfwk -->
    <ctl name="SLIMBUS_DL_HL Switch" value="0" />
    <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
    <!-- ADSP testfwk end-->

    <ctl name="AFE_PCM_RX Audio Mixer MultiMedia3" value="0" />

    <!-- Codec controls -->
    <!-- WSA controls -->
    <ctl name="SpkrLeft COMP Switch" value="0" />
    <ctl name="SpkrRight COMP Switch" value="0" />
    <ctl name="SpkrLeft BOOST Switch" value="0" />
    <ctl name="SpkrRight BOOST Switch" value="0" />
    <ctl name="SpkrLeft VISENSE Switch" value="0" />
    <ctl name="SpkrRight VISENSE Switch" value="0" />
    <ctl name="SpkrLeft SWR DAC_Port Switch" value="0" />
    <ctl name="SpkrRight SWR DAC_Port Switch" value="0" />
    <ctl name="SpkrLeft WSA PA Gain" value="G_0_DB" />

    <!-- Volume controls -->
    <ctl name="LINEOUT1 Volume" value="13" />
    <ctl name="LINEOUT2 Volume" value="13" />
    <ctl name="HPHL Volume" value="20" />
    <ctl name="HPHR Volume" value="20" />
    <ctl name="EAR PA Gain" value="G_6_DB" />
    <ctl name="EAR SPKR PA Gain" value="G_DEFAULT" />

    <ctl name="RX0 Digital Volume" value="84" />
    <ctl name="RX1 Digital Volume" value="84" />
    <ctl name="RX2 Digital Volume" value="84" />
    <ctl name="RX3 Digital Volume" value="84" />
    <ctl name="RX4 Digital Volume" value="84" />
    <ctl name="RX5 Digital Volume" value="84" />
    <ctl name="RX6 Digital Volume" value="84" />
    <ctl name="RX7 Digital Volume" value="84" />
    <ctl name="ADC1 Volume" value="12" />
    <ctl name="ADC2 Volume" value="12" />
    <ctl name="ADC3 Volume" value="12" />
    <ctl name="ADC4 Volume" value="12" />
    <ctl name="DEC0 Volume" value="84" />
    <ctl name="DEC1 Volume" value="84" />
    <ctl name="DEC2 Volume" value="84" />
    <ctl name="DEC3 Volume" value="84" />
    <ctl name="DEC4 Volume" value="84" />
    <ctl name="DEC5 Volume" value="84" />
    <ctl name="DEC6 Volume" value="84" />
    <ctl name="DEC7 Volume" value="84" />
    <ctl name="DEC8 Volume" value="84" />

    <!-- Compander controls -->
    <ctl name="COMP1 Switch" value="1" />
    <ctl name="COMP2 Switch" value="1" />
    <ctl name="COMP7 Switch" value="0" />
    <ctl name="COMP8 Switch" value="0" />

    <!-- ADC, DMIC and AMIC controls -->
    <ctl name="ADC MUX0" value="AMIC" />
    <ctl name="ADC MUX1" value="AMIC" />
    <ctl name="ADC MUX2" value="AMIC" />
    <ctl name="ADC MUX3" value="AMIC" />
    <ctl name="ADC MUX4" value="AMIC" />
    <ctl name="ADC MUX5" value="AMIC" />
    <ctl name="ADC MUX6" value="AMIC" />
    <ctl name="ADC MUX7" value="AMIC" />
    <ctl name="ADC MUX8" value="AMIC" />
    <ctl name="ADC MUX10" value="AMIC" />
    <ctl name="ADC MUX11" value="AMIC" />
    <ctl name="ADC MUX12" value="AMIC" />
    <ctl name="ADC MUX13" value="AMIC" />
    <ctl name="DMIC MUX0" value="ZERO" />
    <ctl name="DMIC MUX1" value="ZERO" />
    <ctl name="DMIC MUX2" value="ZERO" />
    <ctl name="DMIC MUX3" value="ZERO" />
    <ctl name="DMIC MUX4" value="ZERO" />
    <ctl name="DMIC MUX5" value="ZERO" />
    <ctl name="DMIC MUX6" value="ZERO" />
    <ctl name="DMIC MUX7" value="ZERO" />
    <ctl name="DMIC MUX8" value="ZERO" />
    <ctl name="DMIC MUX10" value="ZERO" />
    <ctl name="DMIC MUX11" value="ZERO" />
    <ctl name="DMIC MUX12" value="ZERO" />
    <ctl name="DMIC MUX13" value="ZERO" />
    <ctl name="AMIC MUX0" value="ZERO" />
    <ctl name="AMIC MUX1" value="ZERO" />
    <ctl name="AMIC MUX2" value="ZERO" />
    <ctl name="AMIC MUX3" value="ZERO" />
    <ctl name="AMIC MUX4" value="ZERO" />
    <ctl name="AMIC MUX5" value="ZERO" />
    <ctl name="AMIC MUX6" value="ZERO" />
    <ctl name="AMIC MUX7" value="ZERO" />
    <ctl name="AMIC MUX8" value="ZERO" />
    <ctl name="AMIC MUX10" value="ZERO" />
    <ctl name="AMIC MUX11" value="ZERO" />
    <ctl name="AMIC MUX12" value="ZERO" />
    <ctl name="AMIC MUX13" value="ZERO" />

    <ctl name="AMIC4_5 SEL" value="AMIC4" />
    <!-- CDC_IF and SLIM controls -->
    <ctl name="SLIM RX0 MUX" value="ZERO" />
    <ctl name="SLIM RX1 MUX" value="ZERO" />
    <ctl name="SLIM RX2 MUX" value="ZERO" />
    <ctl name="SLIM RX3 MUX" value="ZERO" />
    <ctl name="SLIM RX4 MUX" value="ZERO" />
    <ctl name="SLIM RX5 MUX" value="ZERO" />
    <ctl name="SLIM RX6 MUX" value="ZERO" />
    <ctl name="SLIM RX7 MUX" value="ZERO" />
    <ctl name="CDC_IF RX0 MUX" value="SLIM RX0" />
    <ctl name="CDC_IF RX1 MUX" value="SLIM RX1" />
    <ctl name="CDC_IF RX2 MUX" value="SLIM RX2" />
    <ctl name="CDC_IF RX3 MUX" value="SLIM RX3" />
    <ctl name="CDC_IF RX4 MUX" value="SLIM RX4" />
    <ctl name="CDC_IF RX5 MUX" value="SLIM RX5" />
    <ctl name="CDC_IF RX6 MUX" value="SLIM RX6" />
    <ctl name="CDC_IF RX7 MUX" value="SLIM RX7" />
    <ctl name="CDC_IF TX0 MUX" value="ZERO" />
    <ctl name="CDC_IF TX1 MUX" value="ZERO" />
    <ctl name="CDC_IF TX2 MUX" value="ZERO" />
    <ctl name="CDC_IF TX3 MUX" value="ZERO" />
    <ctl name="CDC_IF TX4 MUX" value="ZERO" />
    <ctl name="CDC_IF TX5 MUX" value="ZERO" />
    <ctl name="CDC_IF TX6 MUX" value="ZERO" />
    <ctl name="CDC_IF TX7 MUX" value="ZERO" />
    <ctl name="CDC_IF TX8 MUX" value="ZERO" />
    <ctl name="CDC_IF TX9 MUX" value="ZERO" />
    <ctl name="CDC_IF TX10 MUX" value="ZERO" />
    <ctl name="CDC_IF TX13 MUX" value="ZERO" />

    <!-- Interpolator chain controls -->
    <ctl name="RX INT0_1 MIX1 INP0" value="ZERO" />
    <ctl name="RX INT0_1 MIX1 INP1" value="ZERO" />
    <ctl name="RX INT0_1 MIX1 INP2" value="ZERO" />
    <ctl name="RX INT1_1 MIX1 INP0" value="ZERO" />
    <ctl name="RX INT1_1 MIX1 INP1" value="ZERO" />
    <ctl name="RX INT1_1 MIX1 INP2" value="ZERO" />
    <ctl name="RX INT2_1 MIX1 INP0" value="ZERO" />
    <ctl name="RX INT2_1 MIX1 INP1" value="ZERO" />
    <ctl name="RX INT2_1 MIX1 INP2" value="ZERO" />
    <ctl name="RX INT7_1 MIX1 INP0" value="ZERO" />
    <ctl name="RX INT7_1 MIX1 INP1" value="ZERO" />
    <ctl name="RX INT7_1 MIX1 INP2" value="ZERO" />
    <ctl name="RX INT8_1 MIX1 INP0" value="ZERO" />
    <ctl name="RX INT8_1 MIX1 INP1" value="ZERO" />
    <ctl name="RX INT8_1 MIX1 INP2" value="ZERO" />
    <ctl name="RX INT0_2 MUX" value="ZERO" />
    <ctl name="RX INT1_2 MUX" value="ZERO" />
    <ctl name="RX INT2_2 MUX" value="ZERO" />
    <ctl name="RX INT7_2 MUX" value="ZERO" />
    <ctl name="RX INT8_2 MUX" value="ZERO" />
    <ctl name="RX INT1_1 NATIVE MUX" value="OFF" />
    <ctl name="RX INT2_1 NATIVE MUX" value="OFF" />
    <ctl name="RX INT1_2 NATIVE MUX" value="OFF" />
    <ctl name="RX INT2_2 NATIVE MUX" value="OFF" />
    <ctl name="ASRC0 MUX" value="ZERO" />
    <ctl name="ASRC1 MUX" value="ZERO" />
    <ctl name="RX INT1 SEC MIX HPHL Switch" value="0" />
    <ctl name="RX INT2 SEC MIX HPHR Switch" value="0" />
    <ctl name="DSD_L IF MUX" value="ZERO" />
    <ctl name="DSD_R IF MUX" value="ZERO" />
    <ctl name="RX INT1 MIX3 DSD HPHL Switch" value="0" />
    <ctl name="RX INT2 MIX3 DSD HPHR Switch" value="0" />
    <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
    <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
    <ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
    <!-- echo reference -->
    <ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
     <ctl name="AUDIO_REF_EC_UL5 MUX" value="None" />
     <ctl name="AUDIO_REF_EC_UL8 MUX" value="None" />

    <!-- Headphone Default mode - uLP -->
    <ctl name="RX HPH Mode" value="CLS_H_ULP" />
    <ctl name="ASRC0 Output Mode" value="INT" />
    <ctl name="ASRC1 Output Mode" value="INT" />

    <!-- IIR/voice anc -->
    <ctl name="IIR0 Band1" id ="0" value="268435456" />
    <ctl name="IIR0 Band1" id ="1" value="0" />
    <ctl name="IIR0 Band1" id ="2" value="0" />
    <ctl name="IIR0 Band1" id ="3" value="0" />
    <ctl name="IIR0 Band1" id ="4" value="0" />
    <ctl name="IIR0 Band2" id ="0" value="268435456" />
    <ctl name="IIR0 Band2" id ="1" value="0" />
    <ctl name="IIR0 Band2" id ="2" value="0" />
    <ctl name="IIR0 Band2" id ="3" value="0" />
    <ctl name="IIR0 Band2" id ="4" value="0" />
    <ctl name="IIR0 Band3" id ="0" value="268435456" />
    <ctl name="IIR0 Band3" id ="1" value="0" />
    <ctl name="IIR0 Band3" id ="2" value="0" />
    <ctl name="IIR0 Band3" id ="3" value="0" />
    <ctl name="IIR0 Band3" id ="4" value="0" />
    <ctl name="IIR0 Band4" id ="0" value="268435456" />
    <ctl name="IIR0 Band4" id ="1" value="0" />
    <ctl name="IIR0 Band4" id ="2" value="0" />
    <ctl name="IIR0 Band4" id ="3" value="0" />
    <ctl name="IIR0 Band4" id ="4" value="0" />
    <ctl name="IIR0 Band5" id ="0" value="268435456" />
    <ctl name="IIR0 Band5" id ="1" value="0" />
    <ctl name="IIR0 Band5" id ="2" value="0" />
    <ctl name="IIR0 Band5" id ="3" value="0" />
    <ctl name="IIR0 Band5" id ="4" value="0" />
    <ctl name="IIR0 Enable Band1" value="0" />
    <ctl name="IIR0 Enable Band2" value="0" />
    <ctl name="IIR0 Enable Band3" value="0" />
    <ctl name="IIR0 Enable Band4" value="0" />
    <ctl name="IIR0 Enable Band5" value="0" />
    <ctl name="IIR0 INP0 Volume" value="54" />
    <ctl name="IIR0 INP0 MUX" value="ZERO" />
    <ctl name="IIR0 INP1 MUX" value="ZERO" />
    <ctl name="IIR0 INP2 MUX" value="ZERO" />
    <ctl name="IIR1 INP0 MUX" value="ZERO" />
    <ctl name="IIR1 INP1 MUX" value="ZERO" />
    <ctl name="IIR1 INP2 MUX" value="ZERO" />

    <!-- anc related -->
    <ctl name="ANC Slot" value="0" />
    <ctl name="ANC Function" value="OFF" />
    <ctl name="ANC0 FB MUX" value="ZERO" />
    <ctl name="ANC1 FB MUX" value="ZERO" />
    <ctl name="ANC OUT EAR Enable Switch" value="0" />
    <ctl name="ANC OUT EAR SPKR Enable Switch" value="0" />
    <ctl name="ANC SPKR PA Enable Switch" value="0" />
    <ctl name="ANC OUT HPHL Enable Switch" value="0" />
    <ctl name="ANC OUT HPHR Enable Switch" value="0" />

    <!-- Codec controls end -->

    <!-- mixer control to disable lowlatency qos voting -->
    <ctl name="MultiMedia5_RX QOS Vote" value="Disable" />
    <!-- mixer control to disable lowlatency qos voting end -->
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia1" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia3" value="0" />
    <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia10" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia11" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia12" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia13" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia14" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia15" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia16" value="0" />
    <ctl name="QUAT_MI2S_RX_Voice Mixer CSVoice" value="0" />
    <ctl name="QUAT_MI2S_RX_Voice Mixer Voice2" value="0" />
    <ctl name="QUAT_MI2S_RX_Voice Mixer VoLTE" value="0" />
    <ctl name="QUAT_MI2S_RX_Voice Mixer Voip" value="0" />
    <ctl name="QUAT_MI2S_RX_Voice Mixer VoWLAN" value="0" />
    <ctl name="QUAT_MI2S_RX_Voice Mixer VoiceMMode1" value="0" />
    <ctl name="QUAT_MI2S_RX_Voice Mixer VoiceMMode2" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia4" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia5" value="0" />
    <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia7" value="0" />

    <!-- defaults for mmap record -->
    <ctl name="MultiMedia16 Mixer SLIM_0_TX" value="0" />
    <ctl name="MultiMedia16 Mixer SLIM_7_TX" value="0" />
    <ctl name="MultiMedia16 Mixer SLIM_8_TX" value="0" />
    <ctl name="MultiMedia16 Mixer USB_AUDIO_TX" value="0" />

    <ctl name="mono Profile" value="MUSIC_48000" />

    <!-- These are audio route (FE to BE) specific mixer settings -->
    <path name="gsm-mode">
        <ctl name="GSM mode Enable" value="ON" />
    </path>

    <path name="echo-reference">
        <ctl name="AUDIO_REF_EC_UL1 MUX" value="QUAT_MI2S_TX" />
    </path>

    <path name="echo-reference-skype quat_i2s">
         <ctl name="AUDIO_REF_EC_UL8 MUX" value="QUAT_MI2S_TX" />
    </path>

    <path name="echo-reference quat_i2s">
         <ctl name="AUDIO_REF_EC_UL10 MUX" value="QUAT_MI2S_TX" />
    </path>

    <path name="echo-reference headphones">
        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
    </path>

    <path name="echo-reference display-port">
        <ctl name="AUDIO_REF_EC_UL1 MUX" value="DISPLAY_PORT" />
    </path>

    <path name="echo-reference headphones-44.1">
        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
    </path>
 
Last edited:

Samms

Senior Member
Apr 5, 2012
214
30
Seems I'm in the same boat. Running LineageOS 19.1 on my OP6. It seems to connect fine but no streaming, even when the BT hearing aids are selected/active as output. Sound is sent to the phone speaker instead of the hearing aid.

here's the pastebin of my mixer_paths_tavil.xml: https://pastebin.pl/view/0c6be8b8
 

Samms

Senior Member
Apr 5, 2012
214
30
Seems I'm in the same boat. Running LineageOS 19.1 on my OP6. It seems to connect fine but no streaming, even when the BT hearing aids are selected/active as output. Sound is sent to the phone speaker instead of the hearing aid.

here's the pastebin of my mixer_paths_tavil.xml: https://pastebin.pl/view/0c6be8b8

Finally managed to get it to work. Seems A12 just doesn't like OP6 when it comes to ASHA.
I just flashed LineageOS 20 (A13) and I can now stream audio to my hearing aids (Oticon More 2).

 

lord high executioner

Senior Member
Jan 8, 2014
93
26
Finally managed to get it to work. Seems A12 just doesn't like OP6 when it comes to ASHA.
I just flashed LineageOS 20 (A13) and I can now stream audio to my hearing aids (Oticon More 2).

But can you make and receive calls?
I updated to LOS20 today, and music streaming works.
Calls are still mute (as is the phone's ear piece, only sound during calls is from speaker).
 

lord high executioner

Senior Member
Jan 8, 2014
93
26
No luck with that yet unfortunately.
D**
It shouldn't be that hard, now that media is played.
Since the input has to be from phone anyway, the mixer just needs to route phone output to the hearing aids -- which, in fact, the dialer pretends to do: I can select the hearing aids, but no audio (and everything gets rather sluggish until I switch back to speaker,which hints at high CPU usage, supported by logcat's innumerable lines of
Code:
E audio_hw_primary: start_input_stream: cannot set hw params: Invalid argument
).
I got the nagging feeling, @AmarnathNR is attempting exactly that.
 

derulf

Senior Member
Sep 11, 2012
155
37
Huawei Y6
Hi there, I have a Xiaomi note 11pro 5g (veux) Do you folks here think that I can try a similar approach to get my heating aids streaming Audio with the phone ..the phone streaming audio to my hearing aids like you successfully did?
 

derulf

Senior Member
Sep 11, 2012
155
37
Huawei Y6
I got asha protocol hearing aids somehow connected to my xiaomi note 11 pro 5g (veux) with a pixel experience extendet and also with the evolution X rom for veux.
Everything works but only calls are not possible with streaming support.
I find it strange that whatsapp calls via asha connected hearing aids are no problem with both roms, ringtones play, media play everything is nice but no phone calls ??
Any Ideas ?
 

Top Liked Posts

  • There are no posts matching your filters.
  • 2
    I managed to make it work!

    Apparently OnePlus in their infinite wisdom didn't bother to put the hearing-aid and hearing-aid-mic audio route paths in /vendor/etc/mixer_paths_lagoonqrd.xml (that file name might be LineageOS specific - my own phone has two mixer_paths_*.xml files and neither of them are called that). I've attached a Magisk module with my fix in case it's useful for anyone else.

    Please note: I've only tested this with LineageOS 18.1 and it's a modification of the LineageOS file I pulled from my mum's phone; I have absolutely no idea whether it'll work on OxygenOS.

    Update: I've now tested on stock OxygenOS 11.0.16 (EU flavour) and it needed an extra line added, which I've now added and I've replaced the download here. Now it works perfectly on both OxygenOS and LineageOS! :D

    I have absolutely no idea what I'm doing and this is provided "as-is" and nothing is my fault etc.
    (ɔ) no rights reserved (by me, but other people might have rights, I don't know - look it up if you care)
    1
    Hi, thanks for your support,
    first of all... my symptom are: the bluetooth connect to my hearing aid through the Hearing aid helper in the settings but there don't show nothing connected, but from this point ahead, I can't hear nothing from the phone and no one can hear me through the mic in a call, for this reason I thought it's the same bug, what do you think?

    The problem is that I don't have the phone rooted yet, also it's coming the first open beta OS12 for the nord 2, even if it's for the indian version, if it will work I would get a try, but if it is not , I'm will stuck with that beta until it will output the Final OS12.

    Anyway I have got from my non rooted phone the LogCat.

    It definitely does sound like the same issue!

    Cynically, I think it's very unlikely OnePlus will get it working with the OxygenOS 12 beta - they don't care about anything besides whatever current flagship is. Honestly, given my experiences with my own OP7Pro I wouldn't dare to install a OnePlus beta; even their actual releases are barely fit to be called betas.

    Your logcat output doesn't seem to have the line specifying the mixer_paths file. You need to restart your phone with it already connected to your PC, since the line appears right at the start while it's booting up, and I think it gets flooded out of the logcat log very soon after the phone has booted up. You definitely don't need a rooted phone to get this info - my own phone's not rooted.

    Here's what I did:
    1. Connect phone to PC, get ADB connected and make sure that the phone is set to always allow USB debugging from this PC.
    2. Restart phone.
    3. As soon as the computer registered the phone as disconnected (I was going by the "USB device disconnected" sound but if you're deaf or hard of hearing I think it's when the screen has gone black), I started logcat piped through grep. (I'll explain that last bit in a sec)
    4. ADB should wait for a device to connect.
    5. Around when the OnePlus bootup animation starts, the phone should connect to the computer and almost immediately you should get a line from logcat.
    If you're using Windows, this Powershell command will filter logcat output and it'll just output the line you need:
    Code:
    adb logcat | Select-String 'mixer_paths'

    If you're using Linux (or MacOS, probably), you can use grep instead of Select-String:
    Code:
    adb logcat | grep 'mixer_paths'

    The output line you're looking for should look like this (generated from my OP7Pro):
    Code:
    04-27 14:36:30.932   907   969 D msm8974_platform: platform_init: Loading mixer file: /vendor/etc/mixer_paths_tavil.xml

    So in my case, you can see the file I'm looking for is /vendor/etc/mixer_paths_tavil.xml and I can pull it from the device using ADB:
    Code:
    adb pull /vendor/etc/mixer_paths_tavil.xml

    The mixer file your device loads will almost certainly be called something different, but obviously just replace the "tavil" bit with whatever your one is called. If you post that XML file, I'll try and fix it and put the fixed version into a Magisk module for you.

    Note: If your file is called mixer_paths_lagoonqrd.xml then that's the same as the Nord CE so the Magisk module I already posted should work for you.
    1
    I have exactly the same problem. Did you find a solution?
    No, tried serveral modifications in that mixer_path file, but to no avail.
    I am still suprised that apparently no app exists that allows mangement of audio devices and streams.