您尚未登录。

#1 2023-02-08 19:14:36

frshuov
会员
注册时间: 2022-12-31
帖子: 4

[已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

使用的桌面环境是plasma,设备是rog幻16,声卡芯片在alsamixer里写的是alc285
刚装好的时候是自动安装的pulseaudio,发现这个问题之后我试着去换成了pipewire,问题依旧。
现在试图在pipewire下解决这个问题,但是完全搜索不到类似的关键词。

开着alsamixer调节音量,观察到pipewire调节音量会把声卡上的speaker和PCM这两个值暴力拉满,然后调节Master这个值。
然后听上去的效果就是降低音量只会使扬声器上的声音变糊,音量还是震耳欲聋。
如果连接耳机的话不会糊,但是也是震耳欲聋。

现在权宜之计是完全不理其他音量调节方式,手动进alsamixer选择声卡,把master和speaker音量拉到高位不动,只调节PCM。
所以我在想是否有方法让pipewire音量调节的默认行为变成调pcm而不是master。
翻了很多wiki完全翻不到相关内容,也许是我姿势不对。

求各位前辈指教。

最近编辑记录 frshuov (2023-02-10 18:31:21)

离线

#2 2023-02-10 09:23:46

edward-p
会员
所在地: 成都
注册时间: 2019-03-12
帖子: 33
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

这个音量调节行为在绝大部分机器上都没有出现你说的声音变糊的问题,我认为你这个问题应该尝试从声卡驱动那边解决。

尝试通过 内核模块参数,来告诉声卡驱动使用特定的修复方案。
比如:

model=alc285-speaker2-to-dac1

已经包含的修复方案可以阅读内核代码: https://github.com/torvalds/linux/blob/ … ek.c#L9790

最近编辑记录 edward-p (2023-02-10 10:12:39)


Fake developer; true geek.
Matrix: @edward_p:mozilla.org
Telegram: @Edward_P

离线

#3 2023-02-10 18:31:00

frshuov
会员
注册时间: 2022-12-31
帖子: 4

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

edward-p 说:

这个音量调节行为在绝大部分机器上都没有出现你说的声音变糊的问题,我认为你这个问题应该尝试从声卡驱动那边解决。

尝试通过 内核模块参数,来告诉声卡驱动使用特定的修复方案。
比如:

model=alc285-speaker2-to-dac1

已经包含的修复方案可以阅读内核代码: https://github.com/torvalds/linux/blob/ … ek.c#L9790

谢谢!方法很管用。通过将model设为alc285-speaker2-to-dac1,或是alc285-hp-spectre-x360,或是alc285-hp-spectre-x360-eb1都可以解决这个问题。

巧合的是,我曾经试图通过wiki中alsa词条的“正确检测插入四极3.5毫米(TRRS)插孔的麦克风”章节来尝试解决我通过3.5毫米耳机插孔插入的耳机麦克风不工作的问题。但是,我在wiki中提到的kernel.org上的相关文档并没有找到任何和alc285相关的model。随后我放弃了解决问题并删除了我对模块参数的更改。当时我完全没有把我的声音问题和这个解决方案联系起来。

现在我成功的用此方法修复了我的声音问题。事实上我的麦克风问题仍然存在。但我目前不打算解决它,因为我完全可以使用我的蓝牙耳机上的麦克风,也是因为我目前毫无头绪。

再次感谢!

离线

#4 2023-02-12 23:43:04

edward-p
会员
所在地: 成都
注册时间: 2019-03-12
帖子: 33
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

frshuov 说:
edward-p 说:

这个音量调节行为在绝大部分机器上都没有出现你说的声音变糊的问题,我认为你这个问题应该尝试从声卡驱动那边解决。

尝试通过 内核模块参数,来告诉声卡驱动使用特定的修复方案。
比如:

model=alc285-speaker2-to-dac1

已经包含的修复方案可以阅读内核代码: https://github.com/torvalds/linux/blob/ … ek.c#L9790

谢谢!方法很管用。通过将model设为alc285-speaker2-to-dac1,或是alc285-hp-spectre-x360,或是alc285-hp-spectre-x360-eb1都可以解决这个问题。

巧合的是,我曾经试图通过wiki中alsa词条的“正确检测插入四极3.5毫米(TRRS)插孔的麦克风”章节来尝试解决我通过3.5毫米耳机插孔插入的耳机麦克风不工作的问题。但是,我在wiki中提到的kernel.org上的相关文档并没有找到任何和alc285相关的model。随后我放弃了解决问题并删除了我对模块参数的更改。当时我完全没有把我的声音问题和这个解决方案联系起来。

现在我成功的用此方法修复了我的声音问题。事实上我的麦克风问题仍然存在。但我目前不打算解决它,因为我完全可以使用我的蓝牙耳机上的麦克风,也是因为我目前毫无头绪。

再次感谢!

我最近解决过一个 TRRS 的问题,写了一篇博客,可以参考我的思路 https://blog.edward-p.xyz/posts/2023/01 … xperience/
也提到了如何向内核提交补丁,如果你知道了你机型需要的特定修复方案,可以向内核提交补丁,以帮助和你使用同一机型的机友。


Fake developer; true geek.
Matrix: @edward_p:mozilla.org
Telegram: @Edward_P

离线

#5 2023-02-24 17:23:23

frshuov
会员
注册时间: 2022-12-31
帖子: 4

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

更新,之前尝试的model有误。将model设为1043:1b11可以同时解决ROG幻16的声音调整和麦克风不工作问题。

离线

#6 2023-02-24 17:48:35

edward-p
会员
所在地: 成都
注册时间: 2019-03-12
帖子: 33
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

frshuov 说:

更新,之前尝试的model有误。将model设为1043:1b11可以同时解决ROG幻16的声音调整和麦克风不工作问题。

看看你机器的 subsystem_id 是多少

cat /sys/class/sound/hwC0D0/subsystem_id

Fake developer; true geek.
Matrix: @edward_p:mozilla.org
Telegram: @Edward_P

离线

#7 2023-02-24 17:56:36

edward-p
会员
所在地: 成都
注册时间: 2019-03-12
帖子: 33
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

可以在这一行 https://github.com/torvalds/linux/blob/ … ek.c#L9392

下面加入一行

SND_PCI_QUIRK(0x1043, 0x<你的subsystem_id 后4位>, "ASUS <你的机型名称>", ALC294_FIXUP_ASUS_COEF_1B),

然后给内核提个补丁(成为内核贡献者),这样同样的机型就不用加 model 参数了,内核会根据subsystem_id自动识别特定机型需要的fix

最近编辑记录 edward-p (2023-02-24 18:07:37)


Fake developer; true geek.
Matrix: @edward_p:mozilla.org
Telegram: @Edward_P

离线

#8 2023-04-04 20:45:33

framist
会员
注册时间: 2023-04-04
帖子: 4
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

我也遇到了和楼主相似的问题(rog幻16 2023,输出声音无低频,估计是低音喇叭未启用;此外麦克风全是噪音),
我的电脑型号是 `ROG Zephyrus G16 GU603VV` , subsystem_id 是 0x10431483,声卡是`Realtek ALC285`,在 `sound/pci/hda/patch_realtek.c` 中同样也没找到对应的型号。

(del)

但测试了很多内核模块参数都不行,估计也得手动做补丁了 _(:з」∠)_

alsa-info

最近编辑记录 framist (2023-04-06 22:07:47)

离线

#9 2023-04-10 10:21:28

edward-p
会员
所在地: 成都
注册时间: 2019-03-12
帖子: 33
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

framist 说:

我也遇到了和楼主相似的问题(rog幻16 2023,输出声音无低频,估计是低音喇叭未启用;此外麦克风全是噪音),
我的电脑型号是 `ROG Zephyrus G16 GU603VV` , subsystem_id 是 0x10431483,声卡是`Realtek ALC285`,在 `sound/pci/hda/patch_realtek.c` 中同样也没找到对应的型号。

(del)

但测试了很多内核模块参数都不行,估计也得手动做补丁了 _(:з」∠)_

alsa-info

model=1043:1b11 不行么


Fake developer; true geek.
Matrix: @edward_p:mozilla.org
Telegram: @Edward_P

离线

#10 2023-04-10 10:29:24

edward-p
会员
所在地: 成都
注册时间: 2019-03-12
帖子: 33
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

framist 说:

我也遇到了和楼主相似的问题(rog幻16 2023,输出声音无低频,估计是低音喇叭未启用;此外麦克风全是噪音),
我的电脑型号是 `ROG Zephyrus G16 GU603VV` , subsystem_id 是 0x10431483,声卡是`Realtek ALC285`,在 `sound/pci/hda/patch_realtek.c` 中同样也没找到对应的型号。

(del)

但测试了很多内核模块参数都不行,估计也得手动做补丁了 _(:з」∠)_

alsa-info

截取alsa-info的时候先不要带model参数

1WYK.png


Fake developer; true geek.
Matrix: @edward_p:mozilla.org
Telegram: @Edward_P

离线

#11 2023-04-12 00:59:39

framist
会员
注册时间: 2023-04-04
帖子: 4
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

edward-p 说:
framist 说:

我也遇到了和楼主相似的问题(rog幻16 2023,输出声音无低频,估计是低音喇叭未启用;此外麦克风全是噪音),
我的电脑型号是 `ROG Zephyrus G16 GU603VV` , subsystem_id 是 0x10431483,声卡是`Realtek ALC285`,在 `sound/pci/hda/patch_realtek.c` 中同样也没找到对应的型号。

(del)

但测试了很多内核模块参数都不行,估计也得手动做补丁了 _(:з」∠)_

alsa-info

model=1043:1b11 不行么

不行。。。另外我还试过 alc289_fixup_asus_ga401、alc285-hp-spectre-x360-eb1、alc285-hp-spectre-x360、alc285-speaker2-to-dac1、17aa:22c2、1043:1b11、1043:16b2、1043:1c92、1043:1e51、1043:1e11 等,也都不行。应该是因为我相较楼主的电脑型号更新,他的方法并不适用我的。

这是一个干净的 alsa-info

Ps. 联系华硕支持只会不出所料地让我装 Windows 系统 _(:зゝ∠)_

离线

#12 2023-04-14 11:18:41

edward-p
会员
所在地: 成都
注册时间: 2019-03-12
帖子: 33
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

framist 说:
edward-p 说:
framist 说:

我也遇到了和楼主相似的问题(rog幻16 2023,输出声音无低频,估计是低音喇叭未启用;此外麦克风全是噪音),
我的电脑型号是 `ROG Zephyrus G16 GU603VV` , subsystem_id 是 0x10431483,声卡是`Realtek ALC285`,在 `sound/pci/hda/patch_realtek.c` 中同样也没找到对应的型号。

(del)

但测试了很多内核模块参数都不行,估计也得手动做补丁了 _(:з」∠)_

alsa-info

model=1043:1b11 不行么

不行。。。另外我还试过 alc289_fixup_asus_ga401、alc285-hp-spectre-x360-eb1、alc285-hp-spectre-x360、alc285-speaker2-to-dac1、17aa:22c2、1043:1b11、1043:16b2、1043:1c92、1043:1e51、1043:1e11 等,也都不行。应该是因为我相较楼主的电脑型号更新,他的方法并不适用我的。

这是一个干净的 alsa-info

Ps. 联系华硕支持只会不出所料地让我装 Windows 系统 _(:зゝ∠)_

这就不太好弄了,你试试在使用 alc289_fixup_asus_ga401 的情况下用 alsamixer 手动调音量看看呢

archwiki上的说 pulseaudio 或 pipewire的 alsa-profile好像有点问题 https://wiki.archlinux.org/title/ASUS_R … adjustment

至于为什么我认为你需要用 alc289_fixup_asua_ga401 , 是因为我看到你的 codec 里面

Node 0x17 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Control: name="Bass Speaker Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x0000001c: OUT HP Detect
  Pin Default 0x90170120: [Fixed] Speaker at Int N/A
    Conn = Analog, Color = Unknown
    DefAssociation = 0x2, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x40: OUT
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 3
     0x02 0x03 0x06*

低音喇叭确实是在 NID 0x17 并且连接到 DAC 0x06 (带星号),而这个fix:

/* avoid DAC 0x06 for bass speaker 0x17; it has no volume control */
static void alc289_fixup_asus_ga401(struct hda_codec *codec,
				    const struct hda_fixup *fix, int action)
{
	static const hda_nid_t preferred_pairs[] = {
		0x14, 0x02, 0x17, 0x02, 0x21, 0x03, 0
	};
	struct alc_spec *spec = codec->spec;

	if (action == HDA_FIXUP_ACT_PRE_PROBE) {
		spec->gen.preferred_dacs = preferred_pairs;
		spec->gen.obey_preferred_dacs = 1;
	}
}

最近编辑记录 edward-p (2023-04-14 11:22:04)


Fake developer; true geek.
Matrix: @edward_p:mozilla.org
Telegram: @Edward_P

离线

#13 2023-04-15 15:29:03

framist
会员
注册时间: 2023-04-04
帖子: 4
个人网站

Re: [已解决]求助,pulse和pipewire的音量调节只能让声音变糊而不是变小

edward-p 说:
framist 说:
edward-p 说:
framist 说:

我也遇到了和楼主相似的问题(rog幻16 2023,输出声音无低频,估计是低音喇叭未启用;此外麦克风全是噪音),
我的电脑型号是 `ROG Zephyrus G16 GU603VV` , subsystem_id 是 0x10431483,声卡是`Realtek ALC285`,在 `sound/pci/hda/patch_realtek.c` 中同样也没找到对应的型号。

(del)

但测试了很多内核模块参数都不行,估计也得手动做补丁了 _(:з」∠)_

alsa-info

model=1043:1b11 不行么

不行。。。另外我还试过 alc289_fixup_asus_ga401、alc285-hp-spectre-x360-eb1、alc285-hp-spectre-x360、alc285-speaker2-to-dac1、17aa:22c2、1043:1b11、1043:16b2、1043:1c92、1043:1e51、1043:1e11 等,也都不行。应该是因为我相较楼主的电脑型号更新,他的方法并不适用我的。

这是一个干净的 alsa-info

Ps. 联系华硕支持只会不出所料地让我装 Windows 系统 _(:зゝ∠)_

这就不太好弄了,你试试在使用 alc289_fixup_asus_ga401 的情况下用 alsamixer 手动调音量看看呢

archwiki上的说 pulseaudio 或 pipewire的 alsa-profile好像有点问题 https://wiki.archlinux.org/title/ASUS_R … adjustment

至于为什么我认为你需要用 alc289_fixup_asua_ga401 , 是因为我看到你的 codec 里面

Node 0x17 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Control: name="Bass Speaker Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x0000001c: OUT HP Detect
  Pin Default 0x90170120: [Fixed] Speaker at Int N/A
    Conn = Analog, Color = Unknown
    DefAssociation = 0x2, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x40: OUT
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 3
     0x02 0x03 0x06*

低音喇叭确实是在 NID 0x17 并且连接到 DAC 0x06 (带星号),而这个fix:

/* avoid DAC 0x06 for bass speaker 0x17; it has no volume control */
static void alc289_fixup_asus_ga401(struct hda_codec *codec,
				    const struct hda_fixup *fix, int action)
{
	static const hda_nid_t preferred_pairs[] = {
		0x14, 0x02, 0x17, 0x02, 0x21, 0x03, 0
	};
	struct alc_spec *spec = codec->spec;

	if (action == HDA_FIXUP_ACT_PRE_PROBE) {
		spec->gen.preferred_dacs = preferred_pairs;
		spec->gen.obey_preferred_dacs = 1;
	}
}

使用了 https://wiki.archlinux.org/title/ASUS_R … adjustment这个 patch 后可以在 alsamixer 中分开调节前扬声器(Master Front)和后扬声器(Master Rear)的音量了,但对后扬声器(应该也就是 Bass speaker)的调节是没有作用的,还是始终没有声音,无论是否启用 alc289_fixup_asus_ga401 等 model。

对于 Bass speaker, alsamixer 里有一个调节是否静音的选项,但是没有效果。

特别地,启用 model=alc285-speaker2-to-dac1 后就只能启用 4.0 输出,但是只有后声道有声音(还是输出到前前扬声器了),而且还是没有低音。

关于麦克风的问题倒是解决了,alsamixer 里将增益调小就行了。(虽然噪音还是很有,但是至少可以用了)

离线

页脚