Digital Video Broadcasting або як змусити працювати TechniSat SkyStar-1 під Linux, Linux, Операційні системи, статті

Ткачов Сергій

В нинішній час багато хто купує собі додому супутникові тарілки та тюнери для перегляду супутникового телебачення. Так як дані передаються в цифровому вигляді, то чому б не спробувати підключити комп’ютер до мережі інтернет через тарілку … Подумай – зроблено.

Багато компаній у наш час випускають тюнери для комп’ютерів. А інші пристосували їх для прийому даних і використовують їх для роботи з інтернет. При роботі через тарілку Ви можете приймати дані зі швидкістю до 55Мб / с, в залежності від провайдера послуг.

Ось і в мене з’явилася можливість спробувати це чудо. Малася картка SkyStar-1 і тарілка 1,8 м, налаштована на Astra 19.2E. В Як тестовий провайдера був узятий
EuropeOnLine (EOL) – 15 $ в місяць. Був зареєстрований користувач для 103 транспондера (частота – 12461000 кГц, Symbolrate – 27500 kSb / s). Також необхідно мати наземний канал (ppp з’єднання з провайдером або підключення через локальну мережу).

Що відносно софта, то для цього тюнера і для багатьох інших він написаний під MS Windows. Мене така перспектива не влаштовувала. Відповідно було прийнято рішення змусити все це працювати під Linux. Був встановлений
Slackware Linux в мінімальної комплекції з необхідними засобами розробки.

Після цього я борознив простори інтернету в пошуках інформації на мою тему, було знайдено декілька, на мій погляд, цікавих сайтів присвячених супутниковому телебаченню і не тільки, це
“Itelsat” Kiev Sat
Internet, Sat TV і “Все про супутникове, кабельному і ефірному ТБ”. На цих сайтах дуже багато корисної інформації, але як потім виявилося найнеобхіднішим був сайт LinuxTV. Тут були знайдені драйвера для тюнера (для
Siemens і
Technotrend, але вони підходять і для
TechniSat SkyStar-1), а так само програма для роботи з 103 транспондером (як виявилося потім ця програма не зовсім для нього), також тут виявився досить хороший архів розсилки.

Тепер все необхідне було на руках, залишалося тільки все налаштувати. Першим ділом було зібрано
ядро 2.2.14 (Навіщо нам гнатися за останніми ядрами?). При складанні ядра необхідно обов’язково вимкнути підтримку відео (CONFIG_VIDEO_DEV = n в конфігураційному файлі ядра).

Тепер попереду була збірка драйверів. Були взяті останні драйвера, на той момент, версії 0.6 –

siemens_dvb-0.6.tar.gz. У файлі драйвера dvb.c були виправлені деякі рядки, тому що після інсталяції драйверів, а простіше сказати копіювання їх в директорію / lib/modules/2.2.xx/misc /, файли прошивки не копіюються, відповідно при виконанні команди insmod карта тюнера не буде функціонувати. Файли прошивки карти, так звані firmware – Dpram, Root і Boot_up.axf я скопіював в папку / Lib / modules / skystar /. І відповідно поправив dvb.c, де замінив:


if (!(len=firmread(“Dpram”, (char**) &lfirm)))
if (!(len=firmread(“dpram”, (char**)
на

if (!(len=firmread(“/lib/modules/skystar/Dpram”, (char**) &lfirm)))
if (!(len=firmread(“/lib/modules/skystar/dpram”, (char**)
і так само для інших двох файлів firmware.

Після чого драйвера зібралися без будь-яких проблем. У цій же папці можна виконати команду make insmod – завантажаться драйвера для карти, щоб вивантажити їх виконайте make rmmod.

Після виконання команди make insmod у вас повинно з’явиться пристрій dvb0 з IP адресою 192.168.4.1 (на IP адреса можете уваги не звертати він може бути будь-яким з зарезервованих мереж 192.168.0.0 і 10.0.0.0), перевірити це ви можете за допомогою команди ifconfig. При виконанні команди make insmod видається помилка про те що не можливо знайти модуль msp3400.o – у файлі Makefile рядок компіляції цього модуля заремлена, а insmod msp3400.o – ні, тому заремте його:


insmod tuner.o
# insmod msp3400.o

Якщо у Вас з’явився пристрій dvb0 – то все в порядку, тюнер працює. Можна виконати команду make install, в результаті якої файли dvb.o, i2c-core.o, saa7146_core.o, saa7146_v4l.o, tuner.o, VES1820.o, VES1893.o, videodev.o будуть скопійовані в папку
/lib/modules/2.2.xx/misc/.

Тепер нам необхідна програма для отримання даних з тарілки. Для цього існує демон dvbd, який зроблений спеціально для 103 транспондера (так сказано на LinuxTV). З LinuxTV був викачаний і розпакований файл dvbd2.tar.gz. Невелика застереження, незнаю як у інших, але у мене працює тарілка на супутник з LNB LO = 11300000. Тому після багатьох спроб змусити працювати цю програму довелося вивчити файл dvbd.c, і що я там виявив:


if (ret > 10600000 && ret < 14500000) { front.freq = front.curfreq = ((__u32) ret - 10600000) * 1000 ; }

Ось так вони обчислюють частоту, хоча LNB LO = 10600000 це для 113-115 транспондерів. Відповідно провелися деякі зміни:
всі рядки


front.freq = front.curfreq = ((__u32) ret – 10600000) * 1000 ;
були замінені на

front.freq = front.curfreq = ((__u32) ret – 11300000) * 1000 ;

Перед складанням необхідно перевірити в файлі dvbd.h такий рядок:


#define network_device “eth0”

тут повинен бути вказаний інтерфейс (ppp0, eth0 або інший інтерфейс) по якому ви маєте з’єднання з провайдером інтернет (наземний канал).

Після чого робимо make і копіюємо файл dvbd в будь-який каталог який прописаний в PATH.

Нам необхідний файл конфігурації для цієї програми, він повинен знаходиться в каталозі / etc, якщо Вас не влаштовує цей каталог – можете змінити

 char cfgname [128] = “/ etc / dvbd.conf”; (у файлі dvbd.h)

Нижче наведено лістинг файлу / etc / dvbd.conf


# DVB receiver configuration file, (c) 2000 data planet international
#
# standard location in /etc
#
# LNB power on=1/off=0
#
power 1
#
# symbol rate [symbol/sec]
#
# ASTRA 1E/1F
#
symbolrate 27500000
#
# frequency [kHz]
#
# ASTRA TR 103
#
frequency 12461000
#
# 22 kHz signal on=1/off=0
#
ttk 1
#
# diseqc on=1/off=0
#
diseqc 0
#
# AFC on=1/off=0
#
AFC 1
#
# polarisation H=1/V=0
#
polarisation 1
#
# settings for MPE filter, PID and MAC filtering, valid MAC bytes
#
filter_0 512

Маючи файл конфігурації і працює тюнер (завантажені всі модулі і присутній dvb0 пристрій) запускаємо програму dvbd. Чекаємо деякий час, програма повинна видавати інформаційні рядки про роботу тюнера. Якщо поле Sync = 127, то тарілка налаштована на супутник і Ви можете приймати дані. Якщо ж ні спробуйте поміняти п’яту цифру значення freq у файлі dvbd.conf. У мене наприклад у зв’язку з тим що засмучена головка значення freq = 12457000. Але кожен раз змінюючи значення це поля Вам необхідно вивантажувати і завантажувати драйвера, інакше ніяких змін не буде. Якщо Ви домоглися Sync = 127, то можна пускати програму у вигляді демона, це буде виглядати так dvbd-q.

Тепер якщо у Вас не стоїть ніякого проксі на машині, вказуєте вашому браузеру проксі того транспондера на який у Вас є доступ і працюєте.

Якщо у Вас стоїть Squid – Ось рядки які я додав до його конфіг:

 cache_peer ваш_проксі parent 8080 0 no-query default login = login: passw
prefer_direct off
always_direct deny all

Це і все що треба squid’у.

Тепер я захотів все автоматизувати, тобто щоб все піднімалося при завантаженні системи. Був написаний простенький
rc.dvb:


#!/bin/sh
if [ -x /usr/bin/dvbd ]; then
/sbin/insmod i2c-core
/sbin/insmod videodev
/sbin/insmod saa7146_core mode=0
/sbin/insmod saa7146_v4l
/sbin/insmod VES1893
/sbin/insmod VES1820
/sbin/insmod dvb
/sbin/insmod tuner
/sbin/ifconfig dvb0 192.168.4.1
echo -n “Starting DVBD… ”
/usr/bin/dvbd -q
echo “Done”
fi

Цей файл був скопійований в / etc / rc.d / і запускається перед Squid’ом. У мене наприклад в Slackware він запускається після файла rc.inet2, тоесть коли піднялася сітка.

Ось і все – решта за Вами. Пробуйте, налаштовуйте, я не гарантую що буде працювати з будь-яким ядром – на LinuxTV радять 2.2.14. У мене працює це все на
RedHat 6.2 c ядром 2.2.14 і на Slackware 7.1 з яром 2.2.14.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*