Fones de ouvido com entrada combinada: força o microfone interno para entrada e fones de ouvido para saída

4

Os sistemas Linux têm tido um problema histórico (> 5 anos) na configuração de dispositivos de áudio, especialmente fones de ouvido comuns com tomadas de combinação. Como muitas pessoas querem usar seus sistemas linux favoritos para bate-papo com vídeo, há registros de problemas frustrantes não resolvidos em vários fóruns.

Eu entendo que os drivers para o microfone externo (em fones de ouvido com combo jacks) não estão atualmente disponíveis (ou não desenvolvidos (?)).

Assim, o usuário deve poder usar o microfone interno para entrada e fone de ouvido para saída.

Ao longo desta linha eu fui para baixo do buraco do coelho (desenterrado até 5-6 anos de idade) e tentei muitas coisas só para não ter sucesso no final (estou usando fones de ouvido comuns combo jack e hp laptop rodando ubuntu 16.04 ).

Muitas pessoas relataram esse problema de várias maneiras. Aqui está o que comumente acontece ..

Quando o fone de ouvido não está conectado,

Microfone e alto-falantes internos funcionam bem.

O PulseAudio mostra:

pacmdlist-cardsmostra:

ports:analog-input-internal-mic:InternalMicrophone(priority8900,latencyoffset0usec,available:unknown)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"
    analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
        properties:
            device.icon_name = "audio-speakers"
    analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: no)
        properties:
            device.icon_name = "audio-headphones"

Quando o fone de ouvido está conectado,

A saída pelos fones de ouvido funciona bem. Mas o microfone externo (localizado no fone de ouvido) não funciona (ruído intermitente, os drivers não estão presentes, tudo bem), mas o microfone interno também está "desconectado". (Portanto, não há como gravar nenhum som).

O PulseAudio mostra:

pacmdlist-cardsmostra:

ports:analog-input-internal-mic:InternalMicrophone(priority8900,latencyoffset0usec,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"
    analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: no)
        properties:
            device.icon_name = "audio-speakers"
    analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: yes)
        properties:
            device.icon_name = "audio-headphones"

Então, os fones de ouvido fornecem a saída, isso é ótimo, mas existe alguma maneira de forçar a entrada do microfone interno? (de alguma forma, fazer available: yes )

    
por rraadd88 22.07.2017 / 09:56

2 respostas

0

Depois de muitas tentativas e testes, descobri que esse problema pode ser resolvido por meio de hardware, e não de software. Usando um 'USB Headphone / Microphone Splitter', consegui forçar o microfone interno para entrada e os fones de ouvido para saída.

A saída precisa ser definida como 'USB Audio Device'. Aentradaseriaumalto-falanteinternointernopadrão.SóprecisatercertezadequeestáON. Eletambémfuncionacomoskype.Sóprecisadefiniraentradaesaídaparaopadrãoedesligarosajustesautomáticosdomicrofone.

    
por 26.01.2018 / 10:47
5

O Linux não tem um "problema histórico na configuração de dispositivos de áudio". O problema, na verdade, são os fabricantes de dispositivos, principalmente laptops, que acabam de enviar o laptop com drivers pré-instalados do Windows que podem ser configurados para lidar com o hardware do laptop, porque o fabricante sabe exatamente como o hardware é configurado. Por outro lado, o fabricante não quer compartilhar os detalhes, não os documenta e os mantém em segredo; afinal, eles forneceram o driver do Windows. É por isso que muitas vezes todos os recursos não-padrão de laptops têm que ser descobertos através de engenharia reversa dolorosa e demorada para poder usá-los no Linux.

Com relação ao áudio, basicamente todos os dispositivos modernos usam a arquitetura Intel HDA, que é autodescritiva e fornece uma representação gráfica do codec (o chip de áudio analógico). Em princípio, supõe-se que o BIOS forneça a "configuração de pinos", ou seja, qual pino do chip do codec está conectado a microfones e alto-falantes internos, aos conectores de entrada de linha, saída de linha e fone de ouvido ou fone de ouvido.

No entanto, especialmente nos últimos anos, os fabricantes não acharam necessário configurar corretamente o BIOS (afinal, eles já forneciam o driver do Windows). Então o ciclo é: Novo modelo de laptop sai, alguém com o hardware real e compreensão técnica suficiente descobre como o BIOS está mentindo e como a configuração deve realmente parecer, os desenvolvedores do kernel adicionam uma peculiaridade (tratamento especial desse hardware) em os drivers para lidar com isso, com o driver mais recente, as outras pessoas que usam o mesmo hardware não percebem e estão felizes. Até o próximo modelo sair e o ciclo começar de novo. Enquanto isso, muitos usuários infelizes, onde não funcionam, deixam seus rastros por toda a Internet, perguntando em fóruns por toda parte, muitas vezes sem obter a resposta certa.

Então, sim, os drivers para o microfone externo são desenvolvidos e estão disponíveis (na verdade, eles são os mesmos drivers que o restante do codec). Você pode ver todas as peculiaridades (comportamento não padrão) que se acumularam inspecionando os arquivos de origem do kernel em /sound/pci/hda/ e grep para "quirk".

O que significa que se você tiver um laptop em que o microfone de fone de ouvido externo não esteja funcionando, alguém (talvez você?) precisará mergulhar nos detalhes técnicos, fazê-lo funcionar e reportá-lo aos desenvolvedores de kernel da ALSA.

Você pode ver o que os chips codec informam sobre sua estrutura interna com

cat /proc/asound/card*/codec\#*

Isto dá o gráfico interno, você pode segui-lo manualmente ou tentar programas como codecgraph para visualizá-lo (nem sempre dá bons resultados). O "complexo de pinos" representa os pinos. Olhe para o que você tem, tente adivinhar qual pode representar o microfone externo, mesmo que esteja incorretamente rotulado. Use hdajackretask para rotular corretamente o pino se você o identificou (ou adivinhe até que você o faça). Existem maneiras de tornar esse padrão de nova rotulação na inicialização até que o driver seja atualizado.

Quanto à combinação de microfone interno e fones de ouvido: o ALSA tem um elemento de mixer chamado "modo Auto-Mute". Isso fará com que o ALSA silencie o microfone / alto-falante interno e ative o microfone / fone de ouvido externo (ou vice-versa) quando o fone de ouvido estiver conectado ou desconectado. Desabilite isso em alsamixer ou amixer , mude e ative o microfone / alto-falante / fone de ouvido interno e externo conforme desejar.

Você também pode configurar isso no Pulseaudio: Inicie o pavucontrol , selecione as portas corretas na guia de entrada e saída.

Se as "portas" internas e externas não estiverem disponíveis, ou se você quiser torná-lo o padrão, isso também é possível, embora seja um pouco trabalhoso: Veja os arquivos em /usr/share/pulseaudio/alsa-mixer/ , leia o comentários que explicam como eles funcionam. Você precisa de uma nova "configuração" para sua placa de som que combine dois "caminhos", um para o microfone interno e outro para os fones de ouvido externos, usando os elementos corretos do mixer ALSA. Isso provavelmente levará algum tempo para que funcione corretamente, o Pulseaudio não é muito intuitivo nessa resepção.

Não, não há maneira fácil de fazer o que você quer; você terá que sujar as mãos.

    
por 22.07.2017 / 11:54