我最近在一台新电脑上设置了双启动。我没有使用笔记本电脑(我提到这一点是因为我在联想笔记本电脑上经常遇到这个问题,但到目前为止这些解决方案对我来说都不起作用)。我查看并尝试了许多解决方案,但不幸的是到目前为止它们都没有起作用。顺便说一句,我认为这并不相关,但 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 双编解码器
- 无法启动:snd_hda_intel 未找到编解码器!问题出在 Nvidia 驱动程序和 HDMI 声音驱动程序上,我的问题出在 MOBO USB 音频驱动程序上,尽管我几乎拥有与 OP 相同的硬件(相同的 MOBO、CPU(7950x)和 GPU RTX 4090)。
- Ubuntu / 没有声音 / 看到声卡但没有编解码器 / (proc/asound/card0 为空)OP 的输出设备有问题,而我输入设备有问题。
- 如何检测 Sennheiser HD 450BT 耳机的 ALC1220(华硕 x570-i 主板)的耳机声音输出和麦克风输入?OP 尝试过使用或不使用分离器,但
dual-codecs
与我的情况类似,都没有成功。
答案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 个源(与开始时一样),我必须手动执行命令才能识别设备。虽然幸运的是这仍然有效,但如果在启动时自动检测到麦克风,那就太好了。