一 ALSA调试
1.tinyalsa
tinypcminfo:查看PCM节点参数信息 Usage: tinypcminfo -D card -d device
# tinypcminfo -D 0 -d 0 Info for card 0, device 0:
PCM out:Access: 0x000009Format[0]: 0x000444Format[1]: 00000000Format Name: S16_LE, S24_LE, S32_LESubformat: 0x000001Rate: min=8000Hz max=192000HzChannels: min=1 max=4Sample bits: min=16 max=32Period size: min=4 max=65536Period count: min=2 max=1024
PCM in:Access: 0x000009Format[0]: 0x000444Format[1]: 00000000Format Name: S16_LE, S24_LE, S32_LESubformat: 0x000001Rate: min=8000Hz max=192000HzChannels: min=1 max=2Sample bits: min=16 max=32Period size: min=8 max=65536Period count: min=2 max=1024
tinycap:录制wav音频文件
Usage: tinycap file.wav [-D card] [-d device] [-c channels] [-r rate] [-b bits] [-p period_size] [-n n_periods] [-T capture time] [-t file_format: wav or raw]
tinyplay:播放wav音频文件
Usage: tinyplay file.wav [-D card] [-d device] [-p period_size] [-n n_periods]
tinycap和tinyplay主要用于验证audio驱动和tinyalsa的音频功能是否正常
tinymix:查看kcontrol控件信息
tinymix [options] [control name/#] [value to set] options: --device|-D - use the given card # instead of 0. --all-values|-a - show all possible values/ranges for control. --tabs-only|-t - separate all output columns/values with tabs. --value-only|-v - show only the value for the selected control.
tinymix主要用于一个音频驱动的控制,比如audio route,volume,mute等
2.devtmpfs信息(设备节点)
路径:/dev/snd
# ls /dev/snd/ -l
total 0
crw-rw-rw- 1 system audio 116, 2 2020-01-01 08:00 controlC0
crw-rw-rw- 1 system audio 116, 4 2020-01-01 08:00 pcmC0D0c
crw-rw-rw- 1 system audio 116, 3 2020-01-01 08:00 pcmC0D0p
crw-rw-rw- 1 system audio 116, 6 2020-01-01 08:00 pcmC0D1c
crw-rw-rw- 1 system audio 116, 5 2020-01-01 08:00 pcmC0D1p
crw-rw---- 1 system audio 116, 8 2020-01-01 08:00 pcmC0D2c
crw-rw---- 1 system audio 116, 7 2020-01-01 08:00 pcmC0D2p
crw-rw---- 1 system audio 116, 9 2020-01-01 08:00 pcmC0D3c
crw-rw---- 1 system audio 116, 11 2020-01-01 08:00 pcmC0D4c
crw-rw---- 1 system audio 116, 10 2020-01-01 08:00 pcmC0D4p
crw-rw---- 1 system audio 116, 12 2020-01-01 08:00 pcmC0D5p
crw-rw---- 1 system audio 116, 14 2020-01-01 08:00 pcmC0D6c
crw-rw---- 1 system audio 116, 13 2020-01-01 08:00 pcmC0D6p
crw-rw---- 1 system audio 116, 15 2020-01-01 08:00 pcmC0D7c
crw-rw-rw- 1 system audio 116, 33 2020-01-01 08:00 timer
3.procfs信息
路径:/proc/asound
cards:查看已注册的声卡信息
# cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0x91230000 irq 141
devices:查看已注册的设备信息
#cat /proc/asound/devices
1: : sequencer
2: [ 0- 0]: digital audio playback
3: [ 0- 0]: digital audio capture
4: [ 0- 2]: digital audio capture
5: [ 0- 3]: digital audio playback
6: [ 0- 7]: digital audio playback
7: [ 0- 8]: digital audio playback
8: [ 0- 9]: digital audio playback
9: [ 0-10]: digital audio playback
10: [ 0- 0]: hardware dependent
11: [ 0- 2]: hardware dependent
12: [ 0] : control
33: : timer
pcm:查看已注册的pcm设备信息
#cat /proc/asound/pcm
00-00: ALC3246 Analog : ALC3246 Analog : playback 1 : capture 1
00-02: ALC3246 Alt Analog : ALC3246 Alt Analog : capture 1
00-03: HDMI 0 : HDMI 0 : playback 1
00-07: HDMI 1 : HDMI 1 : playback 1
00-08: HDMI 2 : HDMI 2 : playback 1
00-09: HDMI 3 : HDMI 3 : playback 1
00-10: HDMI 4 : HDMI 4 : playback 1
以上三个设备接点,主要用于查看声卡驱动是否正常加载
hwdep:(硬件相关)控制列表。并不会在所有的系统中出现
timers:一个ALSA已知的计时器的列表,并且描述了当前哪个是实际正在实际使用。version:ALSA子系统模块(或内核)构建的版本和日期。
cardX/pcmXx/info:查看pcm节点信息
#cat /proc/asound/card0/pcm10p/info
card: 0
device: 10
subdevice: 0
stream: PLAYBACK
id: HDMI 4
name: HDMI 4
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1
cardX/pcmXX/sub0/status:查看pcm节点状态
state:当前输出运行状态。RUNNING或者close
owner_pid:调用者的线程号
trigger_time:trigger开始播放时间
delay:当前buffer中可用数据大小(单位为:帧)
avail:当前buffer中空闲空间大小(单位为:帧)[为pcm*c录音时,该值为可用数据大小] hw_ptr:alsa驱动读取指针位置 [为pcm*c录音时,该值为 alsa驱动写入指针位置] appl_ptr:alsa写入数据者的指针位置 [为pcm*c录音时,该值为alsa读取数据者的指针位置]
# cat status
state: RUNNING
owner_pid : 4236
trigger_time: 1622193799.015675828
tstamp : 1622193948.288690108
delay : 2048
avail : 0
avail_max : 0-----
hw_ptr : 7165136
appl_ptr : 7167184
cat stasus可以用于初步计算采样率
两次hw_ptr的差值除以两次tstamp的差值,即可获取当前硬件真实的sample_rate
cardX/pcmXX/sub0/hw_params:查看pcm节点硬件参数(来自pcm_config)
format: 当前数据位宽
channels:当前声道数
rate:当前采样率
period:单次处理数据的大小(单位为:帧)
buffer_size: alsa 的buffer大小(单位为:帧)
# cat hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 8
rate: 48000 (48000/1)
period_size: 512
buffer_size: 2048
cardX/pcmXX/sub0/sw_params:查看pcm节点软件参数(来自pcm_config)
start_threshold: 当起播时buffer中的可用数据大小大于等于start_threshold时alsa才启动播放
stop_threshold:当播放过程中buffer空闲大小大于等于stop_threshold时alsa停止播放 boundary:虚拟的buffer大小(一个回卷的大小)
# cat sw_params
tstamp_mode: ENABLE
period_step: 1
avail_min: 1
start_threshold: 1024
stop_threshold: 2048
silence_threshold: 0
silence_size: 0
boundary: 1073741824
4.sysfs信息
路径:/sys/class/sound
有声卡的id,number,pcm_class等信息
二 ASoc调试
路径:/sys/kernel/debug/asoc
codecs:查看所有注册的codec
platforms:查看所有注册的platform
dais:查看左右注册的dai
CARD/dapm_pop_time:消除pop音的延时时间
CARD/COMMENT/dapm/bias_level:dapm的bias状态
CARD/COMMENT/dapm/DAPM:查看指定DAPM的信息
#cat /d/asoc/AML-AUGESOUND/codec\:dummy/dapm/HIFI\ Capture
CARD/CODEC/codec_reg:codec 寄存器信息