Перед тем как начать, определите модель вашей карты, процессор, который она использует, и интерфейс карты: 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.
Для того чтобы узнать, какой именно драйвер требуется для вашей звуковой карты, вы можете проверить содержимое файла /dev/sndstat при помощи команды cat /dev/sndstat.
Замечание: В 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/conf/NOTES (/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 snd_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).
Ошибка | Решение |
---|---|
``unsupported subdevice XX'' |
Одно или более устройств не были правильно созданы. Повторите приведенные выше шаги. |
``sb_dspwr(XX) timed out'' |
Порт ввода-вывода указан неправильно. |
``bad irq XX'' |
IRQ установлен неправильно. Убедитесь, что настройки в системе и на карте одинаковы. |
``xxx: gus pcm not attached, out of memory'' |
Для использования устройства недостаточно памяти. |
``xxx: can't open /dev/dsp!'' |
Проверьте с помощью fstat | grep dsp, не занято ли устройство другим приложением. Создать проблемы могут esound и поддержка звука в KDE. |
Достаточно часто встречается необходимость иметь несколько источников звука, которые должны воспроизводить одновременно, например когда 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), вышеуказанные настройки будут сделаны автоматически прозрачно для пользователя.
Значения по умолчанию для различных каналов mixer жестко прописаны в исходных текстах драйвера pcm(4). Существует множество различных приложений и даемонов, которые позволяют устанавливать значения для mixer, которые они запоминают и выставляют каждый раз при запуске, но это не совсем правильное решение, нам нужны значения по умолчанию на уровне драйвера. Они могут быть установлены путем указания в /boot/device.hints. Например:
hint.pcm.0.vol="100"
Установит значение для канала volume в значение по умолчанию 100, как только будет загружен модуль pcm(4).
Замечание: Поддерживается начиная с FreeBSD версии 5.3.
Пред. | Начало | След. |
Мультимедиа | Уровень выше | Звук MP3 |
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.