Replacing pipewire with pulseaudio did not fix this issue. If I use poco f1, the other side cannot hear me.
Maybe q6voiced is not running inside sxmo? I haven't worked on that part yet, don't know how it works in detail. Looks like it's an openrc service that needs to be running. @anjandev, can you look into that?
I wonder if sxmo call audio is currently broken with SDM845 in general, can somebody verify?
@Minecrell: do you have a hint what to look out for?
@joelselvaraj: do you have an idea? also according to the wiki you have the pocophone F1, too. If you have time, would it be possible to give this a try with sxmo?
the testing MR Anjan made can be tested with mrtest add 3711 once CI finished.
Can you run pulseaudio with G_DEBUG_MESSAGES=all and collect logs while making a phone call? You may also try disabling the suspend on idle module in pulseaudio too (im not sure how to do that exactly)
This works fine in Poco F1, OP6, OP6T, shiftmq6 in Phosh and Plasma mobile.
SXMO seems to use pipewire instead pulseaudio, which could have been the issue. But however, @anjandev tried configuring pulseaudio too, but it still didnt work in sxmo.
Call audio and most of my dev work are only tested in Phosh and sometimes in Plasma Mobile. Currently, I am bit too occupied, so I will not able to look into pipewire/sxmo anytime soon.
The issue is that the pulseaudio suspend-on-idle module automatically closes the audio stream during call. So the workaround script disables the module during calls and re-enables after the call is ended. I would say try to replicate the same thing the script does to see where it fails.
For example, try running:
sudo -u <username> XDG_RUNTIME_DIR=/run/user/10000 pactl unload-module module-suspend-on-idle before the call is made. Check if audio works this time.
@stacyharper Im not sure where to run pactl unload-module module-suspend-on-idle. Here are the places Ive tried running that command and it hasnt working:
Right after the superd start pulseaudio command in the start hook
ExecStartPost=/usr/bin/pactl unload-module module-suspend-on-idle in pulseaudio.service
For anyone else: is there any way to blacklist a module? @joelselvaraj. Im not sure how @joelselvaraj's solution could be implemented in Sxmo.@joelselvaraj's call_audio_idle_suspend_workaround.sh workaround service is started and running on my sxmo install but it's not disabling the suspend module.
Also, @stacyharper please see and provide feedback on:
poco:~$ XDG_RUNTIME_DIR=/dev/shm/user/10000/ pactl unload-module module-suspend-on-idle
Failed to unload module: Module module-suspend-on-idle not loaded
XDG_RUNTIME_DIR=/dev/shm/user/10000/ in sxmo? I used XDG_RUNTIME_DIR=/run/user/10000 in phosh.
also, I don't know if pipewire-pulse configures the pulseaudio modules the same way as pulseaudio does. In pipewire-pulse setup, what is the content of /etc/pulse/default.pa?
#!/bin/sh# dbus-monitor is run as a child process to this script. Kill child process too when the script terminates.trap 'pkill -9 -P $$ && exit 0' INT TERMinterface=org.freedesktop.ModemManager1.Callmember=StateChangeddbus-monitor --system "type='signal',interface='$interface',member='$member'" | while read -r line; doiikk state=$(echo "$line" | awk '/\<int32\>/ {print $2}') if [ -n "$state" ]; then # Call State is based on https://www.freedesktop.org/software/ModemManager/doc/latest/ModemManager/ModemManager-Flags-and-Enumerations.html#MMCallState if [ "$state" -eq '0' ] || [ "$state" -eq '3' ]; then echo "Call Started" # Unload module-suspend-on-idle when call begins XDG_RUNTIME_DIR=/dev/shm/user/10000 pactl unload-module module-suspend-on-idle fi if [ "$state" -eq '7' ]; then echo "Call Ended" # Reload module-suspend-on-idle after call ends XDG_RUNTIME_DIR=/dev/shm/user/10000 pactl load-module module-suspend-on-idle fi fi done &wait
XDG_RUNTIME_DIR (/dev/shm/user/10000) is not owned by us (uid 0), but by uid 10000! (This could e.g. happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)Connection failure: Connection refusedpa_context_connect() failed: Connection refusedXDG_RUNTIME_DIR (/dev/shm/user/10000) is not owned by us (uid 0), but by uid 10000! (This could e.g. happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)Connection failure: Connection refusedpa_context_connect() failed: Connection refused