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 میباشد و درج آن تنها با ذکر منبع مجاز است. "
با احترام
محمد جاهدمنش
مرحله اول :
نسخه فعلی کارت صدای خود را بیابید.
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 میباشد و درج آن تنها با ذکر منبع مجاز است. "
با احترام
محمد جاهدمنش