Skip to content
Snippets Groups Projects
Forked from postmarketOS / q6voiced
6 commits behind the upstream repository.
Minecrell's avatar
Minecrell authored
linux-postmarketos-qcom-msm8916 now supports voice call audio.
However, at the moment the audio stream needs to be explicitly started
by opening some PCM audio devices when the call is started
(even though no audio data is written to the PCM device).

Eventually this should go away by implementing codec2codec support
for q6voice in the kernel. In that case, the stream would be started
once the audio routes are set up using ALSA UCM. However, this is a bit
complicated actually so for now it's nice to have a workaround:

q6voiced listens on dbus for signals from oFono, and opens/closes the
PCM device when a call is initiated/ended in oFono. This essentially
makes voice call audio work out of the box (provided that the audio
routing, e.g. Earpiece and a microphone is set up appropriately).

Co-Authored-By: default avatarNikita Travkin <nikitos.tr@gmail.com>
8e3710ee
History
Name Last commit Last update
LICENSE
README.md
q6voiced.c

q6voiced

q6voiced is a userspace daemon for the QDSP6 voice call audio driver. Voice call audio is directly routed from the modem to the input/output audio devices, but something needs to start the audio streams for that to happen.

q6voiced listens on dbus for signals from oFono, and opens/closes the PCM device when a call is initiated/ended in oFono. This essentially makes voice call audio work out of the box (provided that the audio routing, e.g. Earpiece and a microphone is set up appropriately).

The q6voiced patches can be currently found in the msm8916-mainline/linux repository (look for ASoC: qdsp6:) commits). It may also work for downstream since the currently implemented approach is very similar.

Note

It is expected that this daemon will be obsolete eventually. Different approaches exists for activating such audio streams that are not processed directly by Linux. (See Hostless PCM streams) At the moment the kernel driver implements the "Hostless FE" approach (as on downstream), but eventually this should be replaced by a Codec <-> Codec link.

In that case the audio streams would be activated by setting some ALSA mixers (e.g. through ALSA UCM) and this daemon could be removed. However, there is quite some work involved to make that work properly. Until then, this daemon allows voice call audio to work without activating audio manually.