音频配置

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


音频功能介绍

本章节介绍 Debian Weston 桌面环境下的音频配置及测试方法。 Weston 作为 Wayland Compositor,不提供 GNOME 桌面中的图形化音频设置界面,系统通过 PulseAudio 音频服务管理音频输入输出设备。 用户可以通过 pactl命令查看音频设备状态、调节音量。

硬件音频通道总览

M1/L1开发板的音频硬件包含 2 路输入 和 2 路输出,均通过板载的 SH1.0-4P 连接器及板载 MEMS 器件实现。请在操作前确认硬件连接正确。

通道类型

通道名称

硬件对应位置

说明

输入

板载 MIC

主板上的 MEMS 麦克风

内置硅麦,默认录音输入源,无需外接。

输入 && 输出

耳机

SH1.0-4P

外接带麦耳机。

输出

SPK (扬声器)

预留测试点

驱动大功率外放扬声器(需外接功放,直接接喇叭声音较小)。

输出

EAR (听筒)

预留测试点

驱动小功率听筒/耳机。

../../../_images/image_QKg5bicXqo9BkUxCpy8cEAZZnkb.webp ../../../_images/image_OCsLbfNFRodo1txsWGccCx8HnPc.webp

查看声卡信息

可通过以下命令检查系统声卡与 PCM 设备的加载情况:

  • 查看声卡列表:

cat /proc/asound/cards
../../../_images/image_TyBIbrbmKoswLKxa6hkcOmgwnGe.webp
  • 查看已分配的 pcm 流列表:

cat /proc/asound/pcm
../../../_images/image_FisEbnwZPoGLbYxxWJPcteEtnrf.webp

说明:若系统未检测到声卡信息或 PCM 流,则 ALSAPulseAudio 均无法正常工作。

ALSA架构

ALSA概述

ALSA是Linux系统的底层音频架构与驱动核心,它直接管理和控制计算机的音频硬件。它一方面为声卡提供原生驱动,实现对物理音频通道(如外置麦克风、耳机、扬声器)的直接读写;另一方面为应用程序提供标准化的API接口,完成最基础的音频采集与播放。ALSA是构建一切高级音频服务(如PulseAudio)的基石。

音频录制

Linux系统 下,需确认智能主控板音频配置文件 /etc/backend_conf.xml 已正确配置(系统默认已完成配置):

<device name="CODEC_DMA-LPAIF_RXTX-TX-3" rate="48000" ch="2" bits="16" />

板载麦克风录制

进行录制前,需要先停止 PulseAudio 服务:

systemctl stop pulseaudio
tinymix "TX DEC0 MUX" "SWR_MIC" 
tinymix "ADC2 ChMap" "SWRM_TX2_CH1" 
tinymix "TX SMIC MUX0" "SWR_MIC4" 
tinymix "TX_AIF1_CAP Mixer DEC0"  "1" 
tinymix "ADC2_MIXER Switch"  "1" 
tinymix "ADC2 MUX"  "INP3" 
tinymix 'TX_AIF1_CAP Mixer DEC2' '1'
agmcap /data/testMic3.wav -D 100 -d 101 -c 1 -r 48000 -i "CODEC_DMA-LPAIF_RXTX-TX-3"

结束录制

按下“Ctrl” + “Z”结束录音:

../../../_images/image_Mt5bb1rAhoSx8zx4hRbcaZF0nid.webp

耳机麦克风录制

systemctl stop pulseaudio
tinymix  "TX DEC0 MUX" "SWR_MIC"
tinymix  "TX SMIC MUX0" "SWR_MIC5"
tinymix  "DEC0_BCS Switch" "1"
tinymix  "TX_AIF1_CAP Mixer DEC0" "1"
tinymix  "ADC2 ChMap" "SWRM_TX2_CH2"
tinymix  "MBHC ChMap" "SWRM_TX3_CH3"
tinymix  "ADC2_MIXER Switch" "1"
tinymix  "ADC2 MUX" "INP2"
tinymix  "BCS Channel" "CH10"
agmcap /data/rec2.wav -D 100 -d 101 -c 1 -r 48000 -i "CODEC_DMA-LPAIF_RXTX-TX-3"

音频播放

板载扬声器未焊接,请使用外接耳机通道播放。

耳机播放(3.5 mm耳机)

systemctl stop pulseaudio
tinymix "RX_MACRO RX0 MUX" "AIF1_PB"
tinymix "RX_MACRO RX1 MUX" "AIF1_PB"
tinymix "RX INT0_1 MIX1 INP0" "RX0"
tinymix "RX INT1_1 MIX1 INP0" "RX1"
tinymix "RX INT0 DEM MUX" "CLSH_DSM_OUT"
tinymix "RX INT1 DEM MUX" "CLSH_DSM_OUT"
tinymix "RX_COMP1 Switch" "1"
tinymix "RX_COMP2 Switch" "1"
tinymix "HPHL Switch" "1"
tinymix "HPHR Switch" "1"
tinymix "HPHL_RDAC Switch" "1"
tinymix "HPHR_RDAC Switch" "1"
agmplay /data/vvdn_ring.wav -D 100 -d 100 -i CODEC_DMA-LPAIF_RXTX-RX-0 -dkv 0xA2000002

PulseAudio架构

PulseAudio概述

PulseAudio是一款跨平台的、支持网络功能的音频服务,它从一个或多个音源源(进程或输入设备)接收声音输入,然后重定向声音到一个或多个槽(声卡,远程网络PulseAudio服务,或其他进程)。它与最底层的ALSA交互,并为应用程序提供统一的接口,从而实现多路音频混合、音频转发等高级功能。

设备查看与管理

1.查看可用输出设备(Sinks)

  • 要查看系统当前可用的音频输出设备及其详细信息,可以使用以下命令。

  • 此命令会列出所有可用的sink(输出设备)的索引(index)和名称(name)。输出示例:

sh-5.2# pactl list short sinks
  • 若要获取更详细的设备信息,请使用:

sh-5.2# pactl list sinks

2.查看输入设备(Sources)

  • 类似地,你可以用以下命令查看音频输入设备(如麦克风):

sh-5.2# pactl list short sources
  • 若要获取更详细的设备信息,请使用:

sh-5.2# pactl list sources

音频录音

1.板载MIC录音

pactl set-source-port 4 speaker-mic
pactl -d 4 --file-format=wav output.wav

2.耳机录音

pactl set-source-port 4 headset-mic
parec -d 4 --file-format=wav output1.wav

音频播放

1.喇叭播放

pactl set-sink-port 1 speaker
paplay output.wav

2.耳机播放

pactl set-sink-port 1 headset
paplay output1.wav

蜂窝语音通话

Weston 环境下无图形化拨号界面,通话控制通过 qlril-api-test 命令行工具完成。该工具可注册事件监听、拨号、接听及挂断电话。通话过程中的音频路由切换仍需通过 PulseAudio 命令 pactl 进行。

测试准备与初始化

  1. 确保 SIM 卡已正确插入,且模组已注册网络。

发送 AT$QCSIMAPP=? 检查网络连接状态

AT\(QCSIMAPP=? \)QCSIMAPP: 0,“SUB1”,“L” # 网络已连接 $QCSIMAPP: 1,“SUB2”,“No Service”

  1. 在拨号或接听前,使用 pactl 将音频通道切换到期望的设备。示例:

# 查看当前音频设备
pactl list short sinks
pactl list short sources

# 设置为耳机通道
pactl set-source-port 4 headset-mic
pactl set-sink-port 1 headset

# 设置为板载mic录音,耳机播音
pactl set-source-port 4 speaker-mic
pactl set-sink-port 1 headset
  1. 打开终端,执行以下命令启动 qlril-api-test 程序:

qlril-api-test

配置事件监听

为了能够接收来电、通话状态等事件,需要进行以下设置(以下编号对应程序内的命令索引):

# 输入 10,开启事件监听器
> 10

# 输入 12,然后输入起始值 1000,再输入终止值 1070,开启注册事件监听功能
# (终止值可根据实际返回的最大值调整,SW可能增加新事件)
> 12
> 1000
> 1070

# 输入 13,屏蔽编号在 1009~1009 范围内的消息事件(可根据需要调整)
> 13
> 1009
> 1009

接听来电(被叫测试)

当辅助机拨打测试机电话时,qlril-api-test 窗口会上报来电事件,类似:

../../../_images/image_GGISbxLIkonuvuxZ4dtcQRfMnAh.webp

此时执行以下操作接听:

# 输入 44,接听来电
> 44

接听后,通话应建立。如果出现“通话无声”,请检查音频路由是否正确。

挂断电话

通话结束后,执行:

# 输入 43,然后选择 1(挂断当前通话)
> 43
> 1

此时通话被挂断,界面应提示挂断成功。

主动拨号(主叫测试)

若需主动拨号,可使用以下命令(假设号码为 10086):

# 输入 43,然后输入电话号码
> 43
> 10086

拨号后,系统会发起呼叫,对方接听后即可通话。

测试预期与实际情况

  • 预期结果:来电上报信息清晰,44 可正常接听,通话建立,声音正常;挂断命令 43->1 可正常结束通话。

  • 实际测试中:接听成功但可能出现通话无声的情况。此时请优先检查音频路由设置(是否正确选择了耳机和 MIC 源),并确认硬件连接完好。此问题通常与 PulseAudio 配置或 ALSA 混音器设置有关,研发可自行排查。