Home    Решения    Услуги    Download    Публикации    Работа    Продукти    Документи
 

 

 
Print this page/Отпечатай тази страница  

 

Инсталиране на Yamaha 724 под Linux чрез ALSA драйвер  

от Александър Цанков <[email protected]>

 

За писането на тези редове съм използвал Alsa-sound-mini-HOWTO от Valentijn Sessink, файловете с инструкции от пакетите със сорс кодовете на драйверите и другите програми, както и собствения си опит при компилирането инсталирането на драйверите.

В началото - може би няколко думи за ALSA. ALSA(Advanced Linux Sound Architecture) звуковите драйвери могат да се използват за замяна на тези от OSS/Free, тъй като са напълно съвместими, а според думите на авторите им дори надвишават текущите възможности на OSS API (с други думи - съвместими, но по-добри). От версия 0.4.0 ALSA поддържа само 2.2.+ ядрата. Ядрата 2.0 вече не се поддържат.

Преди инсталирането на драйверите би било полезно да прочетете внимателно информацията за insmod, modprobe, kmod и за isapnp (ако имате ISA PnP звукова карта), както и за компилиране на ядрото. За поддръжка на Yamaha 72x/74x/75x ще ви трябва версия на alsa-driver 0.5.9 или по-висока. За целта изтеглете пакетите alsa-driver-0.5.9.tar.bz2, alsa-lib-0.5.9.tar.bz2 и alsa-utils-0.5.9.tar.bz2 (може и alsaconf-0.4.*.tar.gz) www.alsa-project.org. Преди да започнете същинското компилиране и инсталиране на драйверите, ще трябва да компилирате и инсталирате ядро на операционната система. Това се налага поради следните причини: - в ядрото трябва да има вкючена поддръжка на звукови карти (отговор с Yes на въпросите CONFIG_SOUND и CONFIG_SOUND_OSS); - за компилирането на драйверите са нужни някои от кофигурационните файлове, създадени след подготовката за компилиране на ядрото (make config, make dep).

При конфигурирането на ядрото в частта за звук не е нужно да включвате поддръжка на конкретни звукови карти, защото така или иначе при инсталирането на ALSA-драйверите, стандартните драйвери за звукови карти, получени при компилиране на ядрото ще бъдат изтрити (така че внимавайте, ако само сте рещили да експериментирате с ALSA, а всъщност имате работеща звукова карта с OSS драйвера - това не важи за Yamaha 724, обаче -;)). Забележка - след компилирането на ядрото не изтривайте останалите от компилацията файлове с командата make mrproper.

След това започва същинската част по инсталирането на ALSA драйверите:

Разархивирайте гореуказаните пакети Можете да извършите това в директорията, където сте разархивирали сорса на ядрото (/usr/src). За това ще ви трябват суперпотребителски права, така че напишете "su" и след това въведете паролата на root (помнете, че не е проява на голяма мъдрост да използвате системата си като суперпотребител през цялото време, тоест log-вайте се като обикновен потребител и отваряйте суперпотребителски шел само когато е необходимо). Така че:

#cd /usr/src
#tar  zxf ~/alsa-driver-0.5.9.tar.bz2
#tar  zxf ~/alsa-lib-0.5.9.tar.bz2
#tar  zxf ~/alsa-utils-0.5.9.tar.bz2

Компилиране

Вие се нуждаете от драйверите преди да можете да компилирате и използвате библиотеките. Библиотеките ще са ви нужни преди да можете да компилирате или използвате програмите от пакета alsa-utils. Затова следвайте порядъка:

#cd alsa-driver-0.5.9
#./configure .

Ако имате ISA Plug & Play звукова карта, използвайте ключа --with-isapnp=yes;(Не важи за Yamaha 72x/74x/75x)
Ако искате поддръжка на sequencer, използвайте ключа --with-sequencer=yes;
Ако не искате емулация на OSS/Free, използвайте ключа --with-oss=no;
Ако искате да включите режима на debug, използвайте ключа --with-debug=full ;
Ако искате да дебъгвате детектирането на звуковата ви карта, използвайте ключа --with-debug=detect;
При мен командата беше:

#./configure --with-sequencer=yes --with-debug=detect

След завършването на работата на скрипта стартирайте make install. Изпълнението на този скрипт ще отнеме повече време и след завършването му би трябвало в директорията /lib/modules/номер_на_версията_на_ядрото/misc да видите модули с имена snd-card-ymfpci.о и snd-ymfpci.о (специално за Yamaha 72x/74x/75x), а в /etc/rc.d/init.d (за SysV-подобно първоначлно зареждане)- файла alsasound.

Стартирайте скрипта ./snddevices, за да създадете новите звукови устройства в директорията /dev. Информацията, изведена от тази команда трябва да е:

[root@localhost alsa-driver-0.5.9]# ./snddevices
Creating /dev/mixer?... done
Creating /dev/sequencer... done
Creating /dev/midi?... done
Creating /dev/dsp?... done
Creating /dev/audio?... done
Creating /dev/sndstat... done
Creating /dev/music... done
Creating /dev/dmmidi?... done
Creating /dev/dmfm?... done
Creating /dev/amixer?... done
Creating /dev/adsp?... done
Creating /dev/amidi?... done
Creating /dev/admmidi?... done
create symbolic link /dev/mixer to /dev/mixer0
create symbolic link /dev/midi to /dev/midi0
create symbolic link /dev/dsp to /dev/dsp0
create symbolic link /dev/audio to /dev/audio0
create symbolic link /dev/sequencer2 to /dev/music
create symbolic link /dev/adsp to /dev/adsp0
create symbolic link /dev/amidi to /dev/amidi0
ALSA dynamic sound device filesystem
create symbolic link /dev/snd to /proc/asound/dev
ALSA loader devices
Creating /dev/aload?... done
Creating /dev/aloadSEQ... done

След това трябва да компилирате и инсталирате библиотеките:

#cd ../alsa-lib-0.5.9
#./configure
#make
#make install

И накрая пакета utils

#cd ../alsa-utils-0.5.9
#./configure
#make
#make install

Следва частта за конфигуриране на процеса на зареждане на модулите(драйверите) за поддръжка на звуковата карта. По принцип това става с alsaconf (програмка, подобна на sndconfig) от пакета alsaconf-0.4.*.tar.gz, но за съжаление в последната версия, която открих на сайта, няма заложена Yamaha 72x/74x/75x,. Все пак програмата може да се използва. Дефинирането на последователността на зареждане на модулите става във файла /etc/conf.modules (или modules.conf). Програмката alsaconf пише точно там, като преди това създава копие на файла под името conf.modules.old, но въпреки всичко може да си направете копие на файла (например conf.modules.before_alsa). Стартирайте alsaconf в терминален прозорец. Програмата се опитва да детектира вашата карта, но в случая няма да може(нали Yamaha 724 я няма заложена в списъка на картите). След като не я открие, alsaconf ви предлага набор от звукови карти, които поддържа. Изберете някоя друга карта - просто за да видите синтаксиса на добавяния текст. Следват ред менюта за избор на I/O портове, прекъсвания, DMA канали и т.н. Няма занчение какво ще изберете, защото така или иначе нашата карта е друга. Запомнете (или запишете) стойностите, които ви се предлагат, защото по тях по-лесно ще се ориентирате по-късно в добавения от alsaconf текст в conf.modules. След преминаването през всичките параметри програмката ще ви попита искате ли да запишете промените във файла /etc/conf.modules. Отговорете с Yes и задръжте темпото с alsaconf.

Отворете /etc/conf.modules с текстов редактор и разгледайте какво е добавено от програмката - редовете започват с:

#---BEGIN: Generated by ALSACONF, do not edit.
# --- ALSACONF version0.4.3b ---

Отворете файла INSTALL от директорията със сорса alsa-drivers-0.5.9 и разгледайте частта за Yamaha 72x/74x/75x - започва с:

Module snd-card-ymfpci.o
------------------------

Обърнете внимание на стойностите на snd_mpu_port=, snd_mpu_irq= и snd_fm_port=. Това са стойностите на входно/изходните портове и прекъсването, използвани от картата. В линиите, генерирани от alsaconf, променете имената на модулите на картите, така че да съответстват на тези от файла INSTALL - ако трябва да изтриете нещо-изтрийте го, ако трябва да добавите-добавете. Важното е да спазите последователността и да улучите правилните стойности за прекъсванията и I/O адресите. За размерите на буферите snd_dac_frame_size, snd_adc_frame_size и snd_ac97_frame_size не мога да ви дам съвет - аз използвах сравнително консервативната стойност от 32kB. Ако на същият компютър имате Windows, можете да потърсите всичките тези стойност оттам (при мен проработиха). След като направите необходимите промени ги запазете, като запишете файла. При мен тези редове са:

# --- BEGIN: Generated by ALSACONF, do not edit. ---
# --- ALSACONF verion 0.4.3b ---
alias char-major-116 snd
alias snd-card-0 snd-card-ymfpci
alias char-major-14 soundcore
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
options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 snd_device_gid=81 snd_device_uid=0
options snd-card-ymfpci snd_index=0 snd_id=CARD_0 snd_mpu_port=0x330 snd_mpu_irq=5 snd_fm_port=0x388 snd_dac_frame_size=32 snd_adc_frame_size=32 snd_ac97_frame_size=32
#--- END: Generated by ALSACONF, do not edit. ---

Обърнете внимание на факта, че двата реда, започващи с options в общия случай не трябва да преминават на нов ред, така че внимавайте с текстовия редактор, който използвате.

След това се прехвърлете отново на прозореца с alsaconf и продължете изпълненитето и. Програмата ще се опита да стартира /etc/rc.d/init.d/alsasound (/etc/rc.d/init.d/alsasound start) и след това да стартира amixer за повишаване нивата на Master и PCM каналите. В следващия прозорец се описва работата с alasmixer - прегледайте ги. Следва предложение за просвирване на звук от системата ви. Ако имате голям усилвател, намалете нивото на усилването и се надявайте да чуете гласа на Линус (Торвалд). Е, аз не го чух - най вероятно необходимият .wav файл не е записан на точното място в системата ми, но ще го преживея някак си. Освен това програмката ви съобщава, че когато спрете alsasound (/etc/rc.d/init.d/alsasound stop), настройките на миксера ще бъдат записани във файла /etc/asound.conf. Те ще бъдат възстановени следващия път, когато alsasound се използва за зареждане на ALSA. Е, при мен това не е точно така, защото никога не мога да чуя KDE_Startup.wav при първоначалното стартиране на системата, но и това не е беда. Между другото, ако ползвате KDE, може да си поиграете, като стартирате едновременно kmix и alsamixer и променяте нивата на каналите с kmix....

Не забравяйте да добавите alsasound към скриптовете за първоначално зареждане - не знам дали има точно определено място, но може би някъде в началото е добре. Това можете да направите от команден ред чрез създаване на символични връзки (за SysV - init системите) от /etc/rc.d/init.d/alsasound към съответните нива:

#ln -s /etc/rc.d/init.d/alsasound /etc/rc.d/rc3.d/SXXalsasound
#ln -s /etc/rc.d/init.d/alsasound /etc/rc.d/rc5.d/SXXalsasound


като заместите XX със съответните цифри в зависимост от това кога точно искате да се стартира alsasound.

Рестартирайте системата и в екрана за първоначално зареждане трябва да видите:

Starting alsa sound driver snd-card-ymfpci

Проверете след зареждането log-файловете (/var/log/kern.log и /var/log/messages) за евентуални грешки в зареждането. Е, ако всичко е минало добре, ще можете да слушате любимите си CD-та, както и всякакви видове .wav, .au, mp3 и т.н. Остава ви само да се разходите из Internet за рипъри и енкодери за mp3 и да започнете пълненето на харддиска с музикални файлове.

Успех!

Александър Цанков
[email protected]