بنام خدا
شیوه راه اندازی کارتهاي DVB در لینوکس:
مطالبی که خدمت شما تقدیم میگردد،درباره شیوه نصب و راه اندازي کارتهای ماهواره(DVB) از نوع PCI میباشد.این کارتها به دو دسته کلي تقسیم میشوند:
1)انواعی که برای نمایش تصاویر ویدویي MPEG،مجهز به سخت افزارهاي مخصوص هستند.همانطور که میدانید در این کارتها تمام مراحل پردازش تصاویر توسط این سخت افزارها صورت گرفته،بنابراین این کارتها نیاز به منابع سیستمی بسیار کمی دارند.از معروفترین این کارتها میتوان SkyStar 1 و NEXUS را نام برد که از چیپ AV 7110 یاAV 7111 برای پردازش تصاویر استفاده میکنند.این کارت توسط شرکتهای زیادی از جمله happauge,technotrend,siemens تولید گردیده،ولی همه آنها سخت افزاري مشابه داشته و در کل در لینوکس،(FF card(full fitured card نامیده میشوند،بدلیل اینکه از نظر سخت افزاري کامل بوده و تمام سخت افزارهاي یک رسیور خانگي در آنها وجود دارد.در اینجا چندین نسخه از آنها را ملاحظه می فرمایید:
rev1.3
[img:91eb0c506f]http://www.tambatux.com/images/nexus_rev1.3s.jpg[/img:91eb0c506f]
rev2.2
[img:91eb0c506f]http://www.tambatux.com/images/nexus_rev2.2s.jpg[/img:91eb0c506f]
rev2.3
[img:91eb0c506f]http://www.tambatux.com/images/nexus_rev2.3s.jpg[/img:91eb0c506f]
از نظر کیفیت سخت افزاري،پشتيباني نرم افزاري،قدرت Tuner و ثبات عملکرد در لینوکس،این کارت اولین گزینه شما خواهد بود.ولی در اکثر موارد قیمت بسیار بالاي این کارت،دوستداران DVB را بسمت کارتهای ارزانتر سوق میدهد،یعنی انواع زیر:
2.این دسته از کارتها،هر چند متنوع بنظر میرسند،ولی دارای ویژگي مشترکي هستند:در آنها عمل پردازش تصاویر بکمک منابع سیستمی انجام میگردد که با توجه به قدرت بالای پردازنده هاي کنونی،اصلا ایده بدی نیست!
سخت افزار آنها هم نسبت به نوع قبل بسیار کمتر و خلاصه تر شده،یعنی سخت افزارهاي غایب آنها توسط نرم افزار،شبیه سازي میشوند و اغلب،software mpeg player يا budget (اقتصادي) نامیده میشوند.
معروفترین این کارتها بترتیب کیفیت شامل:
NOVA(based on saa7146 from philps)
nova
[img:91eb0c506f]http://www.tambatux.com/images/novas.jpg[/img:91eb0c506f]
nova-ci
[img:91eb0c506f]http://www.tambatux.com/images/nova_cis.jpg[/img:91eb0c506f]
skystar2(based on b2c2 flexcopII from b2c2inc)
rev2.3
[img:91eb0c506f]http://www.tambatux.com/images/ss2_rev2.3s.jpg[/img:91eb0c506f]
rev2.6d
[img:91eb0c506f]http://www.tambatux.com/images/ss2_rev2.6ds.jpg[/img:91eb0c506f]
twinhan(based on fusion878 from conexant)
twinhan(vp-1020)
[img:91eb0c506f]http://www.tambatux.com/images/twinhans.jpg[/img:91eb0c506f]
twinhan(vp1020a)
[img:91eb0c506f]http://www.tambatux.com/images/vp1020as.jpg[/img:91eb0c506f]
twinhan-ci(vp-1030)
[img:91eb0c506f]http://www.tambatux.com/images/twinhan_ci_s.jpg[/img:91eb0c506f]
اگر کارتDVB ندارید ولی قصد خرید آنرا داشته و انتظار دارید در لینوکس،بدون مشکل کار کند،به نسخه سخت افزاری هر کارت توجه زيادي نماييد.!
نسخه(version)سخت افزاری چیست؟در هر نسخه بدلیل عملکرد بهتر یا کمیاب شدن قطعات قدیمی و آمدن قطعات جدید،از Chip ها یا Tuner هاي متفاوتی استفاده شده است.اگر به تصاویر کارتها توجه کنید،از هر نوع،چند نسخه معرفی شده است.من هم هنگام خریدکارت DVB این موضوع را نمی دانستم،وقتی آنرا خواستم در لینوکس نصب کنم،متوجه شدم در لینوکس پشتيباني نمیشود و مجبور شدم یکسال صبرکنم تا راه انداز(Driver) کارت من هم نوشته شود.برای آگاهی از آخرین اخبار درباره نسخه هاي مختلف DVB که در لینوکس پشتيباني میشوند،به اینجا مراجعه نماييد.
نصب کارت:
همیشه سعی کنید برای نصب کارت DVB،از يک توزیع لينوکس کاملا بروز استفاده نماييد.مثلا من از توزيع PARSIX 0.85 استفاده میکنم.بسته هاي ضروري برای شروع کار عبارتند از:
کد:
acpi acpid alsa alsa-utils at apt-file automake1.8 build-essential bzip2 cvs ccache debconf-utils debhelper dialog
dpatch dvbsnoop dvbtune fakeroot ffmpeg ftp gcc g++ gettext gxine html2text kernel-package libasound2 libasound2-dev
libavahi-qt3-1 libavcodec-dev libavformat-dev libcap-dev libdirectfb libdirectfb-bin libdirectfb-dev libdirectfb-extra
libdfb++ libdfb++-dev libdvb-dev libjpeg62-dev libncurses5-dev libpostproc-dev libqt3-headers libqt3-mt libqt3-mt-dev
libqt3-mt-ibase libqthreads-12 qt3-dev-tools libtool libstdc++6-dev mercurial ntpdate pciutils pkg-config po-debconf
psmisc ssh tk8.3 tvtime udev xfonts-bolkhov-cp1251-75dpi xfonts-bolkhov-cp1251-misc xfonts-cronyx-cp1251-100dpi
xfonts-cronyx-cp1251-75dpi xfonts-cronyx-cp1251-misc
برای شروع نصب به این ترتیب عمل میکنیم:(توجه کنید نام کاربری من tamba ميباشد):
کد:
adduser tamba adm
adduser tamba src
adduser tamba staff
adduser tamba video
chown -R tamba:src /usr/src
chown -R tamba:staff /usr/local/src
حالا نوبت به کامپایل هسته لينوکس میرسد!توجه داشته باشید که راه انداز کارت DVB(و اکثر سخت افزارها) درون هسته قرار دارد.این راه اندازهاي DVB هر چند کار میکنند،ولی استفاده از آنها خالی از اشکال نبوده و در مواردي استفاده از آنها باعث هنگ کردن یا عملکرد غیر طبیعی کارت میشود.بنابراین هنگام پيکربندي هسته دقت کنید که هسته شما از DVB و Video پشتيباني (نداشته)باشد
بطور کلي موارد زیر را رعایت کنید:
Device Drivers --->
Generic Driver Options --->
[ ] Select only drivers that don't need compile-time external firmware
[*] Prevent firmware from being built
Device Drivers --->
Input device support --->
<Event>
Character devices --->
<M> Enhanced Real Time Clock Support
Device Drivers --->
Graphics support --->
<M> Support for frame buffer devices
Device Drivers --->
Graphics support --->
Console display driver support --->
--- VGA text console
[*] Video mode selection support
<M> Framebuffer Console support
<M> nVidia Framebuffer Support
[*] Enable DDC Support
#if your VGA uses ATI chip use this module
<M> ATI Radeon display support
[*] DDC/I2C for ATI Radeon support
Device Drivers --->
I2C support --->
<M> I2C support
<M> I2C device interface
I2C Algorithms --->
<M> I2C bit-banging interfaces
Device Drivers --->
Multimedia devices --->
Digital Video Broadcasting Devices --->
[ ] DVB For Linux
[ ] Video For Linux
پشتيباني از DVB و Video بعدا به هسته اضافه میشود.حالا هسته را کامپایل کرده و با هسته جدید سيستم را راه اندازي نماييد.
کد:
cd /usr/src
wget http://www.tambatux.com/downloads/v4l-dvb.tar.bz2
tar -jxf v4l-dvb.tar.bz2
mv v4l-dvb v4l
cd /usr/src/v4l
chmod 755 *.sh
chmod 644 patches/*.diff
برای ادامه کار لازم است بسته mercurial را نصب کرده باشید.اتصال به اینترنت هم برقرار باشد!
کد:
cd /usr/src/v4l
./get_dvb.sh
بعد از اتمام دريافت میتوانید اتصال به اینترنت را قطع کنید!
کد:
cd /usr/src
ln -s /usr/src/v4l/v4l-dvb /usr/src/DVB
cd /usr/src/DVB
make xconfig
حالا با توجه به نوع کارت،ماژولهاي خود را انتخاب کرده و تمام راه اندازهاي(Drivers) اضافه را حذف کنید.پيکربندي پیشنهادی به اینصورت است:
[ ] Enable drivers not supported by this kernel
Multimedia devices --->
Audio devices for multimedia --->
Multimedia devices --->
<M> Video For Linux
[*] Enable Video For Linux API 1 (DEPRECATED)
--- Enable Video For Linux API 1 compatible Layer
Video Capture Adapters --->
Radio Adapters --->
Digital Video Broadcasting Devices --->
<DABUSB>
--- Video Capture Adapters
[ ] Enable advanced debug functionality
[ ] Autoselect pertinent encoders/decoders and other helper chips
Encoders/decoders and other helper chips --->
< > Virtual Video Driver
Digital Video Broadcasting Devices --->
[*] DVB For Linux
<M> DVB Core Support
[*] Load and attach frontend modules as needed
برای دارندگانFF card
--- Supported SAA7146 based PCI Adapters
<M> AV7110 cards
[ ]Compile AV7110 firmware into the driver
[*] AV7110 OSD support
لازم است بدانید که این کارت بکمک دو راه انداز کار میکند که فقط یکی از آنها در هسته قرار دارد و لازم است راه انداز دوم را جداگانه دريافت نماييد:
کد:
wget http://linuxtv.org/downloads/firmware/dvb-ttpci-01.fw-2622
cp dvb-ttpci-01.fw-2622 /lib/firmware/dvb-ttpci-01.fw
دارندگان کارت :NOVA
[M]Budget cards
[M]Budget cards with onboard CI connector
(ماژول دوم فقط برای دارندگان nova-ci)
دارندگان کارت SkyStar2:
---Supported FlexCopII (B2C2) Adapters
[M]Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters
[M]Technisat/B2C2 Air/Sky/Cable2PC PCI
دارندگان کارت TWINHAN:
<M> BT848 Video For Linux
[*] DVB/ATSC Support for bt878 based TV cards
<M> SAA6588 Radio Chip RDS decoder support on BT848 cards
بعد از انتخاب ماژولها،تنظیمات را ذخیره کرده و خارج شوید:
کد:
make
make install
cd /usr/src/v4l/dvb-apps
make
make install
با کمک ویرایشگر متنی مورد علاقه خود،یک فایل متنی با نام DVB را در قسمت/etc/modprobe.d/ ایجاد کنید.نحوه بارگذاري(Load) شدن ماژولهایDVB هنگام راه اندازي(boot) در این قسمت مشخص میشوند:
خطوط شاملdvb-ttpci برای دارندگانFF card
خطوط شاملbttv برای دارندگانTWINHAN
alias /dev/dvb/* /dev/dvb
alias char-major-212-* dvb-ttpci
options dvb-core dvb_shutdown_timeout=0
options dvb-ttpci tv_standard=0
options bttv card=0x71 i2c_hw=1
اکثر دارندگانtwinhan بخصوص مدلVP-1020A بعد از نصب درایور هنگامbootبا کرنل جدید با هنگ کردن کرنل مواجه میشوند که علت وراه برطرف کردن ان بصورت زیر میباشد
دارندگان این دسته از کارتها حتی هنگام نصب لینوکس در صورتیکه برنامه نصب، کارت انها را بدرستی بشناسد هنگام تخصیص ماجول مناسب برای ان هنگ کرده و برنامه نصب متوقف میشود
هنگام متوقف شدنinstallerمعمولا این پیام جلب توجه میکند
bttv0: subsystem: fefe:0001 (UNKNOWN)
bttv0: using: *** UNKNOWN/GENERIC *** [card=0,autodetected]
توجه کنیدfefe:0001همانid چیپهای کارت است که بدلیل نادرست بودن باعث هنگ کردن ماجول میشود
در اینصورت مجبور میشوید بعد از خاموش کردن سیستم کارت را از سیستم خارج کرده و بدون کارت، نصب لینوکس را از نوشروع کنید
علت این مشکل این است که درایور(ماجول کرنل) برای حضور در کرنل باید مشخصات چیپ تیونر و چیپهای دیگر روی کارت(id) را از یک حافظهeeprom دریافت کرده و ماجولهای مناسب را برای کار انها فراخوانی کند
این حافظه با شماره THDTV20023 روی برد قابل شناسایی است
[img:91eb0c506f]http://www.tambatux.com/images/thdtv20023s.jpg[/img:91eb0c506f]
علت بروز مشکل فوق بخاطر اسیب دیدن محتویات این حافظه است،این حافظه در مقابل نوشته شدن محافظت نشده است یعنیwrite protected نیست بنابراین هنگام بکار بردن درایورهای نامناسب (در ویندوز) براحتی اسیب میبیند
شما میتوانید بکمکi2c (میتوانید انرا در بسته lm-sensorsبیابید)محتویات این حافظه را خوانده و مقادیر انرا تغییر دهید
هنگام استفاده از این برنامه کاملا مراقب و هوشیار باشید چون در صورت اشتباه ممکن است به سایر سخت افزارهای سیستم صدمه وارد شود
کد:
modprobe i2c_dev
i2cdetect -l
خروجی این دستور به اینصورت است
i2c-4 smbus bt878 #0 [hw] Non-I2C SMBus adapter
i2c-3 i2c NVIDIA i2c adapter 2 at 1:00.0 Algorithm unavailable
i2c-2 i2c NVIDIA i2c adapter 1 at 1:00.0 Algorithm unavailable
i2c-1 i2c NVIDIA i2c adapter 0 at 1:00.0 Algorithm unavailable
i2c-0 smbus SMBus I801 adapter at 0400 Non-I2C SMBus adapter
در اینجاi2c-4 مقابلbt878 مشخص کننده شمارهbus کارتtwinhanاست
روش پیداکردن ادرس حافظهeeprom
کد:
i2cdetect 4
مجددا یاداوری میکنم عدد4 همان شمارهbus کارتtwinhanاست
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-4.
I will probe address range 0x03-0x77.
Continue? [Y/n]
با زدن کلیدYکار را دنبال کنید
-----0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- XX XX XX XX XX XX XX XX XX XX XX XX XX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
50: 50 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
70: XX XX XX XX XX XX XX XX
با بررسی خروجی دستور متوجه میشویم که ادرس حافظهeeprom در ادرس0x50 قرار دارد
میتوانید مطمئن باشید در صورتیکه ادرس حافظه فوق در0x50 قرار داشته باشد مشکل قابل حل است در غیر اینصورت توصیه این است که کار را ادامه ندهید(تجربه موثق در این مورد وجود ندارد)
کد:
i2cdump 4 0x50
خروجی دستور
No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-4, address 0x50, mode byte
Continue? [Y/n]
با زدن کلیدYکار را دنبال کنید
چیزی که در خروجی میبینید محتویات eepromمیباشد
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 05 00 00 00 00 00 fb ff ff ff ff ff ff ff ff ff ?.....?.........
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
f0: ff ff ff ff ff ff ff ff fe ff ff ff 00 01 fe fe ........?....???
حال 4 بایت اخر خانه های حافظه را با تخصیص مقادیر صحیح اصلاح کنید
کد:
i2cset -y 4 0x50 0xfc 0x00 b
i2cset -y 4 0x50 0xfd 0x01 b
i2cset -y 4 0x50 0xfe 0x18 b
i2cset -y 4 0x50 0xff 0x22 b
جهت اطمینان از صحت عملیات مجددا محتویات حافظه را بازخوانی میکنیم
کد:
i2cdump -y 4 0x50
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 05 00 00 00 00 00 fb ff ff ff ff ff ff ff ff ff ?.....?.........
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
f0: ff ff ff ff ff ff ff ff fe ff ff ff 00 01 18 22 ........?....??"
به 4 بایت اخر خانه های حافظه دقت کنید
بعد ازreboot،مشکل کارت برطرف شده و بدون هیچ مشکلی نصب خواهد شد
براي بارگذاري(Load) شدن ماژولهای نصب شده،سیستم را مجددا راه اندازي(Reboot) نماييد.حالا باید مطمئن شویم DVB ما بدرستی نصب شده یا نه!
1) درdev/ باید یک پوشه بنام dvb برای ما ساخته شده باشد.بسته به اینکه چند تا کارت DVB در سیستم خود دارید(حداکثر4 تا)،پوشه ها adpter0 الي adapter3 برای شما در این قسمت ثبت(register) میشود.
2)برای اطمینان از صحت بارگذاري(Load) شدن راه انداز،فایل متني var/log/dmesg / را با دقت بررسی نماييد.بعنوان نمونه به قسمتی از محتویات این فایل پس از نصب صحیح کارت nexus توجه کنید:
saa7146: register extension 'dvb'.
ACPI: PCI Interrupt 0000:02:0c.0[A] -> GSI 20 (level, low) -> IRQ 21
saa7146: found saa7146 @ mem f88ba400 (revision 1, irq 21) (0x13c2,0x0003).
DVB: registering new adapter (Technotrend/Hauppauge WinTV Nexus-S rev2.X).
adapter has MAC addr = 00:d0:5c:22:5d:bb
dvb-ttpci: info @ card 0: firm f0240009, rtsl b0250018, vid 71010068, app 80f22623
dvb-ttpci: firmware @ card 0 supports CI link layer interface
dvb-ttpci: Crystal audio DAC @ card 0 detected
saa7146_vv: saa7146 (0): registered device video0 [v4l2]
saa7146_vv: saa7146 (0): registered device vbi0 [v4l2]
DVB: registering frontend 0 (ST STV0299 DVB-S)...
input: DVB on-card IR receiver as /class/input/input3
dvb-ttpci: found av7110-0.
اگر کارت بدرستی نصب نشده باشد،در این قسمت شاهد بک پيغام خطا خواهیم بود.مثلا:
saa7146: found saa7146 @ mem f88ba400 (revision 1, irq 21) (0x13c2,0x0003).
DVB: registering new adapter (Technotrend/Hauppauge WinTV Nexus-S rev2.X).
adapter has MAC addr = 00:d0:5c:22:5d:bb
dvb-ttpci: av7110_fw_query error -1
dvb-ttpci: failed to boot firmware @ card 0
نشاندهنده این است که firmware(همان درایوری که جداگانه برایNEXUSدانلود شد) خراب بوده یا بدرستی در محل خود قرار نگرفته است!
در اینجا نحوه نصب راه اندازی کارتهاي DVB به پایان رسید
برای اشنایی با برنامه های کاربردی مهم در ازتباط با این کارتها به اینجا مراجعه کنید
من در این مقاله از توزیع لينوکس پارسیکس 0.85 بهمراه هسته 2.6.19.1 استفاده کردم.
در ضمن سخت افزار من هم یک سیستم 32bit مبتنی بر پردازنده Pentium 4 همراه کارت NEXUS با نسخه سخت افزاري 2.2 بود.
کارت skystar2 با ورژن2.6d هم روی این سیستم بدون هیچ مشکلی کار کرد
سیستم دوم هم یک سیستم64bitبا پردازندهAMD athlon2.4G همراه کارتTwinhan vp1020aباeeprom اسیب دیده بود که بکمکi2c اصلاح و راه اندازی گردید
منابع:
linuxtv
dvbn
cadsoft
eclips
hoochvdr |