PDA

View Full Version : مقاله: ارتقای درایور کارت صدا ALSA در UBUNTU



raravaice
دوشنبه 18 مرداد 1389, 14:51 عصر
در این مقاله سعی شده تا روش راحتی برای ارتقای درایور کارت صدای ALSA آموزش داده شود و همچنین آموزش ترفندی برای از بین بردن محدودیت کارت صدای مجازی Dummy

مرحله اول :
نسخه فعلی کارت صدای خود را بیابید.



cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.18rc3.


مرحله دوم :

برای جلوگیری از مشکل در هنگام Upgrade ابتدا درایور فعلی را Stop کنید.



sudo /etc/init.d/alsa-utils stop


مرحله سوم :

نصب پکیجهای مورد نیاز.



sudo apt-get -y install build-essential ncurses-dev gettext xmlto libasound2-dev
sudo apt-get -y install linux-headers-`uname -r` libncursesw5-dev



مرحله چهارم:

دریافت سورس های مورد نیاز که در این زمان آخرین نسخه از ALSA میباشد.



rm -rf ~/alsa* ~/.pulse*
sudo rm -rf /usr/src/alsa
sudo mkdir -p /usr/src/alsa
cd /usr/src/alsa
wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.23.tar.bz2
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.23.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.23.tar.bz2



مرحله پنجم :

باز کردن بسته ها.



sudo tar xjf alsa-driver*
sudo tar xjf alsa-lib*
sudo tar xjf alsa-utils*


مرحله ششم:

نصب بسته alsa-driver



cd alsa-driver*
sudo ./configure
sudo make
sudo make install


مرحله هفتم :

نصب بسته alsa-lib



cd ../alsa-lib*
sudo ./configure
sudo make
sudo make install


مرحله هشتم :
نصب بسته alsa-utils



cd ../alsa-utils*
sudo ./configure
sudo make
sudo make install


توجه : امکان دارد در این مرحله بعد از configure با مشکلات زیر مواجه شوید :


checking form.h presence... yes
checking for form.h... yes
checking for new_panel in -lpanelw... no
configure: error: panelw library not found


و برای حل این مشکل میبایست Symbol Link های مورد نیاز را ایجاد کنید.



sudo ln -s libpanelw.so.5 /usr/lib/libpanelw.so
sudo ln -s libformw.so.5 /usr/lib/libformw.so
sudo ln -s libmenuw.so.5 /usr/lib/libmenuw.so
sudo ln -s libncursesw.so.5 /lib/libncursesw.so


حال میتوانید با استفاده از دستور :



cat /proc/asound/version

از نصب مطمئن شوید و در صورتی که همچنان نسخه پیشین را مشاهده کردید نیاز به Restart سیستم پیدا خواهید کرد.


قسمت دوم مقاله (از بین بردن محدودیت در کارت صدای مجازی) :
برای استفاده از بعضی از برنامه نیاز هست به وجود کارت صدا در سیستم مثل pulse audio ، Skype و .... اما امکان دارد ما دسترسی به کارت صدا نداشته باشیم و یا سرور های مورد استفاده ما از کارت صدا بر خوردار نباشند به همین منظور میتوانیم از کارت صدای مجازی Dummy استفاده کنیم.

دستور زیر را اجرا کنید.



root@cl-t1c54:~# aplay -l
**** List of PLAYBACK Hardware Devices ****



همانطور که ملاحظه میکنید در این لیست از کارت صدا خبری نیست حال ما با استفاده از دستور زیر میتوانیم کارت صدای مجازی خود را بارگزاری کنیم.



modprobe snd_dummy


پس :



aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: Dummy [Dummy], device 0: Dummy PCM [Dummy PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7


یک کارت صدا بار گزاری شد که شامل 8 Channel میباشد.
میتوانیم کارتهای بیشتری را اضافه کنیم برای افزایش Channel ها ابتدا کارت فعلی را حذف میکنیم:



rmmod snd-dummy


حال با دستور زیر به هر تعدادی که نیاز دارید کارت صدا اضافه کنید :



modprobe snd_dummy enable=1,1


حال ما 2 کارت صدای مجازی داریم که هر کدام دارای 8 Channel هستند. شما میتوانید به تعداد مورد نیاز خود کارت صدا اضافه کنید تنها با اضافه کردن 1 به انتهای دستور.



aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Dummy [Dummy], device 0: Dummy PCM [Dummy PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 2: Dummy_1 [Dummy], device 0: Dummy PCM [Dummy PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7




حال به محدودیت میپردازیم، همانطور که مشاهده میکنید هر کارت صدا به 8 Channel محدود میباشد و گهگاهی این محدودیت اسباب درد سر خواهد شد برای رفع این محدودیت به اندکی تغییر در سورس برنامه و کامپایل مجدد داریم که به طور کامل توضیح داده خواهد شد.

به فولدر موجود alsa-driver وارد شوید :



cd /usr/src/alsa/alsa-driver*
cd alsa-kernel
cd drivers
vim dummy.c



به خط 66 رفته و تغییرات زیر را اعمال کنید :



- static int pcm_substreams[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 8};
+ static int pcm_substreams[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 128};


حال سورس را از ابتدا کامپایل و نصب کنید تا هر کارت صدای مجازی شما دارای 128 Channel شود.


--------------------------------------------------------

با تشکر از کاربرهای عزیز حامد مصافی (http://barnamenevis.org/forum/member.php?u=6808) و Sarkhosh (http://barnamenevis.org/forum/member.php?u=62642) و تمام اشخاصی که معلمان خوبی برای من در تمام مراحل زندگی بوده اند.

پ.و : تمام مراحل فوق بر روی توزیع UBUNTU به مرحله اجرا رسیده است.

"کلیه حقوق مادی و معنوی این مقاله آموزشی متعلق به سایت barnamenevis.org میباشد و درج آن تنها با ذکر منبع مجاز است. "

با احترام
محمد جاهدمنش