BlueZ5.52/PulseAudio13.0/Ofono1.31环境下HFP单向音频问题及配置求助
Hi Matteo,
从你的描述来看,A2DP音频流正常但HFP通话时远端听不到声音,核心问题大概率是PulseAudio的音频输入路由未正确绑定到HFP蓝牙源,或者采样率不匹配HFP协议要求。结合你提供的sources/sinks列表,我整理了针对性的配置调整方案:
一、调整default.pa配置文件
编辑全局配置/etc/pulse/default.pa或用户自定义配置~/.config/pulse/default.pa,添加/修改以下内容:
1. 确保Ofono与HFP模块加载
添加模块绑定Ofono和PulseAudio的HFP通路,同时开启自动适配:
# 加载Ofono headset模块,打通HFP音频通道 load-module module-ofono-headset # 设备连接时自动切换音频配置文件(适配A2DP/HFP切换场景) load-module module-switch-on-connect
2. 绑定HFP默认输入源
你已经手动激活了headset_audio_gateway配置,需要强制通话时使用蓝牙适配器的输入源。先确认蓝牙对应的source索引:激活HFP后执行pactl list sources,状态变为RUNNING的就是目标源(从你当前列表看,alsa_input.1.stereo-fallback(索引4)大概率是蓝牙输入)。在配置中添加:
# 设置默认输入源为蓝牙HFP设备(替换为你的实际source索引/名称) set-default-source alsa_input.1.stereo-fallback
3. 强制HFP采样率匹配协议
HFP通话标准采样率为8kHz,而你的当前源是44100Hz,可能导致音频不兼容。添加采样率强制规则:
# 为蓝牙HFP输入源设置8kHz单声道采样率 update-source-proplist alsa_input.1.stereo-fallback format=s16le rate=8000 channels=1
二、优化daemon.conf配置
编辑/etc/pulse/daemon.conf,调整全局音频参数适配HFP:
default-sample-format = s16le default-sample-rate = 8000 alternate-sample-rate = 44100
这样PulseAudio在HFP场景下会自动切换到8kHz采样率,同时保留A2DP所需的44100Hz作为备选。
三、验证与调试步骤
- 重启PulseAudio生效配置:
pulseaudio -k && pulseaudio --start
- 重新激活HFP配置文件:
pactl set-card-profile 2 headset_audio_gateway
- 发起通话后,实时检查输入源状态:
pactl list sources | grep -A 5 -B 5 "RUNNING"
确认目标HFP输入源处于RUNNING状态。
4. 本地测试录音通路:
parec -d alsa_input.1.stereo-fallback | paplay
如果能听到自己的声音,说明输入源正常,问题可能出在Ofono与蓝牙模块的绑定上。
如果调整后问题仍存在,麻烦提供你的default.pa和daemon.conf完整内容,我可以帮你进一步排查细节。
内容的提问来源于stack exchange,提问作者Matteo Sperandio

