FreeBSD гарын авлага
Өмнөх | Бүлэг 8. Мультимедиа | Дараах

# 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 гэж тохируулах болно.

Өмнөх | Эхлэл | Дараах
Мультимедиа | Дээш | MP3 аудио

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

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