GSP670 耳机缺少 PulseAudio 接收器

GSP670 耳机缺少 PulseAudio 接收器

我刚买了一款 Sennheiser GSP 670 游戏耳机,但在 PulseAudio 正确检测该设备时遇到了一些问题。

该耳机是无线的,并配有加密狗。

这款耳机有一个主立体声输出,用于游戏和音乐。除此之外,还有一个专用于通信的单声道输入和输出。

本质上,ALSA 注册了两个音频设备(Windows 上也是如此),一个可用于立体声播放,另一个可同时用于单声道播放和捕获。

加密狗注册如下

hw:S60,0
hw:S60,1

当耳机通过 USB 插入时,其注册方式如下

hw:G670,0
hw:G670,1

我可以毫无困难地使用带有 ALSA 的设备,但是 PulseAudio 仅检测到第一个用于通信的设备,而无法检测到另一个设备。

我现在解决这个问题的方法是告诉 PulseAudio 忽略该设备并手动创建接收器。

以下是我如何使用 udev 规则让 PulseAudio 忽略设备:

ATTRS{idVendor}=="1395", ATTRS{idProduct}=="0089", ENV{PULSE_IGNORE}="1"

这是我用来创建接收器和源的脚本:

#!/usr/bin/sh

pacmd load-module module-alsa-sink device=hw:S70,0 name=gsa70_comm_output
pacmd 'update-sink-proplist alsa_output.gsa70_comm_output device.description="GSA70 Communication" '

pacmd load-module module-alsa-sink device=hw:S70,1 name=gsa70_main
pacmd 'update-sink-proplist alsa_output.gsa70_main device.description="GSA70 Main" '

pacmd load-module module-alsa-source device=hw:S70,0 name=gsa70_comm_input
pacmd 'update-source-proplist alsa_input.gsa70_comm_input device.description="GSA70 Communication" '

到目前为止,这种方法是可行的,但效果并不理想。这种方法不是即插即用的,也就是说,即使断开了加密狗,接收器仍然还在。

我可以使用 udev 在加密狗连接时运行该脚本,然后在加密狗断开连接时运行清理脚本,但我想知道是否有更好的方法来做到这一点。

相关内容