Руководство FreeBSD
Пред. | Глава 7. Мультимедиа | След.

# 7.2. Настройка звуковой карты

Предоставил Moses Moore. Расширил для FreeBSD 5.X Marc Fonvieille.

## 7.2.1. Настройка системы

Перед тем как начать, определите модель вашей карты, процессор, который она использует, и интерфейс карты: 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.

### 7.2.1.1. Настройка собственного ядра с поддержкой звука

Первое, что необходимо сделать, это добавить в ядро общий звуковой драйвер 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

## 7.2.2. Тестирование звуковой карты

После перезагрузки модифицированного ядра, или после загрузки необходимого модуля, звуковая карта должна появиться в буфере системных сообщений (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).

### 7.2.2.1. Часто встречающиеся проблемы

Ошибка | Решение
--- | ---
```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.

## 7.2.3. Использование нескольких источников звука

Предоставил 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), вышеуказанные настройки будут сделаны автоматически прозрачно для пользователя.

## 7.2.4. Установка значений по умолчанию для каналов mixer

Предоставил Josef El-Rayes.

Значения по умолчанию для различных каналов 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>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.