Alterando a porta de origem do PulseAudio: 'availability = no' e prioridade

2

Eu tenho um Thinkpad T450s, que vem com três entradas de microfone 'reais': um microfone interno (microfones físicos estão no painel LCD ao lado da webcam), um 'line in' através de um fone de ouvido / microfone combinado de 4 polos jack, e um 'line in' através da porta docking. O PulseAudio mostra todos os três como portas pertencentes a uma única fonte ALSA (consulte a saída 'pacmd list-sources' abaixo).

  * 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>

O comportamento atual é que quando nenhum dos line-ins está conectado (o fone de ouvido / microfone está vazio, o laptop está desconectado), o microfone interno está ativo (como visto acima na saída do pacmd). No entanto, quando uma entrada de linha é conectada via fone de ouvido / microfone, como quando um conjunto de fones de ouvido de quatro polos está conectado, a fonte ALSA alterna as portas para a porta de entrada de linha 'mic de entrada analógica. '. A disponibilidade da porta de matriz de microfone interna 'analog-input-internal-mic' agora aparece como 'no'. Veja abaixo.

...
    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>

Eu gostaria de mudar o comportamento de modo que, não importa o que, o microfone interno tenha precedência, já que a qualidade de som do microfone interno é superior aos microfones que tenho. Isso tem dois problemas:

  1. A disponibilidade da porta do mic interno muda para 'no', de modo que, se eu alterar manualmente a porta ('pacmd set-source-port 2 entrada analógica-mic interna'), não haverá entrada de som real

  2. A prioridade da porta do microfone interno é aparentemente menor do que as outras portas, o que significa que mesmo se eu tivesse problemas com a disponibilidade, teria que configurá-la manualmente via pavucontrol ou pacmd toda vez que eu conectasse um microfone através do jack

Tenho certeza de que esse é um problema de software / firmware, porque tenho o comportamento definido exatamente como desejado no Windows.

Existe alguma maneira de contornar esses problemas? Esse é um esforço de última hora para encontrar uma solução, pois parece que esse é um problema de driver ALSA de baixo nível (disponibilidade), bem como algo que 99,99% dos usuários nunca tocariam (prioridade de porta). Qualquer entrada é apreciada, essencialmente não há documentação relativa às portas PulseAudio diferentes de 'pacmd set-sink-port / set-source-port' que eu encontrei.

  • Sistema: Thinkpad T450s
  • Distro: teste Debian (extensão)
por FredFS456 23.08.2016 / 09:11

0 respostas