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

Предоставлено Moses Moore.

14.2.1. Определение Вашего Устройства

Перед тем как начать, Вы должны знать модель Вашей карты, процессор, который она использует, и интерфейс карты: PCI или ISA. FreeBSD поддерживает множество разных PCI и ISA карт. Если Вы не увидели Вашу карту в следующем списке, загляните в руководство pcm(4). Нижеследующий список неполон, но, всё-таки, в нём перечислено большинство наиболее часто используемых карт.

Для того, чтобы использовать звуковую карту Вы должный загрузить соответствующий драйвер устройства. Этого можно достигнуть двумя путями. Простейший способ - это просто загрузить соответствующий Вашей карте модель ядра используя kldload(8). Другой способ подразумевает добавление статического драйвера в Ваше ядро. В последующих разделах дана более подробная информация о том, что Вам нужно сделать для добавления поддержки Вашего оборудования. Более подробно о конфигурации ядра смотрите секцию Chapter 9.

14.2.1.1. Карты Creative, Advance, и ESS Sound

Если у Вас одна из этих карт, Вы должны добавить:

    device pcm

в конфигурационный файл вашего ядра. Если у Вас PnP ISA карта, Вы также должны добавить

    device sbc

Для не-PnP ISA карт, добавьте:

    device pcm
    device sbc0 at isa? port0x220 irq 5 drq 1 flags 0x15

в конфигурационный файл вашего ядра. Здесь указаны настройки по-умолчанию. Возможно Вам придётся изменить IRQ или другие параметры в соответствии с настройками Вашей карты. Смотрите руководство sbc(4) для получения более подробной информации.

Note: Sound Blaster Live не поддерживается в FreeBSD 4.0 без заплатки, которую этот документ не включает. Рекомендуется обновить Вашу систему до последней версии -STABLE перед использованием этой карты.

14.2.1.2. Карты Gravis UltraSound

Для PnP ISA card, Вы должны добавить:

    device pcm
    device gusc

в конфигурационный файл вашего ядра. Если у Вас не-PnP ISA карту, Вам следует добавить:

    device pcm
    device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13

в конфигурационный файл вашего ядра. Возможно Вам придётся изменить IRQ или другие параметры в соответствии с настройками Вашей карты. Смотрите руководство gusc(4) для получения более подробной информации.

14.2.1.3. Карты Crystal Sound

Для карт от Crystal, Вы должны добавить:

    device pcm
    device csa

в конфигурационный файл вашего ядра.

14.2.1.4. Прочая поддержка

Для PnP ISA или PCI карт, Вам следует добавить:

    device pcm

в конфигурационный файл вашего ядра. Если у Вас не-PnP ISA карта, не имеющая bridge driver, добавьте:

    device pcm0 at isa? irq 10 drq 1 flags 0x0

в конфигурационный файл вашего ядра. Возможно Вам придётся изменить IRQ, и прочие параметры, в соответствии с аппаратной конфигурацией.

14.2.1.5. Поддержка интегрированных карт

Некоторые системы с интегрированными в материнские платы звуковыми картами требуют включения дополнительной опции в конфигурацию ядра:

    options PNPBIOS

14.2.2. Создание и Тестирование Устройства

После перезагрузки, зарегистрируйтесь в системе и проверьте наличие устройства в файле /var/run/dmesg.boot при помощи команды:

    # grep pcm /var/run/dmesg.boot
    pcm0: <SB16 DSP 4.11> on sbc0

Результат на Вашей системе может отличатся. Если упоминания об устройстве pcm отсутствует, то что-то перед этим было сделано неверно. Если это произошло, просмотрите Ваш файл конфигурации ядра еще раз и убедитесь что Вы выбрали правильное устройство. Наиболее часто встречающиеся проблемы описаны в разделе Section 14.2.2.1.

Note: Если у Вас установлена FreeBSD 5.0 или более поздняя, Вы можете не читать всё, что описано далее в этом разделе. Эти версии FreeBSD используют devfs(5) для того, чтобы автоматически создавать файлы устройств.

Если ошибок нет и в Вашей системе присутствует устройство pcm0, выполните su для получения прав пользователя root и сделайте следующее:

    # cd /dev
    # sh MAKEDEV snd0

Если ошибок нет и в Вашей системе присутствует устройство pcm1, то повторите указанные выше действия, заменив snd0 на snd1.

Пожалуйста помните, что эти команды не создают устройство /dev/snd!

MAKEDEV создает группу устройств, включающую в себя:

УстройствоОписание
/dev/audioSPARC-совместимое звуковое устройство
/dev/dspАналого-цифровой преобразователь голоса
/dev/dspWТоже, что и /dev/dsp, но 16 бит на сэмпл
/dev/midiУстройство доступа к MIDI
/dev/mixerУстройство управления миксером
/dev/musicИнтерфейс секвенсора второго уровня
/dev/sequencerУстройство секвенсор
/dev/pssПрограммируемый интерфейс

Если всё пройдет удачно, Ваша звуковая карта заработает. Если Ваш CD-ROM или DVD-ROM привод правильно подключён к звуковой карте, Вы можете вставить CD в привод и воспроизвести его при помощи cdcontrol(1).

    % cdcontrol -f /dev/acd0c play 1

Различные приложения, например audio/workman предлагают лучший пользовательский интерфейс. Вы можете также захотеть установить приложения для прослушивания звуковых файлов MP3, как например audio/mpg123.

14.2.2.1. Общие проблемы

ОшибкаРешение
``unsupported subdevice XX''

One or more of the device nodes was not created correctly. Repeat the steps above.

``sb_dspwr(XX) timed out''

The I/O port is not set correctly.

``bad irq XX''

The IRQ is set incorrectly. Make sure that the set IRQ and the sound IRQ are the same.

``xxx: gus pcm not attached, out of memory''

There is not enough available memory to use the device.

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