I have a strange situation where my Bluetooth headset does not work for (most) VoLTE calls. More specifically, I can perfectly hear the other end, while they are unable to hear me.
Is there a way to find out why? And how can I mitigate it?
- Xiaomi Redmi Note 8T with LineageOS 17.1 (build from 12. July 2021)
- AfterShokz Trekz Titanium Bluetooth headset
- Using the German carrier O2.
What I know so far
Headset works perfectly fine for music, non-VoLTE calls, audio recording apps, WhatsApp voice messages, etc.
- If I switch the audio to phone or speaker during the call, everything works as expected. If I change it back to the headset the other party no longer hears me. I can switch back and forth multiple times with the same results.
- If I disable VoLTE calls the headset works fine.
- The problem does not occur on all VoLTE calls, but on most. It seems to be consistent with the opposing party, i.e., happens all the time with caller A, happens never with caller B.
- Most tests done in a zone with excellent LTE+ coverage (full bars and I can even see the antenna tower). The problem seems to be independent of the LTE tower or city I am in.
- When on VoLTE calls, the audio quality is definetley better.
Ideas I had
My prime suspect is “audio codecs”.
When I connect this headset to Windows, it appears as two devices: “hands free audio” and “stereo headset”. And only the “hands free audio” one is able to also record sound. When I switch the output to “headset” the audio quality is worse. Also, when I am using the headset’s microphone it can not playback music over the “stereo headset” device.
My guess is, that there is some kind of “high quality” audio mode and when on VoLTE calls, a better audio codec is used and the phone wants to also use this for the headset. The headset accepts, but is unable to do both (high quality audio and microphone usage) at the same time.
Is there a way to check which audio codecs are used? Maybe via adb?
I could change the bluetooth codec in the developer settings, but the list is huge.
Can I somehow determine which codecs are supported by the headset?