如何在 Ubuntu 16.04 中为 Macbook 和 Matlab 配置 ALSA?

如何在 Ubuntu 16.04 中为 Macbook 和 Matlab 配置 ALSA?

情况:无法在 Ubuntu 16.04 中为 Matlab 2016a 配置 ALSA
系统特性

  • /proc/asound/cards

      0 [HDMI           ]: HDA-Intel - HDA Intel HDMI
                           HDA Intel HDMI at 0xb0a10000 irq 54
      1 [PCH            ]: HDA-Intel - HDA Intel PCH
                           HDA Intel PCH at 0xb0a14000 irq 53
    
  • /usr/share/alsa/also.conf成立这里我在文件末尾尝试了以下内容,但没有成功,因为我认为device 1这是我的声音(PCH)

      pcm.!default {
       type hw
       card 0
       device 1
      }
    

Matlab 中的测试代码

soundsc(230)

错误

ALSA lib pcm_dsnoop.c:606:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1029:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:1029:(snd_pcm_dmix_open) unable to open slave

手动提案

我在博客文章中找到了一项可能的建议PyAudio、PortAudio 和 ALSA 消息意思是

  • pcm.rear cards.pcm.rear删除中的行/usr/share/alsa/alsa.conf
  • 必须设置一个新的错误处理程序而不是默认的错误snd_lib_error_set_handler()处理alsa-lib程序;如何做到这一点?

按照 Monkeyman_stones 的建议尝试失败

我按照旧款 Macbook Air 的说明操作,该款机器仍然使用 wikipage 中相同/类似的声音芯片MacBookAir3-2/Meerkat > 声音.我没有成功

  1. 终端,sudo vim /etc/modprobe.d/alsa-base.conf并将该行添加options snd-hda-intel model=mba31到文件末尾。
  2. 终端,alsamixer然后使用箭头键选择前置扬声器(测试S/PDIFS/PDIF 1S/PDIF 2),m最后按下ESC。完成!
  3. 输出:在 Matlab 提示符下运行任何代码后,出现与之前相同的警告。重启后,系统会忘记 中的所有更改alsamixer。我也尝试过sudo alsamixer。如何使这些更改永久生效?

我完成/etc/modprobe.d/alsa-base.conf更改后,你看不到重复的,只有一次,这似乎根本snd-hda-intel没有影响alsamixer

install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; }
#
# Workaround at bug #499695 (reverted in Ubuntu see LP #319505)
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; }
#
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; }
# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; }
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-caiaq index=-2
options snd-usb-ua101 index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
# Ubuntu #62691, enable MPU for snd-cmipci
options snd-cmipci mpu_port=0x330 fm_port=0x388
# Keep snd-pcsp from being loaded as first soundcard
options snd-pcsp index=-2
# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=-2

# https://help.ubuntu.com/community/MacBookAir3-2/Meerkat
# Start up a terminal, run alsamixer and use arrow keys to select Front Speaker and press m, then all is good sound-wise.
# TODO this is not affecting `alxamixer` at all; restart restores the defaults. Why?
options snd-hda-intel model=mba31
系统 Linux 内核 Linux 内核选项 硬件 矩阵
Linux Ubuntu 16.04 64 位 4.6 Macbook Air 2013 年中 2016 年

Matlab 关于 Linux 中声音的官方文档:ALSA 音频播放
相关主题:HDA Intel PCH 没有声音Alsa 与 python2.7 的问题-无法打开从属为什么 ALSA lib 在 Ubuntu 中无法运行?

答案1

虽然这表明它针对的是 Ubuntu Meerkat (10.10),但 Alsa-base.conf 设置并没有发生太大变化,因此方向仍然正确: Ubuntu 早期 Macbook Air 声音指南

由于它使用 HDA Intel 声卡类型,因此需要在 /etc/modprobe.d/alsa-base.conf 中对设备的声卡设置进行特定更改。

答案2

audiodevinfo()这些错误信息是由调用函数引起的sound/soundsc/audioplayer/audiorecorder。它们是无害的,是由 MathWorks 在其应用程序中设计的。我自己不喜欢这样的设计。相关:这里其中有票证和一些支持服务的回复。

相关内容