My sound is freezing sometimes for 2s with huawei freebuds 4i

I recently installed Zorins OS and it works fine except with my audio which freeze sometimes when I use my HUAWEI Freebuds 4i. As default they are A2DP Sink config and HSP/HFP available but it doesn't apply HSP/HFP... I checked my drivers and they are up to date, no additional drivers neither :frowning:

Thank for the help

You might try using AAC codec instead of SBC:

sudo add-apt-repository ppa:berglh/pulseaudio-a2dp

sudo apt update

sudo apt install pulseaudio-modules-bt libldac blueman

Launch blueman and unpair and repair your BT Earbuds and test.

Pipewire is still working to improve this, but it's the way to go.

I tryed, didn't get error with commands but still not working....

I will look into it, could you provide tutorial or a ressource to help?

I managed to install pipewire but it's stil bugged same as before

I'll have to look into it a bit more. I recommended pipewire because they at least switch between the A2DP & HSP/HPF automatically rather well. In the sound settings you may also be able to manually choose the HSP/HPF driver which could alleviate the issue.

All possible solutions are educated guesses. Without your hardware, it requires you to implement the changes and undo them if they don't work. I'll see what else i can find to help. Forgive me but it is a process.

Ok so I was able to test HSP/HPF and it's really bad so I stick to A2DP. Anyway thanks for your time if you have any question about hardware or something :slight_smile:

While the quality was terrible, did it work? A2DP, other than output, isn't working anymore in Linux... don't know why. Pipewire has heard the complaints about quality and are working on it.

I don't know why manufacturers have dropped support of A2DP in favor of HSP/HPF, but that seems to be the case. I don't have any BT device that uses A2DP on Linux except as a speaker.

It was more or less working but I feel like listening to radio it's not usable like this to be honnest.
I tryed all codecs for A2DP but still not working.

I just noticed that I don't have problem when I don't use wifi so after research I found out that bluetooth and wifi could conflict but bluetooth is 2.4gHz and my wifi 5Ghz so it should be ok

While you may be correct, a lot of routers operate in dual band mode but default. You have to manually disable 2.4 wifi. Check the admin page if your router to be sure.

I checked and my wifi use both frequences but I'm unable to acces admin page. Weird thing is that my bluetooth headphones were working perfectly on Windows 10 with wifi so I think it's more drivers issue? I checked and I don't have additionnal driver showing so I don't know what else I can do :confused:

what is the output for

cat /etc/bluetooth/main.conf


# Default adaper name
# Defaults to 'BlueZ X.YZ'
#Name = BlueZ

# Default device class. Only the major and minor device class bits are
# considered. Defaults to '0x000000'.
#Class = 0x000100

# How long to stay in discoverable mode before going back to non-discoverable
# The value is in seconds. Default is 180, i.e. 3 minutes.
# 0 = disable timer, i.e. stay discoverable forever
#DiscoverableTimeout = 0

# How long to stay in pairable mode before going back to non-discoverable
# The value is in seconds. Default is 0.
# 0 = disable timer, i.e. stay pairable forever
#PairableTimeout = 0

# Automatic connection for bonded devices driven by platform/user events.
# If a platform plugin uses this mechanism, automatic connections will be
# enabled during the interval defined below. Initially, this feature
# intends to be used to establish connections to ATT channels. Default is 60.
#AutoConnectTimeout = 60

# Use vendor id source (assigner), vendor, product and version information for
# DID profile support. The values are separated by ":" and assigner, VID, PID
# and version.
# Possible vendor id source values: bluetooth, usb (defaults to usb)
#DeviceID = bluetooth:1234:5678:abcd

# Do reverse service discovery for previously unknown devices that connect to
# us. This option is really only needed for qualification since the BITE tester
# doesn't like us doing reverse SDP for some test cases (though there could in
# theory be other useful purposes for this too). Defaults to 'true'.
#ReverseServiceDiscovery = true

# Enable name resolving after inquiry. Set it to 'false' if you don't need
# remote devices name and want shorter discovery cycle. Defaults to 'true'.
#NameResolving = true

# Enable runtime persistency of debug link keys. Default is false which
# makes debug link keys valid only for the duration of the connection
# that they were created for.
#DebugKeys = false

# Restricts all controllers to the specified transport. Default value
# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
# Possible values: "dual", "bredr", "le"
# ControllerMode = bredr

# Enables Multi Profile Specification support. This allows to specify if
# system supports only Multiple Profiles Single Device (MPSD) configuration
# or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple
# Devices (MPMD) configurations.
# Possible values: "off", "single", "multiple"
#MultiProfile = off

# Permanently enables the Fast Connectable setting for adapters that
# support it. When enabled other devices can connect faster to us,
# however the tradeoff is increased power consumptions. This feature
# will fully work only on kernel version 4.1 and newer. Defaults to
# 'false'.
#FastConnectable = false


# The ReconnectUUIDs defines the set of remote services that should try
# to be reconnected to in case of a link loss (link supervision
# timeout). The policy plugin should contain a sane set of values by
# default, but this list can be overridden here. By setting the list to
# empty the reconnection feature gets disabled.
#ReconnectUUIDs=00001112-0000-1000-8000-00805f9b34fb, 0000111f-0000-1000-8000-00805f9b34fb, 0000110a-0000-1000-8000-00805f9b34fb

# ReconnectAttempts define the number of attempts to reconnect after a link
# lost. Setting the value to 0 disables reconnecting feature.

# ReconnectIntervals define the set of intervals in seconds to use in between
# attempts.
# If the number of attempts defined in ReconnectAttempts is bigger than the
# set of intervals the last interval is repeated until the last attempt.
#ReconnectIntervals=1, 2, 4, 8, 16, 32, 64

# AutoEnable defines option to enable all controllers when they are found.
# This includes adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'false'.

This line: Try uncommenting it and changing to "multiple."

sudo nano /etc/bluetooth/main.conf

Arrow key down to the line and change to:

MultiProfile = multiple

Tap ctrl+o to overwrite, then the enter key to save current configuration, then the ctrl+x shortcut to exit the editor. Reboot and test...

Sadly it doesn't change anything

1 Like

You can revert that change or just leave it as it is if you want.

Back to the Pipewire...

While the earbuds are a different brand and model - the solution for Pipewire may still help.

Also it may be useful, here is my hardware specs :



1 Like

Let's try that yes but uh I get error saying wireplumber is in database but can't find version to install

Try the repository:

sudo add-apt-repository ppa:pipewire-debian/wireplumber-upstream

Could you also include

sudo lshw -C multimedia