7.2. Configurando a Placa de Som
Anterior | Capítulo 7. Multimídia | Próxima

## 7.2. Configurando a Placa de Som

Contribuido porMoses Moore.
Aprimorado porMarc Fonvieille.

Antes de iniciar a configuração, determine o modelo da placa de som e o chip usado. O FreeBSD suporta uma ampla variedade de placas de som. Verifique a lista de dispositivos de áudio compatíveis nas Notas de Hardware, para ver se a placa de som é suportada e quais drivers do FreeBSD que ela usa.

Para usar um dispositivo de som, seu driver deve ser carregado. A maneira mais fácil é carregar o módulo do kernel para a placa de som com o kldload(8). Este exemplo carrega o driver para um chipset de áudio integrado baseado na especificação Intel:

    # kldload snd_hda

Para automatizar o carregamento desse driver no momento da inicialização, faça edição adicionando a seguinte linha ao arquivo `/boot/loader.conf`:

    snd_hda_load="YES"

Outros módulos de som disponíveis estão listados no arquivo `/boot/defaults/loader.conf`. Quando não tiver certeza de qual driver usar, carregue o módulo `snd_driver`:

    # kldload snd_driver

Este é um metadriver que carrega todos os drivers de som mais comuns e pode ser usado para acelerar a busca pelo driver correto. Também é possível carregar todos os drivers de som adicionando o metadriver no arquivo `/boot/loader.conf`.

Para determinar qual driver foi selecionado para a placa de som após carregar o metadriver `snd_driver`, digite, `cat /dev/sndstat`.

### 7.2.1. Configurando um kernel Personalizado com Suporte de Som

Esta seção é para usuários que preferem compilar estaticamente em suporte para a placa de som em um kernel personalizado. Para mais informações sobre como recompilar um kernel, consulte Capítulo 8, Configurando o kernel do FreeBSD.

Ao usar um kernel personalizado para fornecer suporte ao som, verifique se o driver do framework de áudio existe no arquivo de configuração do kernel personalizado:

    device sound

Em seguida, adicione suporte para a placa de som. Para continuar o exemplo do chipset de áudio integrado baseado na especificação Intel da seção anterior, use a seguinte linha no arquivo de configuração do kernel personalizado:

    device snd_hda

Certifique-se de ler a página de manual do driver para o nome do dispositivo a ser usado pelo driver.

Placas de som ISA não-PnP podem requerer que as configurações de porta IRQ e I/O da placa sejam adicionadas ao arquivo `/boot/device.hints`. Durante o processo de inicialização, o loader(8) lê este arquivo e passa as configurações para o kernel. Por exemplo, uma placa antiga ISA não-PnP da Creative SoundBlaster® usará o driver snd_sbc(4) em conjunto com `snd_sb16`. Para esta placa, as seguintes linhas devem ser adicionadas ao arquivo de configuração do kernel:

    device snd_sbc
    device snd_sb16

Se a placa usar a porta de I/O `0x220` e a IRQ `5`, essas linhas também deverão ser adicionadas ao arquivo `/boot/device.hints`:

    hint.sbc.0.at="isa"
    hint.sbc.0.port="0x220"
    hint.sbc.0.irq="5"
    hint.sbc.0.drq="1"
    hint.sbc.0.flags="0x15"

A sintaxe usada no arquivo `/boot/device.hints` é descrita em sound(4) e na página de manual do driver da placa de som.

As configurações mostradas acima são os padrões. Em alguns casos, a IRQ ou outras configurações podem precisar ser alterados para corresponder à placa. Consulte snd_sbc(4) para obter mais informações sobre esta placa.

### 7.2.2. Testando o Som

Depois de carregar o módulo necessário ou reinicializar no kernel personalizado, a placa de som deve ser detectada. Para confirmar, execute `dmesg | grep pcm`. Este exemplo é de um sistema com um chipset integrado Conexant CX20590:

    pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 5 on hdaa0
    pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 6 on hdaa0
    pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> at nid 31,25 and 35,27 on hdaa1

O status da placa de som também pode ser verificado usando este comando:

    # cat /dev/sndstat
    FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
    Installed devices:
    pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play)
    pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play)
    pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> (play/rec) default

A saída irá variar dependendo da placa de som. Se nenhum dispositivo `pcm` estiver listado, verifique se o driver de dispositivo correto foi carregado ou compilado no kernel. A próxima seção lista alguns problemas comuns e suas soluções.

Se tudo correr bem, a placa de som deverá funcionar no FreeBSD. Se a unidade de CD ou DVD estiver corretamente conectada à placa de som, é possível inserir um CD de áudio na unidade e reproduzi-lo com cdcontrol(1):

    % cdcontrol -f /dev/acd0 play 1

### Atenção:

CD de audio têm codificações especializadas, o que significa que não devem ser montados usando mount(8).

Várias aplicações, como audio/workman, fornecem uma interface mais amigável. O Port audio/mpg123 pode ser instalado para ouvir arquivos de áudio MP3.

Outra maneira rápida de testar a placa é enviar dados para `/dev/dsp`:

    % cat filename > /dev/dsp

onde ``filename`` pode ser qualquer tipo de arquivo. Este comando deve produzir algum ruído, confirmando que a placa de som está funcionando.

### Nota:

Os nós de dispositivo `/dev/dsp*` serão criados automaticamente conforme necessário. Quando não estão em uso, eles não existem e não aparecerão na saída de ls(1).

### 7.2.3. Configurando Dispositivos de Som Bluetooth

Conectar a um dispositivo Bluetooth está fora do escopo deste capítulo. Consulte a Seção 31.5, “Bluetooth” para mais informações.

Para que o dispositivo Bluetooth funcione com o sistema de som do FreeBSD, os usuários precisam primeiramente instalar o audio/virtual_oss:

    # pkg install virtual_oss

audio/virtual_oss requer `cuse` para ser carregado no kernel:

    # kldload cuse

Para carregar o `cuse` durante a inicialização do sistema, execute o comando:

    # sysrc -f /boot/loader.conf cuse_load=yes

Para usar fones de ouvido como reprodutor de som com audio/virtual_oss, os usuários precisam criar um dispositivo virtual depois de se conectarem a um dispositivo de áudio Bluetooth:

    # virtual_oss -C 2 -c 2 -r 48000 -b 16 -s 768 -R /dev/null -P /dev/bluetooth/headphones -d dsp

### Nota:

`headphones` neste exemplo é o nome de host de `/etc/bluetooth/hosts`. `BT_ADDR` também poderia ser usado.

Consulte virtual_oss(8) para mais informações.

### 7.2.4. Solução de Problemas de Som

Tabela 7.1, “Mensagens de Erros Comuns” lista algumas mensagens de erros comuns e suas soluções:

Tabela 7.1. Mensagens de Erros Comuns

Erro | Solução
--- | ---
sb_dspwr(XX) timed out | A porta de I/O não está configurada corretamente.
bad irq XX | A IRQ está definida incorretamente. Certifique-se de que a IRQ definido e a IRQ do som são as mesmas.
xxx: gus pcm not attached, out of memory | Não há memória disponível suficiente para usar o dispositivo.
xxx: can't open /dev/dsp! | Digite `fstat | grep dsp` para verificar se outro aplicativo está mantendo o dispositivo aberto. Os causadores de problemas notáveis ​​são o suporte a som do esound e do KDE.

Placas gráficas modernas geralmente vêm com seu próprio driver de som para uso com HDMI. Às vezes, esse dispositivo de som é enumerado antes da placa de som, o que significa que a placa de som não será usada como o dispositivo de reprodução padrão. Para verificar se este é o caso, execute dmesg e procure por `pcm`. A saída é algo como isto:

    ...
    hdac0: HDA Driver Revision: 20100226_0142
    hdac1: HDA Driver Revision: 20100226_0142
    hdac0: HDA Codec #0: NVidia (Unknown)
    hdac0: HDA Codec #1: NVidia (Unknown)
    hdac0: HDA Codec #2: NVidia (Unknown)
    hdac0: HDA Codec #3: NVidia (Unknown)
    pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0
    pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0
    pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0
    pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0
    hdac1: HDA Codec #2: Realtek ALC889
    pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1
    pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1
    pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1
    pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1
    ...

Neste exemplo, a placa gráfica (`NVidia`) foi enumerada antes da placa de som (`Realtek ALC889`). Para usar a placa de som como o dispositivo de reprodução padrão, altere a variável `hw.snd.default_unit` para a unidade que deve ser usada para reprodução:

    # sysctl hw.snd.default_unit=n

onde `n` é o número do dispositivo de som a ser usado. Neste exemplo, deve ser `4`. Deixe esta mudança permanente adicionando a seguinte linha ao arquivo `/etc/sysctl.conf`:

    hw.snd.default_unit=4

### 7.2.5. Utilizando Múltiplas Fontes de Som

Contribuído porMunish Chopra.

Muitas vezes é desejável ter várias fontes de som capazes de tocar simultaneamente. O FreeBSD usa “Canais de Som Virtuais” para multiplexar a reprodução da placa de som mixando o som no kernel.

Três variáveis no sysctl(8) estão disponíveis para configurar canais virtuais:

    # sysctl dev.pcm.0.play.vchans=4
    # sysctl dev.pcm.0.rec.vchans=4
    # sysctl hw.snd.maxautovchans=4

Este exemplo aloca quatro canais virtuais, que é um número prático para o uso diário. Ambos `dev.pcm.0.play.vchans=4` e `dev.pcm.0.rec.vchans=4` são configuráveis ​​depois que um dispositivo foi anexado e representa o número de canais virtuais `pcm0` para reprodução e gravação. Como o módulo `pcm` pode ser carregado independentemente dos drivers de hardware, `hw.snd.maxautovchans` indica quantos canais virtuais serão dados a um dispositivo de áudio quando ele estiver conectado. Consulte pcm(4) para obter mais informações.

### Nota:

O número de canais virtuais para um dispositivo não pode ser alterado enquanto estiver em uso. Primeiramente, feche todos os programas usando o dispositivo, como players de música ou daemons de som.

O dispositivo `pcm` correto será automaticamente alocado de forma transparente para um programa que solicite `/dev/dsp0`.

### 7.2.6. Configurando Valores Padrões para Canais de Mixer

Contribuído porJosef El-Rayes.

Os valores padrões para os diferentes canais do mixer são codificados permanentemente no código-fonte do driver pcm(4). Embora os níveis do mixer da placa de som possam ser alterados usando mixer(8) ou aplicativos e daemons de terceiros, essa não é uma solução permanente. Para definir os valores padrões do mixer no nível do driver, defina os valores apropriados no arquivo `/boot/device.hints`, conforme mostrado neste exemplo:

    hint.pcm.0.vol="50"

Isso definirá o canal de volume como um valor padrão de `50` quando o módulo pcm(4) for carregado.

Anterior | Acima | Próxima
Capítulo 7. Multimídia | Principal | 7.3. Áudio MP3

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.