Advanced Linux Sound Architecture

Дана стаття є вільним перекладом офіційне керівництва по установці Alsa для звукових карт CM87x8 PCI.

Зміст:

1)Опції модуля для snd-cmipci
2)Вступ
3)Швидка установка
4)Установка підтримки modprobe і kmod
5)Коротке пояснення того, що відбувається у файлі /etc/modules.conf
6)Файл .asoundrc

Опції модуля для snd-cmipci

o Опис: «C-Media CMI8x38 PCI»
o Автор: «Takashi Iwai»
o Ліцензія: «GPL»
o Параметр: index int array (хв = 1, макс = 8), опис «Index value for C-Media PCI soundcard.»
o Параметр: string id array (хв = 1, макс = 8), опис «string ID for C-Media PCI soundcard.»
o Параметр: enable int array (хв = 1, макс = 8), опис «Enable C-Media PCI soundcard.»
o Параметр: mpu_port long array (хв = 1, макс = 8), опис «MPU-401 port.»
o Параметр: fm_port long array (хв = 1, макс = 8), опис «FM port.»

Вступ
Для того, щоб змусити драйвери Linux працювати, є два шляхи — «вкомпилить» їх прямо в ядро або побудувати як окремі модулі. Прочитайте Kernel-HOWTO щоб детальніше дізнатися про компіляції ядра.

Ви повинні включити підтримку звуку (модуль soundcore). При складанні ядра пошукайте у секції «Sound driver» — він повинен йти першим за списком. Більшість включають його як модуль. Це дозволяє вам завантажувати і вивантажувати його вручну — наприклад, якщо у вас декілька звукових карток, або ви займаєтеся налагодженням програм (або просто використовуєте софт), які можуть викликати падіння драйверів, ну і звичайно, це дає вам більший контроль над системою.

Більшість сучасних дистрибутивів йде з модулем soundcore. Ви можете перевірити це різними шляхами. Найпростіший — надрукувати в консолі

modinfo soundcore

Якщо ця команда покаже вам щось, відмінне від «modinfo: could not find module soundcore» — значить вам немає потреби перезбирати ядро. (Примітка перекладача — якщо у вас модуль не знайдений, а звук в системі є — значить підтримка звуку вбудована в ядро)

Швидка установка

Увага! Якщо ви використовуєте cvs то ви повинні виконати

./cvscompile або make build

А не

./configure

Подальші дії виконуйте в консолі:

Створіть папку, де будуть лежати исходники alsa

cd /usr/src
mkdir alsa
cd alsa
cp /downloads/alsa-* (примітка перекладача — ця команда має на увазі, що у вас є каталог /downloads/, де лежать файли alsa. Тобто ви повинні виконати її у вигляді
«cp /шлях/до/ваших/скачаним/файлів/alsa-* .» (Без лапок!) Наприклад
«cp /home/darkwizard/downloads/night/alsa-* .» )

Тепер розпакуйте і встановіть пакет alsa-driver

bunzip2 alsa-driver-xxx
tar -xf alsa-driver-xxx (Примітка перекладача — тут і далі замість цих двох команд можна використовувати одну «tar -jxvf alsa-driver-xxx»)
cd alsa-driver-xxx
./configure –with-cards=cmipci –with-sequencer=yes;make;make install

Увага! Якщо ви використовуєте драйвера старше 0.9.4, то виконайте

./snddevices

Якщо ви використовуєте devfs то ви НЕ повинні виконувати скрипт snddevices

Цей скрипт встановить доступ до створених пристроїв тільки для root’а, тому виконайте

chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi

Далі розпакуйте і встановіть пакет alsa-lib

cd ..
bunzip2 alsa-lib-xxx
tar -xf alsa-lib-xxx
cd alsa-lib-xxx
./configure;make;make install

Далі розпакуйте і встановіть пакет alsa-utils

cd ..
bunzip2 alsa-utils-xxx
tar -xf alsa-utils-xxx
cd alsa-utils-xxx
./configure;make;make install

А тепер вставте модулі в ядро

modprobe snd-cmipci;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss

Увага! Для драйверів старше 0.9.Використовуйте 0beta11

modprobe snd-card-cmipci

Тепер залишилося виставити рівень гучності. За замовчуванням, звук на всіх каналах вимкнений. Ви повинні використовувати програми-«міксери» для його включення, наприклад програму alsamixer з пакету alsa-utils.

alsamixer

Також ви можете поглянути на файл utils/alsasound. Цей скрипт був створений для дистрибутива Red Hat. але він може працювати і на інших дистрибутивах, які використовують для инициализирующих скриптів стиль «System V». Це дозволить вам автоматично завантажувати модулі при завантаженні. Якщо хочете, можете «вкомпилить» їх я ядро і не зв’язуватися з усіма цими инициализирующими скриптами.

Установка підтримки modprobe і kmod

Перш ніж писати в службу підтримки «У мене немає файлу /etc/modules.conf, де я можу його знайти…», врахуйте, що в різних дистрибутивах його місцезнаходження і назва різні, наприклад він може називатися /etc/conf.modules. Загалом оби файли идеинтичны, але більш нові версії modutils використовують /etc/modules.conf. Не варто занадто про це турбуватися — просто оновити версію modutils — це вирішить проблему.

Тут наведено приклад. Скопіюйте та вставте його в кінець вашого файла /etc/modules.conf

Увага! Користувачі Debian повинні зберегти цю інформацію в файл, що лежить в /etc/modutils/ (як правило — /etc/modutils/alsa) і виконати «update-modules» (без лапок)

# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-cmipci
# module options should go here

# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0

# card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

Для копіювання і вставки вищесказаного ваш /etc/modules.conf скористайтеся інструкцією (http://www.alsa-project.org/alsa-doc/doc-php/file-edit.php)

Коротке пояснення того, що відбувається у файлі /etc/modules.conf

«Рідні» пристрої

Після основної завантаження мультиплексера він запитує модуль звукової карти (Примітки перекладача — тут і далі йдуть технічні терміни — наперед перепрошую, якщо неправильно витлумачив що-небудь). Рядок snd-card-%i служить для запиту пристрою, де %i — номер звукової карти від нуля до сімки. Рядок sound-slot-%i служить для запиту пристрою, де %i — номер слота для ALSA — зазвичай він идеинтичен номеру картки. Рядок опцій дозволить вам встановити різні установки ДО завантаження самого модуля. Рядок snd_id дозволить вам встановити ім’я карти яке повертається у файлі /proc/asound/cards. Інші опції специфічні для різних звукових карт. Докладніше — дивіться файл INSTALL

[email protected]#pico /etc/modules.conf

# ALSA portion
alias snd-card-0 snd-interwave
alias snd-card-1 snd-cmipci
options snd-cmipci id=«first» enable_midi=«1»

# OSS/Free portion
alias sound-slot-0 snd-card-0
alias sound-slot-1 snd-card-1

Увага! Для драйверів старше 0.9.Використовуйте 0rc5

options snd-cmipci snd_id=«first» snd_enable_midi=«1»

Префікс «snd_» був вилучений з опцій модуля для відповідності стандартам ядра

Автоматичне завантаження емуляції OSS (примітка перекладача — OSS — Open Sound System — досить поширена раніше звукова система, в даний час витісняється alsa, але деякі програми ще використовують OSS — для них у alsa є її(звукової системи) емуляція.)

Ми закінчили з конфігурацією ALSA, але нам може знадобитися запуск модуля емуляції OSS. В даний час тільки один модкль не залежить від інших, так що він повинен бути завантажений окремо — snd-pcm1-oss.o. Рядок sound-service-%i-%i служить для запиту, де перший %i позначає номер слота (тобто номер звукової карти) а другий %i позначає номер сервісу.

[email protected]#pico /etc/modules.conf

# OSS/Free portion — card #1
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

# OSS/Free portion — card #2 (cmipci)
alias sound-slot-1 snd-card-1
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-3 snd-pcm-oss
alias sound-service-1-12 snd-pcm-oss

Псевдонім(alias) для snd-seq-oss не обов’язковий для другого пристрою, так як є тільки один /dev/sequencer, незалежно від того, скільки у вас пристроїв.

Файл .asaundrc

Більше про цей файл можна знайти тут (http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php?module=cmipci)

Цей файл дозволить вам збільшити контроль над вашою карткою. Також деякі дуже корисні додатки не будуть без нього працювати. Цей файл містить визначення різних доступних звукових карт для вашої системи. Так само він надасть вам доступ до плагіну pcm з пакету alsa-lib. Це дозволить вам робити всякі хитрі речі, типо комбінації ваших картв одну і т. д.

Далі йдуть найбільш базові визначення.

Створіть файл .asoundrc у вашій домашній директорії

vi /home/yourname/.asoundrc

І вставити туди наступні рядки:

pcm.cmipci {
type hw
card 0
}

ctl.cmipci {
type hw
card 0
}

Переклад належить DarkWizard’у. Всі права захищені.

Оригінал статті www.alsa-project.org/alsa-doc/doc-php/template.php?module=cmipci