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
.
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.
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
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
pode ser qualquer tipo de arquivo. Este comando deve produzir algum ruído, confirmando que a placa de som está funcionando.filename
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).
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
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.
Tabela 7.1, “Mensagens de Erros Comuns” lista algumas mensagens de erros comuns e suas soluções:
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 |
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
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.
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
.
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>.