snd_hda_intel 0000:00:1f.3:无法添加i915组件主站(-19)

问题:

  1. 什么是i915组件大师?
  2. 未能添加i915组件主机的结果是什么?
  3. 如何解决/删除此失败通知?

背景资料:

在Ubuntu 10.5的启动和关闭时发生此故障通知。
我的内置包括华硕Z170M-Plus主板,NVidea显卡Ubuntu 10.5操作系统,使用Linux内核4.2.0-16通用和Nvidia二进制驱动程序352.55。

我很惊讶这个失败通知显示为Ubuntu正常运行,我可以观看和收听video和音乐。

snd_hda_intel似乎是Linux内核中的Intel音频驱动程序,它与ALSA内核核心和z170M-Plus音频硬件控制器进行通信。 如果我错了,请纠正我。

0000:00:1f.3是华硕主板内置音频设备的PCIe插槽。

0000:00:1f.3华硕音频设备:Intel Corporation Sunrise Point-H HD Audio(rev 31)。 它使用正在使用的

 Subsystem: ASUSTeK Computer Inc. Device 86c7 Flags: bus master, fast devsel, latency 32, IRQ 125 Memory at f7140000 (64-bit, non-prefetchable) [size=16K] Memory at f7120000 (64-bit, non-prefetchable) [size=64K] Capabilities: [50] Power Management version 3 Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+ Kernel driver in use: snd_hda_intel 

我发现了这个: http : //www.starmate.fr/i915-component-master/ (french)

它看起来像是为华硕主板激活的bios选项。

高级 – >高级\系统代理(SA)配置 – >配置图形>多GPU专用监控

它解决了我的问题;)

在我的BIOS设置的图形部分中将IGPU Multi-Monitor设置为Enabled为我修复了它。

原因是NVidia自定义驱动程序。 它与我母板上集成的video卡有某种冲突。

HDMI和DisplayPort显示器连接器可以传输音频和video。 当您使用NVidia GPU时,CPU的内置Intel iGPU可能已禁用,或者至少没有连接到它的显示器。

英特尔芯片组在音频芯片和iGPU之间有一个链接,以便iGPU的HDMI / DisplayPort显示器连接器输出音频芯片产生的音频。 系统固件元数据告诉HD Audio驱动程序需要此链接。 但由于未使用iGPU,驱动程序尝试激活此链接将失败,并且将导致错误消息failed to add i915 component master

音频芯片的其余部分可以正常工作,你只是不会通过连接到iGPU的HDMI / DisplayPort连接器获得音频(你可能还没有使用它)。 只有当您尝试在多显示器设置中使用除NVidia GPU之外的iGPU 并且想要通过HDMI或DisplayPort将音频输出到已连接的显示器的扬声器时,该消息才有意义到iGPU。

您的NVidia GPU可能还有第二个与之集成的HD-Audio声卡,它将在连接到NVidia GPU的HDMI / DisplayPort接口上输出音频。 如果您在通常的ALSA音频驱动程序之上使用Pulseaudio,它可以非常透明地处理这个问题,因此您可以根据需要混合和匹配音频输出。 如果您使用普通ALSA音频驱动程序并希望通过HDMI或DisplayPort输出音频,则需要告知音频制作软件使用第二个HD-Audio芯片而不是默认芯片。

如果您有兴趣,输出此消息的函数是Linux内核源代码包snd_hdac_i915_init() in file .../sound/hda/hdac_i9i5.c中的snd_hdac_i915_init() in file .../sound/hda/hdac_i9i5.c

虽然这是一个老问题,但我最近遇到并解决了类似的问题,同时试图让HDMI音频与基于Intel Z370的系统(带有i3-8100的AsRock Z3​​70M-ITX / ac主板)的内置video端口配合使用。 该系统仅内置video,无GPU卡。

我在启动时看到的错误是:

 snd_hda_intel 0000:00:1f.3: failed to add i915 component master (-19) 

再往下看,我看到两次以下错误:

 snd_hda_codec_hdmi hdaudioC0D2: No i915 binding for Intel HDMI/DP codec 

嵌入式i915video看起来工作正常,但无论使用何种ALSA或PulseAudio设置,都没有声音路由到HDMI端口。

-19是内核错误代码ENODEV (“没有这样的设备”),它在snd_hda_intel驱动程序代码中出现多次。

为了支持HDMI上的声音输出,Linux的video驱动程序为声卡驱动程序(在我的情况下为Intel HD Audio aka snd_hda_intel )注册“音频组件”以进行连接。 完成此连接后,声音硬件可以为GPU生成音频流,以便复用到HDMI电缆上。

就我而言,i915图形驱动程序没有在内核中注册此音频组件。 这种故障可能发生在加载和初始化i915图形驱动程序的各个阶段。 对我来说,这是由于内核模式设置(KMS)缺乏可用性。 i915驱动程序要求KMS正常运行,如果未启用,则不会初始化和注册所需的音频组件。

我通过在/etc/modprobe.d/modesetting.conf添加以下行来修复此问题:

options i915 modeset=1