起因:入了个usb耳机,然后插上电脑(archlinux)无效果。电脑自带扬声器和3.5mm耳机孔都是好好工作的,然而插了usb耳机后好像没插一样。

先看下lsusb排除下物理连接问题

yychi@~> lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 04f2:b5a3 Chicony Electronics Co., Ltd XiaoMi USB 2.0 Webcam
Bus 001 Device 003: ID 04f3:0c1a Elan Microelectronics Corp. ELAN:Fingerprint
Bus 001 Device 004: ID 8087:0a2b Intel Corp. Bluetooth wireless interface
Bus 001 Device 009: ID 0b0e:0313 GN Netcom Jabra EVOLVE 30 II # usb headphone
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

接着根据以前的经验,很快定位到了card-profile的问题。是不是情景模式不对呢?最后发现和上次不一样,上次普通耳机和外置扬声器用的一张声卡。这次usb耳机用的自带声卡,所以需要切换成自带声卡,且调对情景模式。

现在用pipewire替代pulse-audio,其对应的配置命令行为pactl

yychi@~> pactl list cards short
45	alsa_card.pci-0000_00_1f.3	alsa # 自带声卡
576	alsa_card.usb-GN_Audio_A_S_Jabra_EVOLVE_30_II_0005EDED3F4A09-00	alsa # usb耳机声卡
 
pactl set-card-profile alsa_card.usb-GN_Audio_A_S_Jabra_EVOLVE_30_II_0005EDED3F4A09-00 pro-audio  # 设置正确的情景模式
# 切换声卡,即设置默认输入输出
pactl set-default-sink alsa_output.usb-GN_Audio_A_S_Jabra_EVOLVE_30_II_0005EDED3F4A09-00.pro-output-0 # 设置默认输出
pactl set-default-source alsa_input.usb-GN_Audio_A_S_Jabra_EVOLVE_30_II_0005EDED3F4A09-00.pro-input-0 # 设置默认输入

一番折腾,最终成功让usb耳机出声。

命令含义
pactl list cards [short]列出可用声卡
pactl get-default-sink/source获取默认输出/输入
pactl set-card-profile <card-name/index> <card-profile>给指定声卡设置情景模式