Ubuntu 22.04 耳机/带分离器(2 个插入式插针)的耳机麦克风无法正常工作

Ubuntu 22.04 耳机/带分离器(2 个插入式插针)的耳机麦克风无法正常工作

我最近在一台新电脑上设置了双启动。我没有使用笔记本电脑(我提到这一点是因为我在联想笔记本电脑上经常遇到这个问题,但到目前为止这些解决方案对我来说都不起作用)。我查看并尝试了许多解决方案,但不幸的是到目前为止它们都没有起作用。顺便说一句,我认为这并不相关,但 ubuntu 和 windows 位于不同的 SSD 上。

主板信息。

$ sudo dmidecode | grep -A4 '^Base'
Base Board Information
    Manufacturer: Micro-Star International Co., Ltd.
    Product Name: MPG X670E CARBON WIFI (MS-7D70)
    Version: 1.0
    Serial Number: 07D7010_MC1E902178

我有一副带麦克风的耳机,已经用了 2-3 年了。我通过分线器将耳机直接插入主板,分别插入扬声器和麦克风插孔。在 Windows 上,耳机扬声器和麦克风都工作正常。但是,在我的 Ubuntu 22.04 上,只有输出(扬声器)工作正常。输入设备如下:

$ pactl list short sources
0   alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
1   alsa_output.usb-Generic_USB_Audio-00.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
2   alsa_input.usb-Generic_USB_Audio-00.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED

$ pactl get-default-source
alsa_input.usb-Generic_USB_Audio-00.analog-stereo

声音设置如下所示。我故意在音乐播放时截取了屏幕截图,因为在麦克风处你可以看到红色尖峰,它看起来好像以某种方式捕捉到了系统声音??但我可能只是在猜测。

系统声音设置

好消息是,当我安装 audacity 时,它会显示 4 个设备(或子设备),如下所示,并且在右上角您可以看到麦克风正在主动捕获。

USB Audio: #1 (hw: 1,1)
USB Audio: #2 (hw: 1,2)
pulse
default

大胆

Audacity 为何能识别正确的麦克风而 pulseaudio 却不能?我做错了什么吗?如何让 pulseaudio 识别 Audacity 的功能,或者如何将该麦克风配置USB Audio: #2 (hw: 1,2)为默认输入设备?

另外,我可以成功录制音频。

arecord -f S16_LE -d 10 -r 16000 -c 2 --device="hw:1,2" /tmp/test-mic.wav

并播放

aplay /tmp/test-mic.wav

最近我尝试设置options snd-hda-intel model=headset-mode/etc/modprobe.d/alsa-base.conf希望headset-mode能够正确配置引脚,但没有成功。

更新-1:硬件信息和一些相关问题 声卡的 Hwinfo 如下。

$ hwinfo --sound
21: PCI 1600.1: 0403 Audio device                               
  [Created at pci.386]
  Unique ID: dTbt.EHFnU8tIZO0
  Parent ID: JZZT.SmL1g8qcFrC
  SysFS ID: /devices/pci0000:00/0000:00:08.1/0000:16:00.1
  SysFS BusID: 0000:16:00.1
  Hardware Class: sound
  Model: "ATI Audio device"
  Vendor: pci 0x1002 "ATI Technologies Inc"
  Device: pci 0x1640 
  SubVendor: pci 0x1462 "Micro-Star International Co., Ltd. [MSI]"
  SubDevice: pci 0x7d70 
  Driver: "snd_hda_intel"
  Driver Modules: "snd_hda_intel"
  Memory Range: 0xfcd88000-0xfcd8bfff (rw,non-prefetchable)
  IRQ: 170 (364 events)
  Module Alias: "pci:v00001002d00001640sv00001462sd00007D70bc04sc03i00"
  Driver Info #0:
    Driver Status: snd_hda_intel is active
    Driver Activation Cmd: "modprobe snd_hda_intel"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #33 (PCI bridge)

36: PCI 1600.6: 0403 Audio device
  [Created at pci.386]
  Unique ID: y523.uo8YgG6CAu7
  Parent ID: JZZT.SmL1g8qcFrC
  SysFS ID: /devices/pci0000:00/0000:00:08.1/0000:16:00.6
  SysFS BusID: 0000:16:00.6
  Hardware Class: sound
  Device Name: "Realtek ALC1220"
  Model: "AMD Family 17h (Models 10h-1fh) HD Audio Controller"
  Vendor: pci 0x1022 "AMD"
  Device: pci 0x15e3 "Family 17h (Models 10h-1fh) HD Audio Controller"
  SubVendor: pci 0x1462 "Micro-Star International Co., Ltd. [MSI]"
  SubDevice: pci 0xed70 
  Driver: "snd_hda_intel"
  Driver Modules: "snd_hda_intel"
  Memory Range: 0xfcd80000-0xfcd87fff (rw,non-prefetchable)
  IRQ: 171 (no events)
  Module Alias: "pci:v00001022d000015E3sv00001462sd0000ED70bc04sc03i00"
  Driver Info #0:
    Driver Status: snd_hda_intel is active
    Driver Activation Cmd: "modprobe snd_hda_intel"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #33 (PCI bridge)

47: PCI 100.1: 0403 Audio device
  [Created at pci.386]
  Unique ID: NXNs.Sz9Ktf69FqD
  Parent ID: mnDB.wP_JHy3VTe7
  SysFS ID: /devices/pci0000:00/0000:00:01.1/0000:01:00.1
  SysFS BusID: 0000:01:00.1
  Hardware Class: sound
  Model: "nVidia Audio device"
  Vendor: pci 0x10de "nVidia Corporation"
  Device: pci 0x22ba 
  SubVendor: pci 0x19da "ZOTAC International (MCO) Ltd."
  SubDevice: pci 0x1675 
  Revision: 0xa1
  Driver: "snd_hda_intel"
  Driver Modules: "snd_hda_intel"
  Memory Range: 0xfc080000-0xfc083fff (rw,non-prefetchable)
  IRQ: 168 (643 events)
  Module Alias: "pci:v000010DEd000022BAsv000019DAsd00001675bc04sc03i00"
  Driver Info #0:
    Driver Status: snd_hda_intel is active
    Driver Activation Cmd: "modprobe snd_hda_intel"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #43 (PCI bridge)

我尝试将模型设置dual-codecs模型列表,因为据说它是游戏主板的型号。但是,它不起作用。

双编解码器

适用于游戏主板的 ALC1220 双编解码器

答案1

最后,我终于搞明白了。对于未来的读者来说,首先,我需要为 pulseaudio 加载 alsa 模块。检查您的设备是否通过 列出pactl,这是针对源设备(例如麦克风)的,对于播放设备,请使用sinks而不是sources

$ pactl list short sources
1   alsa_output.usb-Generic_USB_Audio-00.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   IDLE
2   alsa_input.usb-Generic_USB_Audio-00.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
6   alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED

我的设备不在这里,正如我所提到的,它是名为“音频”的卡的第二个设备(我不使用卡索引,因为它可能会在重启时发生变化,我将会讲到这一点)。

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 3: Audio [USB Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 2: USB Audio [USB Audio #2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

现在,加载源的 alsa 模块,对我来说是卡 3 设备 2,通过

$ pacmd load-module module-alsa-source device=hw:3,2

现在,我们应该在 pactl 列表中看到该设备。

$ pactl list short sources
1   alsa_output.usb-Generic_USB_Audio-00.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   IDLE
2   alsa_input.usb-Generic_USB_Audio-00.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
4   alsa_input.hw_3_2   module-alsa-source.c    s16le 2ch 44100Hz   SUSPENDED
6   alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED

现在我们可以看到索引 4 上的设备,并验证当前的默认设备,set-default-(sink/source)如果它未设置为默认设备,则可以针对您的用例使用该命令。对我来说它是:

$ pactl get-default-source
alsa_input.hw_3_2

现在,到这里麦克风已经被系统识别了,但这还不够。还记得我告诉过你声卡索引可能会在重新启动之间发生变化吗?现在,我们需要修复该索引。打开/etc/modprobe.d/alsa-base.conf,并添加以下行。

笔记:这只是为了固定所需声卡的索引,对我来说有 4 张卡,索引从 0 到 3(0,1,2,3),对于您来说 3 可能不合适,您可以使用任何合适的索引号。

options snd-usb-audio index=3

完成了吗?没有。我们需要配置最后一件事。我不知道为什么,但我们需要将设备(对我来说是麦克风)的配置设置为 2 个通道。为此,我做了以下操作,打开/etc/asound.conf,并设置(或附加)以下内容。出于上述原因,我建议使用卡的名称(Audio)而不是其索引3。以下配置取自并改编自这个帖子

pcm.usb_mic_raw {
  type hw
  card Audio
  device 2
}

pcm.usb_mic_plug {
  type plug
  slave {
    pcm usb_mic_raw
    format S16_LE
    rate 48000
    channels 2
  }
}

# Don't use pcm.hdmi because it's taken by the default config files
pcm.speaker_raw {
  type hw
  card Audio
  device 0
}

pcm.speaker_plug {
  type plug
  slave {
    pcm speaker_raw
    format S16_LE
    rate 48000
    channels 2
  }
}

pcm.!default {
  type asym;
  playback.pcm "speaker_plug";
  capture.pcm "usb_mic_plug";
}

最后将源设备配置添加到/etc/pulse/default.pa启动时加载的 alsa 设备。

load-module module-alsa-source device=hw:3,2

更新:请注意,如果添加到脉冲配置的最后一个命令/etc/pulse/default.pa在重启时不起作用,您可能需要在重启后手动激活它。

如果有人能解释并澄清我无法成功的最后一个设置,我将不胜感激。为什么不在启动时添加线路工作?重启后,我仍然看到 3 个源(与开始时一样),我必须手动执行命令才能识别设备。虽然幸运的是这仍然有效,但如果在启动时自动检测到麦克风,那就太好了。

相关内容