8.2. Дууны картыг тохируулах

Хувь нэмэр болгон оруулсан Мозес Мур. Өргөжүүлсэн Марк Фонвил.

8.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 файлаар ачаалах бас боломжтой байдаг.

snd_driver метадрайверийг дуудсаны дараа та өөрийн дууны картдаа ямар драйвер сонгогдсоныг олохыг хүсвэл /dev/sndstat файлыг cat /dev/sndstat тушаалын тусламжтай шалгаж болох юм.

Хоёр дахь арга нь өөрийн дууны картын дэмжлэгийг өөрийн цөмдөө эмхэтгэх явдал юм. Доорх хэсэг нь энэ аргаар өөрийн тоног төхөөрөмжид зориулан дэмжлэг нэмэхэд шаардлагатай мэдээллийг өгнө. Өөрийн цөмийг дахин эмхэтгэх тухай дэлгэрэнгүй мэдээллийг Бүлэг 9-с үзнэ үү.

8.2.1.1. Дууны дэмжлэгтэй цөмийг тохируулах

Эхлээд хийх ёстой зүйл нь аудио тогтолцооны драйвер sound(4)-г цөм уруу нэмэх явдал юм. Ингэхийн тулд та дараах мөрийг цөмийн тохиргооны файлдаа нэмэх хэрэгтэй болно:

device sound

Дараа нь та өөрийн дууны картдаа зориулж дэмжлэг нэмэх хэрэгтэй. Тийм болохоор картыг ямар драйвер дэмждэгийг мэдэх хэрэгтэй. Өөрийн дууны картын зөв драйверийг тодорхойлохын тулд Тоног төхөөрөмжийн тэмдэглэгээний дэмжигдсэн аудио төхөөрөмжүүдийн жагсаалтыг шалгах хэрэгтэй. Жишээ нь Creative SoundBlaster Live! дууны карт нь snd_emu10k1(4) драйвераар дэмжигдсэн байдаг. Энэ картанд зориулж дэмжлэг нэмэхийн тулд доор дурдсаныг ашиглана:

device snd_emu10k1

Хэрхэн ашиглах талаар драйверийн гарын авлагын хуудаснаас уншихаа мартуузай. Дэмжигдсэн дууны драйверуудын цөмийн тохиргооны зөв бичиглэлийг /usr/src/sys/conf/NOTES файлаас бас олж болно.

PnP биш ISA дууны картууд нь цөмийг картын тохируулгуудын (IRQ, I/O порт, гэх мэт) тухай мэдээлэлтэй нь танаас шаардаж болох юм. Энэ нь бүх PnP биш ISA дууны картуудын хувьд үнэн байдаг. Үүнийг /boot/device.hints файлын тусламжтай хийдэг. Системийг ачаалах үед loader(8) нь энэ файлыг уншиж тохируулгуудыг цөм уруу дамжуулдаг. Жишээ нь хуучин Creative SoundBlaster 16 ISA PnP биш карт snd_sbc(4) драйверийг snd_sb16-тай цуг ашиглах болно. Энэ картны хувьд дараах мөрүүдийг цөмийн тохиргооны файлд нэмэх хэрэгтэй:

device snd_sbc
device snd_sb16

бөгөөд бас доор дурдсаныг /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 I/O порт болон IRQ 5-ыг ашиглаж байна.

/boot/device.hints файлд ашигласан зөв бичиглэлийн талаар sound(4) драйверийн гарын авлагын хуудас болон ашиглах гэж байгаа драйверийн гарын авлагын хуудсанд өгүүлсэн байдаг.

Дээр үзүүлсэн тохируулгууд нь анхдагчууд юм. Зарим тохиолдолд та IRQ юм уу эсвэл бусад тохируулгуудыг өөрийн картдаа тааруулан өөрчлөх хэрэг гарч болох юм. Энэ картны талаар дэлгэрэнгүй мэдээллийг snd_sbc(4) гарын авлагын хуудаснаас үзнэ үү.

8.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 төхөөрөмжүүд гарч ирэхгүй байвал буцаад урьд нь юу хийснийгээ дахин шалгах хэрэгтэй. Өөрийн цөмийн тохиргооны файлыг дахин шалгаж зөв төхөөрөмжийн драйвер сонгогдсон эсэхийг шалгаарай. Нийтлэг асуудлууд Хэсэг 8.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 нь ямар ч файл байж болно. Энэ тушаалын мөр нь шуугиан үүсгэх ёстой бөгөөд энэ нь уг дууны карт ажиллаж байгааг баталж байгаа юм.

Тэмдэглэл: Төхөөрөмжийн цэгүүд болох /dev/dsp* шаардлагатай тохиолдолд автоматаар үүсдэг. Хэрэв тэдгээр нь ашиглагдаагүй бол байхгүй байх бөгөөд ls(1) тушаалын гаралтад харагдахгүй байна.

Дууны картын холигчийн түвшингүүдийг mixer(8) тушаалаар өөрчилж болно. Илүү дэлгэрэнгүйг mixer(8) гарын авлагын хуудаснаас олж болно.

8.2.2.1. Нийтлэг асуудлууд

Алдаа Шийдэл
sb_dspwr(XX) timed out

I/O порт зөв тохируулагдаагүй.

bad irq XX

IRQ буруу тохируулагдсан. Тохируулагдсан IRQ болон дууны IRQ адил байгаа эсэхийг шалгана.

xxx: gus pcm not attached, out of memory

Төхөөрөмжийн ашиглах хангалттай санах ой байхгүй байна.

xxx: can't open /dev/dsp!

Өөр програм төхөөрөмжийг онгорхой барьж байгаа эсэхийг fstat | grep dsp тушаалаар шалгана. Дурдахад илүүдэхгүй хэргийн эзэд бол esound болон KDE-ийн дууны дэмжлэгүүд юм.

Өөр нэг асуудал бол орчин үеийн график картууд ихэвчлэн HDMI төст зүйлсүүдтэй ажиллахын тулд өөрсдийн дууны драйвертай ирдэг. Энэ дууны төхөөрөмж нь жинхэнэ дууны картаас өмнө танигдах тохиолдол байдаг бөгөөд ингэснээр дууны карт нь анхдагч тоглуулагч төхөөрөмж хэлбэрээр ашиглагдахгүй болдог. Үүнийг шалгахын тулд dmesg ажиллуулж pcm гэж байгаа эсэхийг шалгаарай. Гаралт нэг иймэрхүү байна:

...
hdac0: HDA Driver Revision: 20100226_0142
hdac1: HDA Driver Revision: 20100226_0142
hdac0: HDA Codec #0: NVidia (Unknown)
hdac0: HDA Codec #1: NVidia (Unknown)
hdac0: HDA Codec #2: NVidia (Unknown)
hdac0: HDA Codec #3: NVidia (Unknown)
pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0
pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0
pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0
pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0
hdac1: HDA Codec #2: Realtek ALC889
pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1
pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1
pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1
pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1
...

Энд график карт (NVidia) нь дууны картаас (Realtek ALC889) өмнө танигдсан байна. Дууны картыг анхдагч тоглуулагч төхөөрөмж хэлбэрээр ашиглахын тулд hw.snd.default_unit-г тоглуулахад ашиглах хэрэгслээр солих хэрэгтэй, өөрөөр хэлбэл:

# sysctl hw.snd.default_unit=n

Энд n нь ашиглах дууны төхөөрөмжийн тоо бөгөөд жишээн дээр 4 байна. Дараах мөрийг /etc/sysctl.conf файлд нэмж өгөн энэ өөрчлөлтийг байнгын болгож болно:

hw.snd.default_unit=4

8.2.3. Дууны олон эхүүдийг хэрэглэх нь

Хувь нэмэр болгон оруулсан Муниш Чопра.

esound эсвэл artsd нь зарим нэг програмуудтай дууны төхөөрөмжийг хуваалцахыг дэмждэггүй бөгөөд энэ тохиолдолд заримдаа зэрэг тоглуулах чадвартай дууны олон эхүүдтэй байх туйлын сонирхол байдаг.

FreeBSD нь sysctl(8) хэрэгслийн тусламжтай идэвхжүүлж болох Виртуал Дууны Сувгуудын тусламжтай үүнийг хийх боломжийг танд олгодог. Виртуал сувгууд нь цөмд дууг холих замаар өөрийн дууны картын тоглуулалтыг олон болгохыг танд зөвшөөрдөг.

Виртуал сувгуудын тоог тохируулах sysctl-ийн гурван хувьсагч байдаг бөгөөд хэрэв та root хэрэглэгч бол иймэрхүү маягаар үүнийг тохируулж болно:

# sysctl dev.pcm.0.play.vchans=4
# sysctl dev.pcm.0.rec.vchans=4
# sysctl hw.snd.maxautovchans=4

Дээрх жишээ нь дөрвөн виртуал сувгийг хуваарилж байгаа бөгөөд энэ тоо нь өдөр тутмын хэрэглээнд зориулагдсан практик тоо юм. dev.pcm.0.play.vchans=4 болон dev.pcm.0.rec.vchans=4 нь pcm0-ийн тоглуулах болон бичих виртуал сувгуудын тоо бөгөөд төхөөрөмжийг залгасны дараа тохируулах боломжтой болдог. hw.snd.maxautovchans нь kldload(8) ашиглан залгагдах үед шинэ аудио төхөөрөмжид өгөгдөх виртуал сувгуудын тоо юм. pcm төхөөрөмж нь тоног төхөөрөмжийн драйверуудаас тусдаа дуудагдаж болох учраас hw.snd.maxautovchans нь дараа нь залгагдах төхөөрөмжүүдэд өгөгдөх виртуал сувгуудын тоог хадгалдаг. Дэлгэрэнгүй мэдээллийг pcm(4) гарын авлагын хуудаснаас үзнэ үү.

Тэмдэглэл: Төхөөрөмжийг ашиглаж байхад та виртуал сувгуудын тоог өөрчилж чадахгүй. Эхлээд хөгжим тоглуулагчид юм уу эсвэл дууны дэмонууд зэрэг төхөөрөмжийг ашиглаж байгаа програмуудыг хаах хэрэгтэй.

Зөв pcm төхөөрөмж /dev/dsp0-ийг хүсэх програмд мэдэгдэлгүйгээр автоматаар хуваарилагдах болно.

8.2.4. Холигчийн сувгуудын анхдагч утгуудыг тохируулах

Хувь нэмэр болгон оруулсан Жозеф Эл-Рэйэс.

Өөр өөр холигчийн сувгуудын анхдагч утгууд нь pcm(4) драйверийн эх кодонд бичигдэж хийгдсэн байдаг. Холигчийн ажиллуулах явцад санагдсан утгуудыг тохируулах боломжийг олгодог олон төрлийн програмууд болон дэмонууд байдаг боловч энэ нь цэвэр шийдэл биш юм. Холигчийн анхдагч утгуудыг драйверийн түвшинд тохируулж болдог. Үүнийг /boot/device.hints файлд тохирох утгуудыг тодорхойлон хийдэг. Өөрөө хэлбэл:

hint.pcm.0.vol="50"

Энэ нь pcm(4) модуль ачаалагдах үед дууны сувгийн чангыг анхдагч утга 50 гэж тохируулах болно.

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.