Echo cancellation for calls with pipewire on Librem 5
Other side hearing echo when calling is a big issue to be solved. This affects Librem 5 and PinePhone. Current work around is using a headphone always. This also affects other calling apps like GNU Jami.
More technical details about the problem and possible solutions are tracked in https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4170
Bounty for this issue https://opencollective.com/dephcom/projects/pipewire-echo
Pirate PraveenThu 24 Apr 2025 7:09AM
Please review the text on https://opencollective.com/dephcom/projects/pipewire-echo?status=projectCreated
Pirate PraveenFri 25 Apr 2025 12:37PM
There is some work in progress for anyone who wants to try fixing it https://salsa.debian.org/Mobian-team/devices/librem5-tweaks/-/commits/wip/kop316/pipewire
Shared by Chris https://fosstodon.org/@kop316/114398582666998648
Pirate PraveenFri 25 Apr 2025 1:59PM
More technical details on what is needed https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4170
Item removed
Pirate PraveenSun 27 Apr 2025 9:03AM
A workaround would be to switch back to pulse audio until we can configure echo cancel in pipewire. We can refer to https://source.puri.sm/Librem5/librem5-base/-/commit/e55f39d8cb1137bfec68badec7da91fb88fc7a18 and it seems this is simpler in Trixie as it has a pipewire video only profile already. So we just need the systemd presets and allow pulseaudio as alternate dependency in mobian-base.
Pirate PraveenSun 27 Apr 2025 5:48PM
So I'm able to successfully switch back to pulseaudio in mobian trixie and confirmed echo issue is fixed. But we will keep the bounty open for people who want to fix this in pipewire.
Pirate PraveenFri 29 Aug 2025 9:56AM
I am reaching out to someone who can potentially help us implement this https://social.masto.host/@praveen/115111428396587819
Pirate PraveenThu 9 Oct 2025 4:13PM
I reached out to Arun Raghavan as suggested by https://social.masto.host/@pabloyoyoista@treehouse.systems but they are unable to take up this task at the moment but gave two options that would help anyone interested to implement this.
There are two options:
1. Do what was suggested in https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4170#note_2518968, which is basically to write a WirePlumber Lua script to load the echo cancel module based on a filter.want property, and route to that instead of the intended sink/source
2. Statically load module-echo-cancel in your device config, and just route to the virtual sink/source based on the filter.want property (this would be even simpler than (1))
Have you considered asking on the PipeWire Matrix channel if someone wants to step up to do this? Might get more eyeballs there.
Pirate PraveenThu 10 Sep 2026 10:53AM
We got a response to our bounty.
Hi,
I’m interested in taking the PipeWire echo cancellation bounty.
I reviewed the scope around PipeWire’s PulseAudio compatibility for "filter.want" / "filter.apply", specifically for the Mobian Trixie / Librem 5 echo-cancel use case.
Before I start implementation, could you please confirm that the bounty is still available and that you’re happy for me to work on it?
My plan is to keep the work focused:
inspect current PipeWire master and the PulseAudio behavior;
implement the missing compatibility;
add or update tests where feasible;
submit the work upstream for review;
coordinate Mobian Trixie / Librem 5 validation with you if hardware-specific testing is needed.
I won’t start substantial implementation until you confirm that the bounty is available for me to take.
Thanks,
Franklin
I'm going to confirm the bounty is still available. Very excited to see this interest.
Pirate Praveen ·Mon 4 Nov 2024 8:55PM
Some technical details https://gitlab.com/mobian1/callaudiod/-/issues/13 @devrtz do you have an idea what needs to be done on trixie/pipewire? Seems to be fine on bookworm/pulseaudio.