Genie Community Forum

Genii-client install

When I install Genie-Client on a RPi4, i can’t get the echo source/sink modules to load using default.pa,
I get the log error - Master source not found/Failed to load module “module-echo-cancel …”

If I load the module manually it works fine

Did you add the “Load Modules…” lines to /etc/pulse/default.pa?

If not please look at the instruction at Installing a Genie Client on a Raspberry Pi | Genie Wiki This is hardware based so make sure to chose the right lines.

Yep - that was what I meant - I added the lines into /etc/pulse/default.pa but if I look at the log it says Master source not found/Failed to load module “module-echo-cancel …”

Loading manually works fine

What is the output of:

  • pacmd list-sources
  • pacmd list-sink-inputs

What are the lines you added to /etc/pulse/default.pa?

How are you loading it manually?

Hi

Info below:
pacmd list sources:

pi@raspberrypi:~ $ pacmd list-sources
6 source(s) available.
index: 0
name: <alsa_output.platform-bcm2835_audio.analog-stereo.monitor>
driver: <module-alsa-card.c>
flags: DECIBEL_VOLUME LATENCY
state: SUSPENDED
suspend cause: IDLE
priority: 1000
volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
base volume: 65536 / 100% / 0.00 dB
volume steps: 65537
muted: no
current latency: 0.00 ms
max rewind: 0 KiB
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
fixed latency: 59.95 ms
monitor_of: 0
card: 0 <alsa_card.platform-bcm2835_audio>
module: 6
properties:
device.description = “Monitor of Built-in Audio Analog Stereo”
device.class = “monitor”
alsa.card = “0”
alsa.card_name = “bcm2835 Headphones”
alsa.long_card_name = “bcm2835 Headphones”
alsa.driver_name = “snd_bcm2835”
device.bus_path = “platform-bcm2835_audio”
sysfs.path = “/devices/platform/soc/3f00b840.mailbox/bcm2835_audio/sound/card0”
device.form_factor = “internal”
device.string = “0”
module-udev-detect.discovered = “1”
device.icon_name = “audio-card”
index: 1
name: <alsa_output.platform-3f902000.hdmi.hdmi-stereo.monitor>
driver: <module-alsa-card.c>
flags: DECIBEL_VOLUME LATENCY
state: SUSPENDED
suspend cause: IDLE
priority: 1000
volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
base volume: 65536 / 100% / 0.00 dB
volume steps: 65537
muted: no
current latency: 0.00 ms
max rewind: 0 KiB
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
fixed latency: 59.95 ms
monitor_of: 1
card: 1 <alsa_card.platform-3f902000.hdmi>
module: 7
properties:
device.description = “Monitor of Built-in Audio Digital Stereo (HDMI)”
device.class = “monitor”
alsa.card = “2”
alsa.card_name = “vc4-hdmi”
alsa.long_card_name = “vc4-hdmi”
alsa.driver_name = “vc4”
device.bus_path = “platform-3f902000.hdmi”
sysfs.path = “/devices/platform/soc/3f902000.hdmi/sound/card2”
device.form_factor = “internal”
device.string = “2”
module-udev-detect.discovered = “1”
device.icon_name = “audio-card”
index: 2
name: <alsa_output.usb-Antimatter_Research__Inc._Acusis_S_0379-00.analog-stereo.monitor>
driver: <module-alsa-card.c>
flags: DECIBEL_VOLUME LATENCY
state: SUSPENDED
suspend cause: IDLE
priority: 1040
volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
base volume: 65536 / 100% / 0.00 dB
volume steps: 65537
muted: no
current latency: 0.00 ms
max rewind: 0 KiB
sample spec: s32le 2ch 48000Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
fixed latency: 59.94 ms
monitor_of: 2
card: 2 <alsa_card.usb-Antimatter_Research__Inc._Acusis_S_0379-00>
module: 8
properties:
device.description = “Monitor of Acusis S Analog Stereo”
device.class = “monitor”
alsa.card = “1”
alsa.card_name = “Acusis S”
alsa.long_card_name = “Antimatter Research, Inc. Acusis S at usb-3f980000.usb-1.5, full speed”
alsa.driver_name = “snd_usb_audio”
device.bus_path = “platform-3f980000.usb-usb-0:1.5:1.0”
sysfs.path = “/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/sound/card1”
udev.id = “usb-Antimatter_Research__Inc._Acusis_S_0379-00”
device.bus = “usb”
device.vendor.id = “20b1”
device.vendor.name = “XMOS Ltd”
device.product.id = “ac51”
device.product.name = “Acusis S”
device.serial = “Antimatter_Research__Inc._Acusis_S_0379”
device.string = “1”
module-udev-detect.discovered = “1”
device.icon_name = “audio-card-usb”

  • index: 3
    name: <alsa_input.usb-Antimatter_Research__Inc._Acusis_S_0379-00.analog-stereo>
    driver: <module-alsa-card.c>
    flags: HARDWARE DECIBEL_VOLUME LATENCY
    state: RUNNING
    suspend cause: (none)
    priority: 9049
    volume: front-left: 21845 / 33% / -28.63 dB, front-right: 21845 / 33% / -28.63 dB
    balance 0.00
    base volume: 65536 / 100% / 0.00 dB
    volume steps: 65537
    muted: no
    current latency: 0.61 ms
    max rewind: 0 KiB
    sample spec: s32le 2ch 48000Hz
    channel map: front-left,front-right
    Stereo
    used by: 1
    linked by: 2
    fixed latency: 59.94 ms
    card: 2 <alsa_card.usb-Antimatter_Research__Inc._Acusis_S_0379-00>
    module: 8
    properties:
    alsa.resolution_bits = “32”
    device.api = “alsa”
    device.class = “sound”
    alsa.class = “generic”
    alsa.subclass = “generic-mix”
    alsa.name = “USB Audio”
    alsa.id = “USB Audio”
    alsa.subdevice = “0”
    alsa.subdevice_name = “subdevice #0
    alsa.device = “0”
    alsa.card = “1”
    alsa.card_name = “Acusis S”
    alsa.long_card_name = “Antimatter Research, Inc. Acusis S at usb-3f980000.usb-1.5, full speed”
    alsa.driver_name = “snd_usb_audio”
    device.bus_path = “platform-3f980000.usb-usb-0:1.5:1.0”
    sysfs.path = “/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/sound/card1”
    udev.id = “usb-Antimatter_Research__Inc._Acusis_S_0379-00”
    device.bus = “usb”
    device.vendor.id = “20b1”
    device.vendor.name = “XMOS Ltd”
    device.product.id = “ac51”
    device.product.name = “Acusis S”
    device.serial = “Antimatter_Research__Inc._Acusis_S_0379”
    device.string = “front:1”
    device.buffering.buffer_size = “23016”
    device.buffering.fragment_size = “5752”
    device.access_mode = “mmap”
    device.profile.name = “analog-stereo”
    device.profile.description = “Analog Stereo”
    device.description = “Acusis S Analog Stereo”
    module-udev-detect.discovered = “1”
    device.icon_name = “audio-card-usb”
    ports:
    analog-input: Analog Input (priority 10000, latency offset 0 usec, available: unknown)
    properties:

    active port:
    index: 4
    name:
    driver: <module-echo-cancel.c>
    flags: HW_MUTE_CTRL LATENCY
    state: SUSPENDED
    suspend cause: IDLE
    priority: 1000
    volume: front-left: 21845 / 33%, front-right: 21845 / 33%
    balance 0.00
    base volume: 65536 / 100%
    volume steps: 65537
    muted: no
    current latency: 0.00 ms
    max rewind: 0 KiB
    sample spec: float32le 2ch 48000Hz
    channel map: front-left,front-right
    Stereo
    used by: 0
    linked by: 0
    fixed latency: 59.94 ms
    module: 22
    properties:
    device.master_device = “alsa_input.usb-Antimatter_Research__Inc._Acusis_S_0379-00.analog-stereo”
    device.class = “filter”
    device.intended_roles = “phone”
    device.description = “Acusis S Analog Stereo (echo cancelled with Acusis S Analog Stereo)”
    device.icon_name = “audio-input-microphone”
    index: 5
    name: <echosink.monitor>
    driver: <module-echo-cancel.c>
    flags: DECIBEL_VOLUME LATENCY
    state: SUSPENDED
    suspend cause: IDLE
    priority: 1000
    volume: mono: 65536 / 100% / 0.00 dB
    balance 0.00
    base volume: 65536 / 100% / 0.00 dB
    volume steps: 65537
    muted: no
    current latency: 0.00 ms
    max rewind: 0 KiB
    sample spec: float32le 1ch 48000Hz
    channel map: mono
    Mono
    used by: 0
    linked by: 0
    fixed latency: 59.94 ms
    monitor_of: 3
    module: 22
    properties:
    device.description = “Monitor of Acusis S Analog Stereo (echo cancelled with Acusis S Analog Stereo)”
    device.class = “monitor”
    device.icon_name = “audio-input-microphone”
    pi@raspberrypi:~ $

pacmd list-sink-inputs
pi@raspberrypi:~ $ pacmd list-sink-inputs
1 sink input(s) available.
index: 0
driver: <module-echo-cancel.c>
flags: VARIABLE_RATE START_CORKED
state: CORKED
sink: 2 <alsa_output.usb-Antimatter_Research__Inc._Acusis_S_0379-00.analog-stereo>
volume: mono: 65536 / 100% / 0.00 dB
balance 0.00
muted: no
current latency: 0.00 ms
requested latency: 59.94 ms
sample spec: float32le 1ch 48000Hz
channel map: mono
Mono
resample method: speex-fixed-1
module: 22
properties:
media.name = “Echo-Cancel Sink Stream”
media.role = “filter”
module-stream-restore.id = “sink-input-by-media-role:filter”
pi@raspberrypi:~ $

/etc/pulse/default.pa

load-module module-echo-cancel source_name=echosrc sink_name=echosink channels=2 rate=48000 aec_method=webrtc
load-module module-role-ducking trigger_roles=voice-assistant ducking_roles=music volume=20% global=true

Manual command
pactl load-module module-echo-cancel source_name=echosrc sink_name=echosink channels=2 rate=48000 aec_method=webrtc

Sorry I did not get a notification that your replied. In the future please use the code tags using the </> button on the editor so that formatting is retained. It makes it a lot easier to read.

I think your /etc/pulse/default.pa is wrong. aec_method should be speex. This is what I have working on my RPi4.

load-module module-echo-cancel source_name=echosrc sink_name=echosink aec_method=speex
load-module module-role-ducking trigger_roles=voice-assistant ducking_roles=music volume=20% global=true