当前位置: 技术问答>linux和unix
Linux有声卡驱动,有设备文件,没声音?
来源: 互联网 发布时间:2016-09-18
本文导语: 自己搭建的基于U盘的Linux系统,声卡是RealtekHD的,已将声卡相关模块编入内核,系统启动后也有/dev/dsp,/dev/audio,/dev/mixer等声音设备文件,/proc/asound/cards里也有我的声卡信息,但不管是编写程序打开设备文件向其中写音...
自己搭建的基于U盘的Linux系统,声卡是RealtekHD的,已将声卡相关模块编入内核,系统启动后也有/dev/dsp,/dev/audio,/dev/mixer等声音设备文件,/proc/asound/cards里也有我的声卡信息,但不管是编写程序打开设备文件向其中写音频数据,还是直接cat 音频文件 > /dev/dsp(或/dev/audio), 从耳机中均听不到任何声音。
不知道内核里是不是还有为声卡供电的模块啊?
不知道内核里是不是还有为声卡供电的模块啊?
|
这个查起来就麻烦了:
如果不是音量问题的话,建议做如下检查(用示波器):
1、测量耳机接口上是否有波形(应该肯定没有)
2、如果声卡有放大电路或芯片的话,检查放大电路的输入端是否有波形。
3、如果没有波形的话在检查DAC的模拟输出端是否有波形。
4、如果还没有波形的话,看能否测到DAC的数字端,如果能测的话,检查数字端是否有波形。
5、如果还没有波形的话,那就要根据声卡所使用的codec芯片来检查各种设置(就是声卡的初始化)是否正确(主要检查codec芯片中的各种配置寄存器)。
6、codec的配置检查完后,再检查数据是否确实送到了codec芯片(主要是检查驱动程序)
|
这种情况很诡异
cat 音频文件 > /dev/dsp 至少能听到一些杂音
strace 跟一下,或者尝试编程读写/dev/dsp,执行查询版本号之类的ioctl (OSS方式)
或者用ALSA的工具命令 amixer contents 看看当前的音频设备是否正常
cat 音频文件 > /dev/dsp 至少能听到一些杂音
strace 跟一下,或者尝试编程读写/dev/dsp,执行查询版本号之类的ioctl (OSS方式)
或者用ALSA的工具命令 amixer contents 看看当前的音频设备是否正常
|
pulseaudio?
ALS?
ALS?
|
是不是音量没有调上来或者主通道静音了?你在驱动程序中试试将音量调到中间值。
如果驱动程序加载正常,基本说明设备供电是正常的。
如果驱动程序加载正常,基本说明设备供电是正常的。
|
ALSA应该在内核里就编进去了吧,
我看arm板上自带的系统里也没有pulseaudio服务,但声音正常啊
|
驱动程序一般都是往芯片的音量控制寄存器中写入适当的值(不是ioctl中的值)。你可以查看一下驱动程序的源代码,看看ioctl中相应代码的实现。
另外,你在打开设备文件和往其中写入数据的时候有没有报错?
另外,你在打开设备文件和往其中写入数据的时候有没有报错?