首页 > 解决方案 > ALSA 有时在重新启动后不起作用(大约 30 个中的 1 个)

问题描述

几天来,我一直在努力解决这个问题。

我有一个用 C++ 编写的嵌入式应用程序,它使用 ALSA 驱动程序来播放一些音频。

大多数情况下,没有问题,但有时在重新启动后,音频无法正常工作,而且我尝试过的任何命令似乎都无法使其正常工作(alsactl restore,alsamixer 上的任何命令......)。

如果我再次重新启动系统,它很可能会正常工作。但是我想立即检测到问题并在不重新启动的情况下解决它。

我已经运行 alsa-info.sh 来比较损坏状态和正常状态之间的输出。当系统不播放任何音频时,我将节点 0x14 作为“IN”:

Node 0x14 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x0001003c: IN OUT HP EAPD Detect
  EAPD 0x2: EAPD
  Pin Default 0x01014030: [Jack] Line Out at Ext Rear
    Conn = 1/8, Color = Green
    DefAssociation = 0x3, Sequence = 0x0
  Pin-ctls: 0x20: IN

但是当声音正常时,引脚 ctls 设置为 0x40:OUT。这是最让我印象深刻的事情。虽然,可能会涉及更多的事情,因为我对 ALSA 了解不多。

我的内核是:Linux dmi 2.6.32.43 #32 SMP Thu Apr 18 10:57:48 CEST 2013 i686 GNU/Linux

有没有人有任何提示?

出于信息目的,我将完整的 alsa-info.sh 放在 Justpate 中,因为它很长: https ://justpaste.it/8d55a

标签: linuxaudioalsa

解决方案


推荐阅读