Преди да започнете, трябва да знаете моделът на вашата карта, чипът който ползва и дали тя е PCI или ISA. FreeBSD подържа голямо разнообразие и от двата типа карти - PCI и ISA. Ако не виждате вашата карта в списъка по-долу, моля проверете помощната страница pcm(4). Макар и непълна, листата по-долу изброява някои от най-разпространените карти.
Crystal 4237, 4236, 4232, 4231
Yamaha OPL-SAx
OPTi931
Ensoniq AudioPCI 1370/1371
ESS Solo-1/1E
NeoMagic 256AV/ZX
SoundBlaster® Pro, 16, 32, AWE64, AWE128, Live
Creative ViBRA16
Advanced Asound 100, 110, and Logic ALS120
ES 1868, 1869, 1879, 1888
Gravis UltraSound
Aureal Vortex 1 or 2
За да използвате вашата карта, трябва да заредите съответния драйвер. Това може да стане по един от следните два начина: най-лесно е да заредите въпросния модул на ядрото, който подържа вашата карта чрез командата kldload(8), което може да стане и от команден ред:
# kldload snd_emu10k1.ko
или добавяйки съответния ред в /boot/loader.conf ето така:
snd_emu10k1_load="YES"
Тези примери са за Creative SoundBlaster Live! звукова карта. Други налични модули са изброени в /boot/defaults/loader.conf.
Другият начин е да прекомпилирате ядрото и да укажете статична подръжка за вашата карта. Секциите по-долу дават нужната информация за това какво е нужно да добавите, за да се подържа вашата карта от ядрото. За повече подробности по прекомпилирането, моля вижте Chapter 9.
Ако имате една от следните карти, трябва да добавите:
device pcm
към вашия конфигурационен файл за новото ядро. При наличие на ISA PnP, карта ще трябва също да добавите:
device sbc
За карти, които не са ISA PnP, добавете:
device pcm device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15
към конфигурационния файл на ядрото. Дадените настройки са по подразбиране. Вероятно ще се наложи да смените прекъсването или друг параметър, за да съвпадне с тези на вашата карта. Моля проверете за повече информация sbc(4).
Note: Sound Blaster Live картите не се подържат от версии на FreeBSD по-ниски от 4.0 без кръпка, която няма да бъде описана в тази глава. Препоръчва се да обновите вашата версия до последната стабилна, преди да пробвате тази марка.
За PnP ISA карти параметрите за добавяне са следните:
device pcm device gusc
в конфигурационния файл на ядрото. За карти, които не са ISA PnP добавете:
device pcm device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13
в конфигурационния файл на ядрото. Може да се наложи да смените прекъсването или други параметри, за да съвпаднат с вашата карта. Вижте gusc(4) за повече подробности.
За тях е нужно да добавите:
device pcm device csa
в конфигурационния файл на ядрото.
За ISA/PCI PnP карти, клонинги на големите марки се настойват като добавите:
device pcm
в конфигурационния файл на ядрото. Ако имате ISA карта, която не е PnP и няма свързващ драйвер (bridge driver), за нея можете да я подкарате като напишете:
device pcm0 at isa? irq 10 drq 1 flags 0x0
в конфигурационния файл на ядрото. Вероятно ще се наложи да смените прекъсването или другите настройки, за да може да тръгне.
Някои системи с вграден звук на дъното, вероятно ще се нуждаят от следната опция към файла за новото ядро, за да тръгнат:
options PNPBIOS
След като рестартирате, влезте в системата и прегледайте /var/run/dmesg.boot, както е указано по-долу:
# grep pcm /var/run/dmesg.boot pcm0: <SB16 DSP 4.11> on sbc0
Резултатът от вашия компютър може да изглежда различно. Ако няма налични pcm устройства, то значи нещо се е омазало при компилирането. Съветваме ви да проверите отново във вашия конфигурационен файл, дали сте избрали правилния драйвер. Ч есто срещаните проблеми по звуковите устройства са изброени в частта Section 16.2.2.1.
Note: Ако работите с FreeBSD 5.0 или по-висока, можете спокойно да пропуснете тази част - те използват devfs(5) за да създават автоматично устройствата.
Ако резултатът от предишната команда е pcm0, ще трябва да изпълните следващата част като root:
# cd /dev # sh MAKEDEV snd0
Ако резултатът от предишната команда epcm1, направете описаното горе, заменяйки snd0 с snd1.
Note: Горните команди няма да създадат /dev/snd устройство!
MAKEDEV ще създаде група от устройства, включително:
| Устройство | Описание |
|---|---|
| /dev/audio | Sparc® съвместимо устройство |
| /dev/dsp | Цифровизирано звуково устройство |
| /dev/dspW | Подобно на /dev/dsp, само че с 16 бита за семпъл. |
| /dev/midi | Устройство за достъп до midi периферия |
| /dev/mixer | Контролно смесващо устройство |
| /dev/music | Интерфейс за сикуенсър второ ниво |
| /dev/sequencer | Сикуенсър |
| /dev/pss | Програмируем интерфейс за устройства |
Ако всичко мине добри, би трябвало да имате действаща змукова карта. Ако вашият CD-ROM или DVD-ROM е правилно свързан с вашата звукова карта, можете да поставите диск в устройството и да го просвирите с cdcontrol(1):
% cdcontrol -f /dev/acd0c play 1
Различни приложения, като audio/workman предлагат по-добър интерфейс. Може да инсталирате приложение като audio/mpg123, за да слушате MP3 аудио файлове.
| Грешка | Решение |
|---|---|
| ``unsupported subdevice XX'' |
Eдно или повече устройства не са били създадени правилно. Повторете стъпките по-горе. |
| ``sb_dspwr(XX) timed out'' |
Входно-изходният порт не е зададен правилно. |
| ``bad irq XX'' |
Прекъсването не е зададено правилно. Проверете дали зададеното прекъсване и това на звуковата ви карта съвпадат. |
| ``xxx: gus pcm not attached, out of memory'' |
Няма достатъчно памет. |
| ``xxx: can't open /dev/dsp!'' |
Проверете с fstat | grep dsp дали някое друго приложение не ползва картата. esound и KDE звуковите програми са известни с проблемите, които създават. |
Желателно е да имате много източници на звук които могат да свирят едновременно в ситуации, когато esound или artsd не подържат споделяне на звуковата карта с дадено приложение.
FreeBSD ви дава възможност да сторите това чрез виртуалните звукови канали, които могат да се задават със sysctl(8). Виртуалните канали ви позволяват да увеличите ``пистите'' на звуковата си карта, като смесват звука в ядрото.
За да зададете техния брой, има две опции, които може да използвате в случай, че имате root права:
# sysctl hw.snd.pcm0.vchans=4 # sysctl hw.snd.maxautovchans=4
Горният пример създава 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.pcm.0.vchans има стойност 4, както в горния пример. На системи с devfs(5), горното ще стане автоматично за потребителя.
Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
За въпроси относно FreeBSD, прочетете документацията преди да попитате в <questions@FreeBSD.org>.
За въпроси относно този документ, e-mail <doc@FreeBSD.org>.