备注:来源于高通文档
1、 用户空间调试日志
执行命令之后,会在路径 C:\Users\Administrator 下面找到 logcat.log。
2、内核空间调试日志
执行以下命令,则打开相应内核 c 文件 debug 功能。
adb shell
echo -n "file msm-pcm-q6-v2.c +p" > /sys/kernel/debug/dynamic_debug/control
echo -n "file msm-dai-q6-v2.c +p" > /sys/kernel/debug/dynamic_debug/control
echo -n "file soc-dapm.c +p" > /sys/kernel/debug/dynamic_debug/control
echo -n "file soc-pcm.c +p" > /sys/kernel/debug/dynamic_debug/control
echo -n "file soc-core.c +p" > /sys/kernel/debug/dynamic_debug/control
echo -n "file msm8952.c +p" > /sys/kernel/debug/dynamic_debug/control
echo -n "file msm8x16-wcd.c +p" > /sys/kernel/debug/dynamic_debug/control
adb shell cat /proc/kmsg > kernel.log
执行 adb shell cat /proc/kmsg > kernel.log 之后,会在路径 C:\Users\Administrator
下面找到 kernel.log。
3、ro.qc.sdk.audio.ssr If true, the surround sound recording feature is supported; used in the function audio_extn_ssr_update_enabled() in the file hardware/qcom/audio/hal/audio_extn/ssr.c
ro.qc.sdk.audio.fluencetype=n one None: Qualcomm® Fluence™ noise cancellation technology is not supported
Fluence Pro: Qualcomm® Fluence™ Pro noise cancellation technology, Fluence Quad-Mic, and Dual-Mic are supported
Fluence: Fluence Dual-Mic is supported
persist.audio.fluence.voicecall =true If true, use Fluence in voice call
persist.audio.fluence.voicerec =false If true, use Fluence during voice recording
persist.audio.fluence.speaker =true If true, use Fluence in Speaker mode
tunnel.audio.encode=true If true, enables Tunnel mode encoding; currently only AMR_WB format is supported; used in the function audio_extn_compr_cap_enabled() in the file /hardware/qcom/audio/hal/audio_extn/compress_capture.c
4、读写codec寄存器
使用 adb 命令读写 codec 寄存器:
adb root
adb remount
adb shell mount -t debugfs debugfs /sys/kernel/debug
adb shell cd /sys/kernel/debug/asoc/msm####-xxxx-snd-card/xxxx_codec
Read: cat codec_reg
Write: echo " < value >" > codec_reg
Ex : Register Address : 0x121
Value to written : 0xA0
echo "0x121 0xA0" > codec_reg
用 ADIE 设置寄存器
使用 adb 命令配置 ADIE 寄存器
adb root
adb remount
adb shell “mount -t debugfs debugfs /sys/kernel/debug”
adb shell “chmod 777 /sys/kernel/debug/asoc/*-sndcard/*_codec/codec_reg“
然后连接 QACT ADIE,进行设置
5、WCD codec 数字增益设置
“RXn Digital Volume” (CDC_RXn_VOL_CTL_B2_CTL n= [1 -4])
“DECn Volume” (CDC_TXn_VOL_CTL_GAIN n= [1 -4])
“IIRn INPx Volume” (CDC_IIRn_GAIN_Bx_CTL n= [1 -2] x=[1-4]) 以上增益按最小 0 阶到最大 124 阶设置,步长 1 分贝。 最小 0 阶代表-84 分贝,第 84 阶为 0 分贝,最大 124 阶为+40 分贝。
实例如下, mixer_paths.xml 增益设置 “value”字段可能的值范围最小:0 (-84dB) 最大:124(0dB) 步长:1(1dB) Tinymix 音量控制命令: tinymix "DEC1 Volume" value 若 value 设为 84 代表 0 分贝 若 value 设为 0 代表-84 分贝 若 value 设为 124 代表+40 分贝
6、WCD codec 模拟增益设置
“ADCn Volume” (TX_n_EN n=[1,2])
“LINEOUTn Volum” (RX_LINE_n_GAIN n= [1-2])
“HPHL Volume” (RX_HPH_L_GAIN)
“HPHR Volume” (RX_HPH_R_GAIN)
“EAR PA Gain” (RX_EAR_GAIN)
“SPK DRV Volume” (SPKR_DRV_GAIN)
a. ADC Volume
“ADCn Volume” (TX_n_EN,其中 n=[1,2])
最小增益:0 分贝,最大增益:+28.5 分贝,步长:1.5 分贝
实例如下, mixer_paths.xml 增益控制 “value”字段可能值范围最小:0(0 分贝)最大:19(+28.5 分贝)步长:1(1.5 分贝) Tinymix 音量控制命令: tinymix "ADC1 Volume" value 若 value 设为 0 代表 0 分贝 若 value 设为 19 代表+28.5 分贝
b. LINEOUT Volume
“LINEOUTn Volum” (RX_LINE_n_GAIN,其中 n= [1-2]) 最小增益:-30 分贝,最大增益:+0 分贝,步长:1.5 分贝
实例如下, mixer_paths.xml 增益设置 “value”字段可能的值范围最小:0(-30 分贝)最大:20(0 分贝)步长:1(1.5 分贝) Tinymix 音量控制命令: tinymix "LINEOUT1 Volume" value 若 value 设为 0 代表-30 分贝 若 value 设为 20 代表+0 分贝
c. HeadPhone Volume “HPHL Volume” (RX_HPH_L_GAIN)及 “HPHR Volume” (RX_HPH_R_GAIN) 最小值:-30 分贝,最大值:+0 分贝,步长:1.5 分贝 实例如下, mixer_paths.xml 增益设置 “value”字段可能的值范围最小:0(-30 分贝)最大:20(0 分贝)步长:1(1.5 分贝)
Tinymix 音量控制命令: tinymix "HPHL Volume"
value 若 value 设为 0 代表-30 分贝
若 value 设为 20 代表+0 分贝
d. EAR PA Volume “EAR PA Gain” (RX_EAR_GAIN) 最小值:0 分贝,最大值:+6 分贝,步长:1.5 分贝
实例如下, mixer_paths.xml 增益设置 “value”字段可能的值范围:POS_6_DB(6.0 分贝),POS_4P5_DB(4.5 分贝), POS_3_DB(3.0 分贝),POS_1P5_DB(1.5 分贝), POS_0_DB(0 分贝)
Tinymix 音量控制命令: tinymix "EAR PA Gain" value 若 value 设为 POS_6_DB 代表 6dB 若 value 设为 POS_0_DB 代表 0dB e. Speaker Drive Volume “SPK DRV Volume” (SPKR_DRV_GAIN) 最小值:0 分贝,最大值:+28.5 分贝,步长:1.5 分贝
实例如下,
mixer_paths.xml 增益设置 “value”字段可能的值范围:POS_12_DB(12.0 分贝), POS_10P5_DB(10.5 分 贝), POS_9_DB(9.0 分贝), POS_7P5_DB(7.5 分贝), POS_6_DB(6.0 分 贝), POS_4P5_DB(4.5 分贝), POS_3_DB(3.0 分贝), POS_1P5_DB(1.5 分 贝), POS_0_DB(0 分贝)
Tinymix 音量控制命令: tinymix "SPK DRV Volume" value 若 value 设为 POS_6_DB 代表 6 分贝 若 value 设为 POS_0_DB 代表 0 分贝
7、音频回环
比较常用的有三种回环: 编解码器回环, DSP 音频前端回环以及 ALSA 回环。
通路配置参照: vendor/qcom/proprietary/mm-audio/audio_ftm/config/89xx/ftm_test_config
KK 以前版本用 amix/aplay/arec 命令
KK 及以后版本用 tinymix/tinyplay/tinycap 命令 如下以 MSM8996 为例:
编解码器回环
音频信号回环通路: 音频信号输入-> WCD93xx (AMIC/DMIC) -> WCD93xx ( IIR) -> 回环 -> WCD93xx (RX Mixer Chain/DAC) ->音频信号输出
四种模式 – 从数字 MIC1 回环到听筒 – 从模拟麦克 MIC1 回环到听筒 – 从 DMIC1 回环到扬声器 – 从 AMIC1 回环到扬声器
例如:编解码器回环从耳机麦克到受话器(亦即侧音)控制命令如下
#tinymix 'ADC MUX6' 'AMIC'
#tinymix 'AMIC MUX6' 'ADC2'
#tinymix 'IIR0 INP0 MUX' 'DEC6'
#tinymix 'IIR0 INP0 Volume' 75
#tinymix 'ADC2 Volume' 18
#tinymix 'RX INT1 DEM MUX' 'CLSH_DSM_OUT'
#tinymix 'RX INT2 DEM MUX' 'CLSH_DSM_OUT'
#tinymix 'RX INT1 MIX2 INP' 'SRC0'
#tinymix 'RX INT2 MIX2 INP' 'SRC0'
//侧音增益能通过修改 IIR 滤波器增益改变
tinymix 'IIR0 INP0 Volume' X “X”值范围从 0 到 124,0 代表-84 分贝,124 代表+40 分贝
音频前端回环
音频信号回环通路: 音频信号输入 -> WCD93xx (AMIC/DMIC) -> Slimbus TX -> DSP AFE TX -> 回环 - > DSP AFE RX -> Slimbus RX-> WCD93xx (RX Mixer Chain/DAC) ->音频信号输出
步骤: i 通过 amixer 命令使能 TX 和 RX 设备 (a) 使能 TX 设备 (b) 使能 RX 设备 (c) 连接音频前端和后端 #tinymix ‘SLIMBUS_DL_HL Switch’ 1
ii 使能数字处理器在 SLIMBUS_0_TX 和 SLIMBUS_0_RX 之间回环
#tinymix 'SLIMBUS_0_RX Port Mixer SLIM_0_TX' 1
iii 结束播放和录音 #tinyhostless -D 0 -P 5 -C 5 -p 8 -n 2 -c 1 -r 48000
TinyALSA 回环
音频信号回环通路: 音频信号输入 -> WCD93xx (AMIC/DMIC) -> Slimbus TX -> DSP AFE TX -> ALSA Recording -> 回环 -> ALSA Playback -> DSP AFE RX -> Slimbus RX-> WCD93xx (RX Mixer Chain/DAC) ->音频信号输出 使能 TX 和 RX 设备,通过执行以下 ALSA 回环命令测试 ALSA 回环: adb shell tinyhostless -P 0 -C 0 -p 640 -n 2 -c 2 -r 48000 -L 1
8. 播放测试:一般播放 1khz 0db 正弦波,然后使用示波器确认输出是否有削顶失真,相 位失真,杂音等。
9. 录音测试:可使用信号发生器产生 1khz 的波形从 codec 模拟端导入,然后录制波形, 可以通过回放来确认波形是否正常,无失真,或者使用电脑上的软件工具 adobe audition 来分析底噪等等基本指标。