Re: Bluetooth phonecall is not working with pipewire
Hello Ehsan,toggle quoted messageShow quoted text
PipeWire's HSP/HFP bluetooth integration is currently tuned to transmit audio over the HCI channel and encode/decode the audio in software. The bluez_input and bluez_output nodes that you see in wpctl are basically portals to that functionality.
I have not previously worked with i2s bluetooth modules, but my understanding of them is that they provide a side-channel, in parallel to the HCI channel, where you can stream raw audio and it gets encoded/decoded in hardware. This side-channel is exposed via ALSA, so you can see individual nodes in wpctl for that.
I believe to make this work, WirePlumber needs to be instructed to link your speakers and microphone directly to the bluetooth alsa device instead of linking them to the bluez_input/bluez_output nodes, which are using the HCI channel.
Before making any changes to the code, you can try this manually. When you make a call and you see the streams that you have pasted below, use the pw-link tool to create links between:
* the bt i2c input node and "Communication Playback Endpoint"
* the "tlv320aic3106" (which must be the microphone input?) to the bt i2c output node
(and forget about bluez_input / bluez_output)
If this works, then all you need to do is to write a wireplumber lua script to integrate this logic into wireplumber.
On 05/07/2021 16:55, Ehsan Takalloo wrote: