Audio Stuttering at hifi quality

Hi,
I recently got my Fairphone 5. I used a Samsung Galaxy A52S 5G before and paired my Audeze Maxwell to it, which was absolutely fine. I use Deezer for Hifi quality. Sound was amazing.

So I paired my Headphones with the Fairphone and noticed bad sound quality. So I checked the Developer Mode settings and changed the bitrate to 990 kbit/s. But then it startet to stutter the whole time. If I chaged the same settings on my Samsung, nothing happened, the good quality stayed.

Any ideas on how to fix the sound quality? I listen A LOT on my phone…and I cant believe that the processor is so weak on this phone, that it couldn even play high res sound :frowning:

Regards
Robert

Hi and welcome to the forum,

I just tried this on Fairphone 5, a pair of ATH-M50XBT2’s and LDAC codec with 990 kbit/s bitrate. Didn’t hear a noticeable difference to the default variable bitrate to be honest, but everything worked fine, so it’s not incapable processor that’s causing this.

TLDR; My hypothesis is that you’re using different Bluetooth codec than before and that can’t output as high bitrates reliably as the old one. The good news is it shouldn’t have to, so do feel free to turn the bitrate down to either automatic or what gives you a stable listening experience to listen to high quality, stutterless audio, as it really shouldn’t matter that much. If you were happier with the listening experience before, change your Bluetooth codec to LDAC (see below for more details).

Here's the answer to audio nerds in more detail:

I searched a bit and it seems the headphones you’re referring to support new Bluetooth LE audio codecs LC3. It’s much better than the old SBC, but doesn’t work with your old A52S, as it only has Bluetooth 5.0 and for Bluetooth LE audio you need Bluetooth 5.2 or newer, which Fairphone 5 has.

The new Bluetooth LE standard doesn’t, however, support as high bitrates as the old one. Instead it uses better compression algorithms to keep the audio sounding good, similar to Qualcomm’s proprietary Aptx algorithms. Bluetooth claims that with Bluetooth LE audio codecs such as LC3 you can have better audio quality with less than half the bitrate in comparison to old Bluetooth classic standard SBC.

If you, however, try to manually change the Bluetooth LE Bitrate to 990 kbit/s, you’ll probably run in to audio stuttering. The maximum theoretical bitrate Bluetooth LE supports is around 1300 kbit/s in comparison to 2100 kbit/s Bluetooth classic supports. That means if you have any background radiation or there’s some obstacle between your phone and the headphones (such as phone being in your pocket), it won’t work well with that high bitrate.

Here’s a quick article about the Bluetooth LE codec. See also the linked video in the article explaining more about the bitrate limits.

If you, for some reason want to have the 990 kbit/s streaming work, just change the audio codec to LDAC (your headphones seem to have that too) and keep your phone close to the headphones. You’ll get a reduced battery life but more bits :slight_smile:

If you try changing the codec, please note there’s been some controversy with that:
LDAC not available, no automatic connection to headphones

2 Likes

Hi and thanks for your detailed answer.

I already changed to LDAC Codec, but the sound is still not as good as when I use the A2DP Driver with LDAC on windows. I even think that if I turn off “HD-Audio”" the audio is slightly better…or maybe its just more bass.

You said that I need to turn on “Bluetooth LE”. But this option is “off” and greyed out in the dev Settings. How can I turn it on?

Did changing to LDAC improve the stuttering issue? Did you have both devices on same bitrate?

If the device supports Bluetooth LE, I’d imagine it’d use it by default. If you’ve forced the headphones to LDAC, that might make it impossible to change to Bluetooth LE, as LDAC works on Bluetooth Classic. There’s no lossless Bluetooth audio codecs, (except AptX Lossless claims to be) and Bluetooth LE codecs are more lossy than LDAC

I based my previous answer on assumption that these are the headphones you’re using. Can you confirm that? If they’re older or different model, they might also not support Bluetooth LE codecs.

If LDAC continues to sound worse than on other devices and you think it’s not placebo, try forgetting the Bluetooth pairing and connecting again, that worked for me when I had issues changing to LDAC.

Yeah, this is the Device I have.
In the pairing screen I have two options:

  1. Audeze Maxwell BT
  2. Audeze Maxwell BLE

But I read in another Forum, that this BLE device should have worse quality than the BT device. But I couldnt get the BLE version to work anyway. It just doesnt connect right.

But I can connect to the BT and the sound is way worse than on the other Phone with identical Settings (LDAC 92khz, 32bit, auto bitrate). Its like the standard spotify sound…way thinner.

One thing is weird: If I pair the headset, I get a notification that tells me to download the App from the google play store. I can click on “Download”…its searches for 1 Sec and then I get the message “Try again” and can click on that button. But it cant find any app on the store.
I already have the app on my phone installed.

And you asked about the stuttering:
I tested this again, went to the dev settings and changed the bitrate to 990…sound doesnt change, but there is also no stutter.

Maybe its a Bug with Android 13?

The second one is the Bluetooth LE one, and it is more lossy than LDAC.

Have you tried from the developer options to change the codec to LC3? That’s a LE codec. Enabling that might require to turn off HD audio.

If you want to make sure the codec options are same for both devices, set the bitrate manually to 990 kbit/s.

Does changing between LDAC & SBC work normally? Do you hear any difference between 330 kbit/s and 990 kbit/s LDAC? Does your headphone app function normally? Does it provide any helpful information such as show current codec or is there maybe some equalizer function that could be enabled that would affect the sound quality? Did you try un- & re-pairing the headphones? Maybe try factory reset for the headphones?

I can’t seem to replicate your issue, I have different headphones though. For me, FP5 works similarly to FP4 with my ATH-M50XBT2’s. There’s slight difference in audio quality when changing from SBC to LDAC and similar when changing from LDAC 330 kbit/s bitrate to 990 kbit/s. I don’t think it’s possible for the audio quality to differ between devices if the codec settings are the same with fixed bitrate. Bluetooth is Bluetooth.

1 Like
  • LC3: Its greyed out, even if I turn off HD-Audio, the only thing to choose from is SBC.
  • Switching between SBC and LDAC has a short break in the music. But I guess thats normal.
  • 330 vs 990 kbit: no difference
  • Headphone App works normal. Unfortunately no Info about codec. "
  • I tried repairing the phone
  • I didnt tried a factory reset, because it works on all other platforms and I have set some EQ Settings, which I dont want to lose

This Headset is known for its great bass delivery. So I can clearly hear the difference there, when im listening to some Hardcore/Hardstyle Music with deep bass. And I can tell you, that with LDAC the deep frequencies are just gone. Same with SBC. Running the Headphones on another device is just another world…

I downloaded the “Bluetooth Codec changer” App and selected LDAC from SBC, after a short music break it says “Codec changed to SBC” and it stays there. If I press “LDAC” again, it switches the shown current codec to LDAC but without any music interrupt and noticeable difference in quality. If I switch back to SBC or AAC the music stops and it changes the codec correctly. Strange… It seems, that there is an Issue switching to the LDAC Codec. What could this be? Is there any errorlog on the phone?

EDIT: I force-stopped every app where it was possible. Also stopped the Bluetooth Services via the Dev Settings and restartet Bluetooth. Nothing changed.
Maybe the issue isnt related to the Phone, but I’m starting to wish, that I never ordered ít. Everything seems worse than my old Galaxy A52S which wasnt even a Flagship model back then :frowning:
The Phone even turnes off all of a sudden and rebootsl. But thats another Topic…
I also contacted the support 2 Weeks ago and didnt receive any support.

EDIT2: I enabled logging through adb:

The music was played the whole time
14:31:20.662 change to SBC
14:31:25.091 change to LDAC

OK. I neither can upload a text, nor a text file… I got the error “502 Bad Gateway”. I think its just too much text…

just some snippets:

01-19 14:31:25.091 20941 20954 D A2dpService: setCodecConfigPreference(E0:49:ED:01:0B:4B): {codecName:LDAC,mCodecType:4,mCodecPriority:1000000,mSampleRate:0x8(96000),mBitsPerSample:0x4(32),mChannelMode:0x2(STEREO),mCodecSpecific1:0,mCodecSpecific2:0,mCodecSpecific3:0,mCodecSpecific4:0}

01-19 14:31:25.095 20941 21018 I a2dp_vendor_ldac_encoder: LDAC is running in offload mode

01-19 14:31:25.097 20941 21018 D a2dp_sbc: setCodecConfig: channel_mode: selcting joint stereo

1-19 14:31:25.119 20941 20967 E bt_stack: [ERROR:a2dp_encoding.cc(584)] a2dp_is_audio_codec_config_params_changed: current codec_type=4: hidl codec type=16
01-19 14:31:25.119 20941 20967 D a2dp_codec: A2DP_GetCodecType: codec_type: 255
01-19 14:31:25.119 20941 20967 D a2dp_codec: A2DP_GetCodecType: codec_type: 255
01-19 14:31:25.119 20941 20967 D a2dp_codec: A2DP_GetCodecType: codec_type: 255
01-19 14:31:25.119 20941 20967 W bt_btif : btif_av_signal_session_ready: already signalled
01-19 14:31:25.119 20941 20967 I btif_av : isBATEnabled: 0
01-19 14:31:25.119 20941 20967 E bt_btif : bta_av_co_get_active_peer: active peer index: 0
01-19 14:31:25.119 20941 20967 E bt_btif : bta_av_co_get_active_peer: active peer index: 0
01-19 14:31:25.119 20941 20967 D bt_btif : btif_av_state_started_handler: event: BTA_AV_STOP_EVT flags: 4  index = 0, reconfig_event: 0, codec_cfg_change: 0
01-19 14:31:25.119 20941 20967 W bt_btif : ## ON A2DP STOPPED ##
01-19 14:31:25.119 20941 20967 I btif_av : isBATEnabled: 0
01-19 14:31:25.119 20941 20967 E bt_btif : bta_av_co_get_active_peer: active peer index: 0
01-19 14:31:25.119 20941 20967 E bt_btif : bta_av_co_get_active_peer: active peer index: 0
01-19 14:31:25.119 20941 20967 W bt_stack: [WARNING:a2dp_encoding.cc(2275)] is_qc_hal_enabled
01-19 14:31:25.119 20941 20967 W bt_stack: [WARNING:a2dp_encoding.cc(2254)] get_hal_version
01-19 14:31:25.119 20941 20967 D bt_btif : btif_ahim_ack_stream_profile_suspended: AIDL, profile: 1, ack: 0
01-19 14:31:25.119 20941 20967 W bt_stack: [WARNING:a2dp_encoding.cc(2275)] is_qc_hal_enabled
01-19 14:31:25.119 20941 20967 W bt_stack: [WARNING:a2dp_encoding.cc(2254)] get_hal_version
01-19 14:31:25.119 20941 20967 D bt_btif : btif_ahim_ack_stream_profile_suspended: QC
01-19 14:31:25.119 20941 20967 I bt_stack: [INFO:a2dp_encoding.cc(2736)] ack_stream_suspended: result=SUCCESS_FINISHED
01-19 14:31:25.120 20941 20967 W bt_stack: [WARNING:a2dp_encoding.cc(2747)] ack_stream_suspended: pending=0 ignore result=SUCCESS_FINISHED

01-19 14:31:25.596 20941 21017 V A2dpStateMachine: isSplitA2dpEnabled: false
01-19 14:31:25.596 20941 21017 W A2dpStateMachine: processCodecConfigEvent: new_codec_type = 4

01-19 14:31:25.771   999 27501 I msm8974_platform: platform_check_and_set_codec_backend_cfg:becf: afe: bitwidth 16, samplerate 48000 channels 2, backend_idx 0 usecase = 0 device (speaker)

01-19 14:31:26.078 20941 21017 D A2dpStateMachine: A2DP Playing state : device: E0:49:ED:01:0B:4B State:NOT_PLAYING->PLAYING

01-19 14:31:26.084   999 27501 I btaudio_offload_qti: audio_get_codec_config_qti: state = AUDIO_A2DP_STATE_STARTED
01-19 14:31:26.084 20941 20967 W bt_stack: [WARNING:a2dp_encoding.cc(194)] ResetPendingCmd  3
01-19 14:31:26.084   999 27501 I btaudio_offload_qti: a2dp_codec_parser: codec_type = 10
01-19 14:31:26.084   999 27501 D btaudio_offload_qti: ldac_codec_parser: LDAC: channel mode: 1
01-19 14:31:26.084   999 27501 D btaudio_offload_qti: ldac_codec_parser: LDAC: codec config copied
01-19 14:31:26.084   999 27501 W btaudio_offload_qti: ldac_codec_parser: LDAC: bitrate is zero
01-19 14:31:26.084   999 27501 D btaudio_offload_qti: ldac_codec_parser: LDAC: bits per sample:32
01-19 14:31:26.084   999 27501 D btaudio_offload_qti: ldac_codec_parser: LDAC: create lookup for 8 with ABR 1
01-19 14:31:26.084   999 27501 D btaudio_offload_qti: ldac_codec_parser: LDAC: codec index value 127
01-19 14:31:26.084   999 27501 I btaudio_offload_qti: ldac_codec_parser: LDAC: send start highest bitrate value 990000
01-19 14:31:26.084   999 27501 I btaudio_offload_qti: ldac_codec_parser: LDAC: level:5 bitrate:990000
01-19 14:31:26.084   999 27501 I btaudio_offload_qti: ldac_codec_parser: LDAC: level:4 bitrate:660000
01-19 14:31:26.084   999 27501 I btaudio_offload_qti: ldac_codec_parser: LDAC: level:3 bitrate:492000
01-19 14:31:26.084   999 27501 I btaudio_offload_qti: ldac_codec_parser: LDAC: level:2 bitrate:396000
01-19 14:31:26.084   999 27501 I btaudio_offload_qti: ldac_codec_parser: LDAC: level:1 bitrate:330000
01-19 14:31:26.084   999 27501 D btaudio_offload_qti: ldac_codec_parser: LDAC: bitrate: 990000
01-19 14:31:26.084   999 27501 D btaudio_offload_qti: ldac_codec_parser: LDAC: done copying full codec config
01-19 14:31:26.084   999 27501 D a2dp_offload:  Received LDAC encoder supported BT device
01-19 14:31:26.086   999 27501 D a2dp_offload: a2dp_set_bit_format: set AFE input bit format = 32
01-19 14:31:26.088   999 27501 D a2dp_offload: Start playback successful to BT library
01-19 14:31:26.088   999 27501 W btaudio_offload_qti: audio_is_scrambling_enabled_qti: isSession_ready =  1 isScrambling = 0

01-19 14:31:26.118   999 27501 D ACDB-LOADER: ACDB -> send_audio_cal, acdb_id = 20, path = 0, app id = 0x11130, sample rate = 96000, use_case = 0,buffer_idx_w_path =0, afe_sample_rate = 48000, cal_mode = 1, offset_index = 0

01-19 14:31:26.164  1509  2426 I AS.AudioDeviceInventory: APM handleDeviceConfigChange success for A2DP device addr=E0:49:ED:01:0B:4B codec=AUDIO_FORMAT_LDAC
01-19 14:31:26.169  1005 20991 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Received IBS_SLEEP_IND: 0xFE
01-19 14:31:26.173 20941 21012 V Avrcp_ext: updateCurrentMediaState: mMediaController: MediaController (deezer.android.app@381f493) Frontrow, Cryex, Defqon.1 2023 – Path Of The Warrior
01-19 14:31:26.173 20941 21012 W Avrcp_ext: isMusicActive: true getBluetoothPlayState: 1 A2dp State: 10 mAudioPlaybackIsActive: true

01-19 14:31:26.261   999 12329 I btaudio_offload_qti: audio_get_a2dp_sink_latency_qti: Sink Latency = 240

EDIT3: I found this post: https://www.reddit.com/r/GooglePixel/comments/s5vmtf/pixel_6_bluetooth_audio_disable_a2dp_hardware/

After doing some research I found a few posts stating I should turn on the “Disable A2DP Hardware Offload” option in the developers settings. This made my audio sound so much better.

I tried to turn off this option, the Phone reboots. But now there is no audio coming from the Headphones at all. If I turn off or on HD-Audio the Sound blasts really loud through the Phone Speakers, while Bluetooth is still paired and the the choosen output device in Deezer.
Its getting weirder…

This has diverted quite much from the original title of audio stuttering, which seems to be solved now though? Last guess, could it be that the installed app changes the EQ settings from your default you’ve set with other device? With bass-rich music it shouldn’t be easy to distinguish codecs from each other, so it’s not probably caused by that.

I tried another set of headphones, ATH-CKS50TW’s, which support LC3 codec, and it showed up normally in the codec list in developer options and changing to it launched even an AptX Adaptive -popup window, so it seemed to work. I don’t still hear any difference between codecs on most music, and on the ones I think I hear some (less rich overtones), I’m not sure I’d pass a blind test, so the differences aren’t big.

Changing between codecs causes a short break in music for me too and I think that’s normal, at least when done in developer options. The developer options menu also works every time for codec changes, other apps always don’t.

My FP4 gives a Restart device? -popup if I try to disable the A2DP hardware offload. Changing it requires restarting the device, it seems. I find it highly unlikely that this would fix the issue.

1 Like

I didnt want to reduce it to a bass Problem.
I checked another Song: Malevolence - On Broken Glass (Metal)
The whole sound is like less surround on the LDAC Codec. If I turn off HD-Audio, then the Audio Quality is way better (exactly as mentioned in the reddit thread), but not as good as via LDAC on other Devices.

There are no EQ Settings active. I only changed the Headphones EQ Settings, but their implemented.

What Android/Fairphone Version is installed on your device?
Mine is: FP5.TT40.A.131.20231130

Should I open another thread, since the Problem of the title has now solved?

I have the same software version.

Are you sure the EQ settings don’t change to default from your settings when connecting to the FP5 as there are no EQ settings active in the App? Have you tried uninstalling the app and reconnecting the headphones after that? Doesn’t sound like that though, as you sound to have problems with the codecs…

I have honestly ran out of ideas of what could cause the problem. Seems from the reddit it’s been happening to quite many other phones as well, would be interesting to know what’s the reason. Seems also from there the problem is only affecting some headphones. Hope the problem will get solved or you can find a solution

I think an updated title might be appropriate, if you can incorporate the subpar sound quality problems to the title as well. I’d also contact the support about the case if you hadn’t already done that on this specific issue, or update them on the details. It might take them some time, but they might be able to fix it if it’s device-related. I remember FP4 had an issue with AptX codecs after Android 12 update but they fixed it eventually.

I finaly did a factory reset of the Phone and installed only neccessary google services and the deezer app and paired the headphones.
But still…no luck.