linux dev controlC0,关于Linux的alsa音频问题解决
到今日,在android平臺上調試聲音的方面終于有了進展,原來是需要改一個配置文件,目前只是解決了問題,具體原因以后再分析。硬件平臺是6410+WM9714,軟件平臺是ANDROID。現在由于android系統啟動時,加載音頻服務不成功,處于一個死循環中,老停在登陸界面。此時打印的Logcat信息如下:
.........
AudioFlinger not published, waiting...
Waiting for sevice media.audio_flinger...
.........。
一開始我以為是WM9714的內核音頻驅動有問題,所以先驗證音頻驅動是否OK。
(1)用cat xxx.wav > /dev/snd/audio時耳機全是播出滋滋的噪聲,沒有一點音樂聲;
(2)用aplay xxx.wav時沒有聲音,會提示Unable to install hw params。由此分析是alsa配置存在問題,但具體是什么參數不得而知;
(3)在實驗方法(1)播放出噪聲時,直接用語句讀出WM9714的全部寄存器值。讀出的ID號正確,說明AC97與codec的通訊無誤;后來將全部的寄存器值發給wofson原廠工程師燒到他們自己的平臺上,播放音頻文件正常。進一步證明寄存器設置是無誤的,AC-LINK通訊無誤,驅動無誤。
由此原因集中在配置上。后來同事分析和試了一把,改動/vendor/sec/smdk6410/init.smdk6410.rc中的
setprop ro.radio.noril? yes改成setprop ro.radio.noril?? no。雖然我們做的是MID產品,沒有RIL電話功能硬件,但還是要將這部分服務加載上去。(但最后試驗過,no值也OK)
另一個需要補充的地方在于:同目錄下的init.rc中的:
service media /system/bin/mediaserver
user media
group system audio camera graphics inet net_bt net_bt_admin
要打開,不能屏蔽。
*******************************************************************************
另2010-02-04補充:在網上看到了類似的錯誤記錄,出現最上述的Logcat服務信息時,敘述如下:有三種可能原因:一是上面所講的init.rc中的一定要啟動mediaserve服務。二是確保ALSA驅動已經加載到系統中。三是在init.rc中要添加alsa相關信息:
symlink /dev/snd/pcmC0D0c /dev/pcmC0D0c
symlink /dev/snd/pcmC0D0p /dev/pcmC0D0p
symlink /dev/snd/controlC0 /dev/controlC0
symlink /dev/snd/timer /dev/timer
chmod 0777 /dev/pcmC0D0c
chmod 0777 /dev/pcmC0D0p
chmod 0777 /dev/controlC0
chmod 0777 /dev/timer
chown root audio /dev/snd/controlC0
chown root audio /dev/snd/pcmC0D0c
chown root audio /dev/snd/pcmC0D0p
chown root audio /dev/snd/timer
setprop alsa.mixer.playback.master Front
setprop alsa.mixer.capture.master Capture
setprop alsa.mixer.playback.earpiece Master
setprop alsa.mixer.capture.earpiece Capture
setprop alsa.mixer.playback.headset Master
setprop alsa.mixer.playback.speaker Master
總結
以上是生活随笔為你收集整理的linux dev controlC0,关于Linux的alsa音频问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老鼠娶亲年画是谁画的啊?
- 下一篇: linux web高级编程,寒假学习 第