PulseAudioソースポートの変更:「availability = no」と優先順位

PulseAudioソースポートの変更:「availability = no」と優先順位

私はThinkpad T450sを使用していますが、これには3つの「実際の」マイク入力があります。ドッキングポート「ライン入力」。 PulseAudioは、3つのポートすべてを単一のALSAソースに属するものとしてマークします(以下の「pacmd list-sources」出力を参照)。

  * index: 2
    name: <alsa_input.pci-0000_00_1b.0.analog-stereo>
    driver: <module-alsa-card.c>
    flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: SUSPENDED
    suspend cause: IDLE 
    priority: 9959
    volume: front-left: 23093 /  35% / -27.18 dB,   front-right: 23093 /  35% / -27.18 dB
            balance 0.00
    base volume: 13076 /  20% / -42.00 dB
    volume steps: 65537
    muted: no
    current latency: 0.00 ms
    max rewind: 0 KiB
    sample spec: s16le 2ch 44100Hz
    channel map: front-left,front-right
                 Stereo
    used by: 0
    linked by: 0
    configured latency: 0.00 ms; range is 0.50 .. 371.52 ms
    card: 1 <alsa_card.pci-0000_00_1b.0>
    module: 7
    properties:
        alsa.resolution_bits = "16"
        device.api = "alsa"
        device.class = "sound"
        alsa.class = "generic"
        alsa.subclass = "generic-mix"
        alsa.name = "ALC3232 Analog"
        alsa.id = "ALC3232 Analog"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        alsa.device = "0"
        alsa.card = "1"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xe1234000 irq 47"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1b.0"
        sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "9ca0"
        device.product.name = "Wildcat Point-LP High Definition Audio Controller"
        device.form_factor = "internal"
        device.string = "front:1"
        device.buffering.buffer_size = "65536"
        device.buffering.fragment_size = "32768"
        device.access_mode = "mmap+timer"
        device.profile.name = "analog-stereo"
        device.profile.description = "Analog Stereo"
        device.description = "Built-in Audio Analog Stereo"
        alsa.mixer_name = "Realtek ALC3232"
        alsa.components = "HDA:10ec0292,17aa5036,00100001"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    ports:
        analog-input-internal-mic: Internal Microphone (priority 8900, latency offset 0 usec, available: unknown)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-dock-mic: Dock Microphone (priority 7800, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
    active port: <analog-input-internal-mic>

現在の動作は、両方のライン入力が接続されていない場合(ヘッドフォン/マイクジャックが空でノートブックが接続されていない)、内部マイクアレイがアクティブになることです(上記のpacmd出力に示すように)。ただし、スマートフォン用に設計された4極イヤホンセットを接続する場合など、ライン入力がヘッドフォン/マイクジャックを介して接続されると、ALSAソースはそのポートをライン入力ポートである「アナログ入力マイク」に切り替えます。内部マイクアレイポート「アナログ入力内部マイク」の可用性が「いいえ」と表示されます。下記をご覧ください。

...
    ports:
        analog-input-internal-mic: Internal Microphone (priority 8900, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-dock-mic: Dock Microphone (priority 7800, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: yes)
            properties:
                device.icon_name = "audio-input-microphone"
    active port: <analog-input-mic>

内部マイクの配列が私が持っているマイクよりも音質が良いので、何があっても内部のマイクの配列が優先順位になるようにこの動作を変更したいと思います。これには2つの問題があります。

  1. 内部マイクポートの可用性が「no」に変更され、ポートを手動で変更した場合(「pacmd set-source-port 2 Analog-input-internal-mic」)、実際のサウンド入力はありません。

  2. 内部マイクポートは、他の2つのポートよりも優先順位が低いようです。つまり、ユーザビリティの問題を解決しても、ジャックを介してマイクを接続するたびに、pavucontrolまたはpacmdを介して手動で設定する必要があります。

Windowsで必要に応じて正確に動作を設定したので、これがソフトウェア/ファームウェアの問題であると確信しています。

これらの問題を解決する方法はありますか?これは、低レベルのALSAドライバの問題(使いやすさ)と99.99%のユーザーが絶対に触れない問題(ポート優先順位)に見えるため、解決策を見つけるための最後の努力です。すべての入力を高く評価します。デフォルトでは、私が見つけることができる "pacmd set-sink-port/set-source-port"以外のPulseAudioポートに関するドキュメントはありません。

  • システム: Thinkpad T450s
  • ディストリビューション:Debianテスト(拡張)

ベストアンサー1

アナログ入力ヘッドセットマイクを「無効/いいえ」に設定する必要がありましたが、この記事が見つかりました。https://bugs.freedesktop.org/show_bug.cgi?id=101798

[General] priority = 88 /usr/share/pulseaudio/alsa-mixer/paths/nalog-input-headphone-mic.conf ファイルの優先順位変更ブロックで、

そしてブロックに

[Jack Headphone Mic] required-any = any state.plugged =unknown

「不明」を「いいえ」に変更します。 「アナログ入力ヘッドセットマイク」が「いいえ」です。

 ports:
            analog-input-internal-mic: Internal Microphone (priority 8900, latency offset 0 usec, available: yes)
                    properties:
                            device.icon_name = "audio-input-microphone"
            analog-input-headphone-mic: Microphone (priority 8700, latency offset 0 usec, available: no)
                    properties:
                            device.icon_name = "audio-input-microphone"
            analog-input-headset-mic: Headset Microphone (priority 8800, latency offset 0 usec, available: yes)
                    properties:
                            device.icon_name = "audio-input-microphone"
    active port: <analog-input-internal-mic>

おすすめ記事