Все о Linux. LinuxRSP.Ru

[an error occurred while processing this directive]

Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Digital Video Broadcasting или как заставить работать TechniSat SkyStar-1 под 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.

Ткачев Сергей
E-mail: hawk@ssu.sumy.ua

      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2024 LinuxRSP