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
ErroSoluçã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.

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