Предоставил Moses Moore. Расширил для FreeBSD 5.X Marc
Fonvieille.
Перед тем как начать, определите модель вашей карты, процессор, который она
использует, и интерфейс карты: PCI или ISA. FreeBSD поддерживает множество разных PCI и
ISA карт. Сверьтесь со списком поддерживаемых аудио устройств в Информации об
оборудовании, чтобы проверить, поддерживается ли ваша карта. Этот документ также
содержит информацию о том, какой драйвер поддерживает вашу карту.
Для того, чтобы использовать звуковую карту, вы должный загрузить соответствующий
драйвер устройства. Этого можно достигнуть двумя путями. Простейший способ - это просто
загрузить соответствующий вашей карте модуль ядра используя kldload(8), что можно
сделать или из командной строки:
# kldload snd_emu10k1
или добавлением соответствующей строки к файлу /boot/loader.conf:
snd_emu10k1_load="YES"
Эти примеры приведены для звуковой карты Creative SoundBlaster® Live!. Другие имеющиеся модули драйверов
звуковых карты приведены в /boot/defaults/loader.conf Если вы
не уверены, какой драйвер использовать, попробуйте загрузить snd_driver:
# kldload snd_driver
Это мета-драйвер, загружающий сразу все наиболее распространенные драйверы сразу. это
повышает скорость поиска правильного драйвера. Возможна также загрузка всех звуковых
драйверов через /boot/loader.conf.
Замечание: В FreeBSD 4.X для загрузки всех звуковых драйверов вам будет
необходимо загрузить модуль snd вместо snd_driver.
Другой способ заключается в добавлении статического драйвера в ядро. В разделе ниже
дана более подробная информация о том, что вам нужно сделать для добавления поддержки
оборудования. Более подробно о конфигурация ядра описана в Гл. 8.
Первое, что необходимо сделать, это добавить в ядро общий звуковой драйвер sound(4). Добавьте в
файл конфигурации ядра следующую строку:
device sound
В FreeBSD 4.X, вам необходимо использовать следующую строку:
device pcm
Затем необходимо добавить поддержку имеющейся звуковой карты. Следовательно, нужно
знать какой драйвер поддерживает карту. Для этого сверьтесь со списком поддерживаемых
устройств из Информации об оборудовании. Например, звуковая карта Creative SoundBlaster Live! поддерживается драйвером snd_emu10k1(4). Для
добавления поддержки этой карты, используйте:
device snd_emu10k1
Прочтите страницу справочника драйвера, чтобы узнать, какой синтаксис использовать.
Информация, относящаяся к синтаксису включения звуковых драйверов в файл конфигурации
ядра, может быть также найдена в файле (/usr/src/sys/i386/conf/LINT для FreeBSD 4.X).
Не-PnP ISA карты могут потребовать включения в ядро информации о настройках звуковой
карты (IRQ, I/O port, и т.д.). Эта информация добавляется редактированием файла /boot/device.hints. Во время загрузки системы loader(8) прочтет этот
файл и настройки ядру. Например, старая ISA не-PnP карта Creative SoundBlaster 16 использует драйвер snd_sbc(4) со
следующей строкой, добавленной к файлу настройки ядра:
device sbc
и со следующей информацией в /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"
В данном случае, карта использует порт ввода-вывода 0x220 и
IRQ 5.
Синтаксис, используемый в файле /boot/device.hints, описан в
справочной странице драйвера. В FreeBSD 4.X эти настройки записываются
непосредственно в файл конфигурации ядра. В случае ISA карты используется такая
строка:
device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15
Установки, приведенные выше, используются по умолчанию. В некоторых случаях вам может
потребоваться изменить IRQ или другие настройки в соответствии с настройками карты. За
более подробной информацией обратитесь к странице справочника snd_sbc(4).
Замечание: В FreeBSD 4.X некоторые системы со встроенной в материнскую
плату звуковой картой могут потребовать следующей строки в файле настройки ядра:
options PNPBIOS
После перезагрузки модифицированного ядра, или после загрузки необходимого модуля,
звуковая карта должна появиться в буфере системных сообщений (dmesg(8)) примерно
так:
pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff
irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>
Статус звуковой карты может быт проверен через файл /dev/sndstat:
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)
Вывод этой команды для вашей системы может отличаться. Если устройства pcm не появились, вернитесь назад и проверьте выполненные
действия. Проверьте файл настройки ядра еще раз и убедитесь, что выбрано подходящее
устройство. Часто встречающиеся проблемы приведены в Разд. 7.2.2.1.
Если всё пройдет удачно, звуковая карта заработает. Если CD-ROM или DVD-ROM привод
правильно подключён к звуковой карте, вы можете вставить CD в привод и воспроизвести его
при помощи cdcontrol(1).
% cdcontrol -f /dev/acd0 play 1
Различные приложения, например audio/workman может предоставить более дружественный
пользователю интерфейс. Вы можете также установить приложения для прослушивания звуковых
файлов MP3, как например audio/mpg123. Быстрым способом тестирования звуковой карты
является отправка данных в файл /dev/dsp, как здесь:
% cat filename > /dev/dsp
где filename может быть любым файлом. Результатом
выполнения этой команды станет шум, который означает, что звуковая карта на самом деле
работает.
Замечание: Пользователям FreeBSD 4.X потребуется создать устройства
звуковой карты перед тем, как ее использовать. Если в буфере системных сообщений карта
появилась как pcm0, вам необходимо выполнить от root следующее:
# cd /dev
# sh MAKEDEV snd0
Если карта обнаружена как pcm1, выполните то же самое,
заменив snd0 на snd1.
MAKEDEV создаст группу файлов устройств, которые будут
использоваться различными звуковыми приложениями.
Уровни громкости звука могут быть изменены командой mixer(8). Более
подробная информация находится на странице справочной системы mixer(8).
Предоставил Munish Chopra.
Достаточно часто встречается необходимость иметь несколько источников звука, которые
должны воспроизводить одновременно, например когда esound или
artsd не поддерживают совместное использование звукового
устройства с некоторым приложением.
FreeBSD позволяет делать это при помощи виртуальных звуковых каналов, которые могут быть настроены с
помощью sysctl(8). Виртуальные
каналы позволяют вам мультиплексировать каналы воспроизведения звуковой карты, смешивая
звук в ядре.
Для установки количества виртуальных каналов вы можете использовать две переменные
sysctl, которые, если вы пользователь root, могут быть
установлены таким образом:
# sysctl hw.snd.pcm0.vchans=4
# sysctl hw.snd.maxautovchans=4
В этом примере выделяются четыре виртуальных канала, чего вполне достаточно для
повседневного использования. hw.snd.pcm0.vchans это количество
виртуальных каналов устройства pcm0, оно может быть
установлено сразу же, как только устройство было подключено. hw.snd.maxautovchans это количество виртуальных каналов, которые
выделяются новому аудиоустройству, когда оно подключается при помощи kldload(8). Так как
модуль pcm может быть загружен независимо от аппаратных
драйверов, hw.snd.maxautovchans может указывать количество
виртуальных каналов для любых устройств, которые будут подключены позже.
Если вы не используете
devfs(5),
необходимо будет указать приложениям /dev/dsp0.x, где x это число от 0 до 3,
если hw.snd.pcm0.vchans установлено в значение 4. Для системы,
использующей
devfs(5),
вышеуказанные настройки будут сделаны автоматически прозрачно для пользователя.
Предоставил Josef El-Rayes.
Значения по умолчанию для различных каналов mixer жестко прописаны в исходных текстах
драйвера pcm(4). Существует
множество различных приложений и даемонов, которые позволяют устанавливать значения для
mixer, которые они запоминают и выставляют каждый раз при запуске, но это не совсем
правильное решение, нам нужны значения по умолчанию на уровне драйвера. Они могут быть
установлены путем указания в /boot/device.hints. Например:
hint.pcm.0.vol="100"
Установит значение для канала volume в значение по умолчанию 100, как только будет
загружен модуль pcm(4).
Замечание: Только FreeBSD 5.3 и более свежие релизы поддерживают эту
возможность.