web-dev-qa-db-ja.com

alsamixer USBヘッドフォン/ MICコンボはマイクを制御できません

私はインターネットを精査することができたすべてを試みました、そして途方に暮れています。 HyperX Cloud Flight Sヘッドフォンではマイクを使用できませんが、以前の非Sリビジョンは完全に機能します。関連する出力は次のとおりです。

uname -a
Linux laptop 5.3.0-42-generic #34-Ubuntu SMP Fri Feb 28 05:49:40 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
amixer -c1 contents
numid=4,iface=CARD,name='Keep Interface'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=2,iface=MIXER,name='PCM Playback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=7,iface=MIXER,name='PCM Playback Switch',index=1
  ; type=BOOLEAN,access=rw------,values=1
amixer: Control hw:1 element read error: Invalid argument

numid=3,iface=MIXER,name='PCM Playback Volume'
  ; type=INTEGER,access=rw---R--,values=8,min=0,max=74,step=0
  : values=54,54,54,54,54,54,54,54
  | dBminmax-min=-74.00dB,max=0.00dB
numid=8,iface=MIXER,name='PCM Playback Volume',index=1
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=1,step=0
amixer: Control hw:1 element read error: Invalid argument

numid=9,iface=MIXER,name='Mic Capture Switch'
  ; type=BOOLEAN,access=rw------,values=1
amixer: Control hw:1 element read error: Invalid argument

numid=10,iface=MIXER,name='Mic Capture Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=1,step=0
amixer: Control hw:1 element read error: Invalid argument

numid=5,iface=PCM,name='Capture Channel Map'
  ; type=INTEGER,access=r----R--,values=1,min=0,max=36,step=0
  : values=0
  | container
    | chmap-fixed=MONO

numid=1,iface=PCM,name='Playback Channel Map'
  ; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
  : values=3,4
  | container
    | chmap-fixed=FL,FR
    | chmap-fixed=FL,FR,FC,LFE,SL,SR,SL,SR

numid=6,iface=PCM,name='Playback Channel Map',device=1
  ; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
  : values=0,0
  | container
    | chmap-fixed=FL,FR
lsusb
Bus 001 Device 003: ID 0951:16ea Kingston Technology HyperX Cloud Flight S
cat /proc/asound/cards
1 [S              ]: USB-Audio - HyperX Cloud Flight S
                      Kingston HyperX Cloud Flight S at usb-0000:00:14.0-2, full speed
arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: S [HyperX Cloud Flight S], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
1
DirtyCajunRice

5.7rc3の kernel update は、この問題(このヘッドセット専用)のパッチを導入しました。パッチが適用されると、dmesg出力は次のような行になるはずです。

[    6.804026] kernel: usb 1-1: Found post-registration device assignment: 095116ea:02

Alsa構成ドキュメントには次のように記載されています。

Module snd-usb-audio
--------------------
...
delayed_register
    The option is needed for devices that have multiple streams
    defined in multiple USB interfaces.  The driver may invoke
    registrations multiple times (once per interface) and this may
    lead to the insufficient device enumeration.
    This option receives an array of strings, and you can pass
    ID:INTERFACE like ``0123abcd:4`` for performing the delayed
    registration to the given device.  In this example, when a USB
    device 0123:abcd is probed, the driver waits the registration
    until the USB interface 4 gets probed.
    The driver prints a message like "Found post-registration device
    assignment: 1234abcd:04" for such a device, so that user can
    notice the need.

したがって、dmesgから取得した上記の情報と、構成ドキュメントから必要なフィールドを取得して、これをalsa-base.confの最後に追加します

# Add delayed register for HyperX Cloud Flight S Headset
options snd-usb-audio delayed_register=095116ea:02

その後、再起動すると、期待どおりにヘッドセットとプロファイルが表示されます。

補足として、snd-usb-audioモジュールには別のオプションがあります。

quirk_alias
    Quirk alias list, pass strings like ``0123abcd:5678beef``, which
    applies the existing quirk for the device 5678:beef to a new
    device 0123:abcd.

これにより、カーネル5.4によって「Kingston HyperX AMP」用にすでに作成されている癖をコピーしてこのヘッドセットに適用できること、そして遅延レジスターを追加することで5.7より前に機能すると信じていました。私はすでに弾丸を噛んでカーネルをアップグレードしたので、戻ってチェックするつもりはありません。誰かがその仕事をしているなら、私に知らせて、ここの投稿を病気にしてください。次のように簡単です。

options snd-usb-audio quirk_alias=095116ea:095116d8 delayed_register=095116ea:02

お知らせ下さい!

1
DirtyCajunRice