I'm trying to turn a small embedded device into a fully functional A2DP+HFP receiver.

I've got everything working, but I'm really having trouble figuring out how to get the module-echo-cancel to work with ofono

Here is what I have: - PulseAudio 7.1 - Ofono 1.15

I'm running a headless system, so everything is run under the root user.

I have tried loading the module-echo-cancel from the config file, and the module loads, but when I make a call a new sink and a new source is added and the module-echo-cancel is not automatically added to them.

I have tried manually loading the module-echo-cancel after the call is established and the new sink and source is added. This does create a new virtual echo_cancelled source and sink, but it's only sitting IDLE and then gets suspended, the sound still goes through the initially created sink/source.

Listing the modules after the connection is established shows me this:

Module #21
        Name: module-loopback
        Argument: source=bluez_source.30_5A_3A_19_C0_5B.echo-cancel sink_dont_move=true source_output_properties=media.role=phone
        Usage counter: n/a
                module.author = "Pierre-Louis Bossart"
                module.description = "Loopback from source to sink"
                module.version = "7.1"

Module #22
        Name: module-loopback
        Argument: source=bluez_source.30_5A_3A_19_C0_5B source_dont_move=true sink_input_properties=media.role=phone
        Usage counter: n/a
                module.author = "Pierre-Louis Bossart"
                module.description = "Loopback from source to sink"
                module.version = "7.1"

If I try to unload this modules, load the echo-cancel module and then load the loopback module the sound gets bounced back to the phone instead of being heard from the devices speakers.

I have tried to do, but didn't helped either:

PULSE_PROP="filter.want=echo-cancel" ofonod

Any suggestion on how can I enable the echo-cancellation for Ofono?

Thank you.

1 Answer 1


Not sure if this helps, but if nobody else has an idea:

I have a Jolla Sailphone which is Linux based, making use of Pulseaudio and Ofono.

The audio setup is complex and I don't completely understand it. Among other things, it uses module-intended-roles to assign role properties (e.g. phone, music), routing tables in /etc/pulse and probably other stuff I haven't discovered yet.

At the end of /etc/pulse/default.pa, there are the following lines:

### Modules to allow autoloading of filters (such as echo cancellation)
### on demand. module-filter-heuristics tries to determine what filters
### make sense, and module-filter-apply does the heavy-lifting of
### loading modules and rerouting streams.
load-module module-filter-heuristics
load-module module-filter-apply

so I assume these modules activate echo cancellation. Having a look at the source of those modules may give some hints of proper usage.

  • Well not exactly what I was looking for but the idea of Jolla Sailphone is actually not all bad... I will have a look into it, looks like there are ports for Raspberry PI, so I might be able to scrap the old project and do something totally different using that port. I need to investigate if it will suite my needs, or if not at least borrow some ideas on how they achieved some things.... Mar 3, 2017 at 11:33
  • 1
    I'd love to see a writeup where someone explains how this all hangs together, from a "300 ft" perspective. So if you find any, leave a comment. :-)
    – dirkt
    Mar 3, 2017 at 12:58

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .