HOWTO DVB Streaming

Исходные данные:
Gentoo Linux 2.6.27-gentoo-r8
SkyStar2-USB
Тарелка на Intelsat 904 at 60.0°E

Устанавливаем DVB карту.
1. Смотрим ядро, там должно быть включено:

Networking --->
 Networking options --->
  <М>   IP: tunneling
  <М>   IP: GRE tunels over IP
Device Drivers --->
 Network device support --->
  <М>  PPP (poiny-to-point protocol) support
  <М>   PPP support for async serial ports
  <М>   PPP Deflate compression
  <М>   PPP BSD-Compress compression
 Multimedia devices --->
  Digital Video Broadcasting Devices --->
  [*] DVB For Linux
  <М>   DVB Core support
  <М>     Technisat/B2C2 FlexCopII (b) and FlexCopIII adapters
  <М>       Technisat/B2C2 Air/Sky/Cable2PC PCI
Важно! Нужно внести изменения в код ядра а именно:
# vi /usr/src/linux-2.6.27-gentoo-r8/drivers/media/dvb/dvb-core/dvb_frontend.c

В двух строчках добавить « = 0 », т.е. должно выглядеть так:
static int dvb_shutdown_timeout = 0;
static int dvb_powerdown_on_sleep = 0;
если этого не сделать, то карточка стартуя с пустя 5 сек. падает в непробуждаемый сон и как следствие не работает.

2. Сборка тулзы для работы с DVB:

# emerge media-tv/linuxtv-dvb-apps -pv

Проверяем, наша карта должна захватить сигнал.

Просмотр файлов конфигураций транспонтеров для раздныйх спутников:

В нутри файл выглядет так:

Проверяем удасться ли нам с этого транспондера получить что нибуть.

Есть! Мы нашли рабочий транспондер с которого вещает некое КубаньТВ.
Сборка VLC

# USE="fluidsynth flac fbcon mpeg stream v41 v4l2 httpd dvb -qt4" emerge vlc -av

Запуск VLC

# vlc -vvv dvb:// --dvb-adapter=0 --dvb-voltage=13  --dvb-srate=5788000 --dvb-frequency=11490000 --sout
'#duplicate{dst="standard{access=http,mux=ts,dst=192.168.*.*:8070}"'

Запуск VLC в случае когда на одном транспондере несколько программ

# vlc -vvv dvb:// --dvb-adapter=0 --dvb-voltage=13 --dvb-frequency=11050000 --dvb-srate=3300000
--programs=1,2,4,5,6,7,8,9,10,11,12,13,14,15,17,18,59,60,61,63,16 --sout
'#duplicate{dst="standard{access=http,mux=ts,dst=192.168.*.*:8070}",
select="program=1",dst="standard{access=http,mux=ts,dst=192.168.*.*:8071}",
select="program=2",dst="standard{access=http,mux=ts,dst=192.168.*.*:8072}",
select="program=4",dst="standard{access=http,mux=ts,dst=192.168.*.*:8073}",
select="program=5",dst="standard{access=http,mux=ts,dst=192.168.*.*:8074}",
select="program=6",dst="standard{access=http,mux=ts,dst=192.168.*.*:8075}",
select="program=7",dst="standard{access=http,mux=ts,dst=192.168.*.*:8076}",
select="program=8",dst="standard{access=http,mux=ts,dst=192.168.*.*:8077}",
select="program=9",dst="standard{access=http,mux=ts,dst=192.168.*.*:8078}",
select="program=10",dst="standard{access=http,mux=ts,dst=192.168.*.*:8079}",
select="program=11",dst="standard{access=http,mux=ts,dst=192.168.*.*:8080}",
select="program=12",dst="standard{access=http,mux=ts,dst=192.168.*.*:8081}",
select="program=13",dst="standard{access=http,mux=ts,dst=192.168.*.*:8082}",
select="program=14",dst="standard{access=http,mux=ts,dst=192.168.*.*:8083}",
select="program=15",dst="standard{access=http,mux=ts,dst=192.168.*.*:8084}",
select="program=17",dst="standard{access=http,mux=ts,dst=192.168.*.*:8085}",
select="program=18",dst="standard{access=http,mux=ts,dst=192.168.*.*:8086}",
select="program=59",dst="standard{access=http,mux=ts,dst=192.168.*.*:8087}",
select="program=60",dst="standard{access=http,mux=ts,dst=192.168.*.*:8088}",
select="program=61",dst="standard{access=http,mux=ts,dst=192.168.*.*:8089}",
select="program=63",dst="standard{access=http,mux=ts,dst=192.168.*.*:8090}",
select="program=16"'

* Написать скриптик запуска VLС в удобочетаемом виде, аля как здесь, не получается, придется все писать одной строкой. У меня во в всяком случае не получилось.

Значение:
--dvb-voltage=13 (V верикальная поляризация)
--dvb-voltage=18 (H горизонтальная поляризация)

Теперь на клиенте запускаем VLC плеер или любой другой и обратившись по адресу http://192.168.*.*:8080 смотрим ТВ.

p.s.
И на закуску, один полезный приемчик. При санировании траспондеров можно нарваться на провайдера интрнета, а значит порыбачить.
Пишем скрипт который запускает карту, создает сетевой интерфейс (нужно если хотим хватать интернет из космоса)

#!/sbin/runscript
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-admin/metalog/files/metalog.rc7,v 1.3 2005/04/20 01:57:35 vapier Exp $

#written by Serg
start() {
        ebegin "Starting dvb"
        str_if=`dvbnet -l |grep $DVB_DEVICE`
        lll_if=`expr length "$str_if"`
        if [ $lll_if -lt 1 ]; then
                szap -c /etc/channels.conf -n 1 -x
                dvbnet -p $DVB_PID > /dev/null
                ifconfig $DVB_DEVICE $DVB_IP netmask 255.255.255.255 broadcast 255.255.255.255 hw ether $DVB_MAC up
                route add $DVB_IP dev $DVB_DEVICE
        fi
        eend $?
}

stop() {
        ebegin "Stopping dvb"
        str_if=`route -n |grep $DVB_IP`
        lll_if=`expr length "$str_if"`
        if [ $lll_if -gt 1 ]; then
                route del $DVB_IP
        fi

        str_if=`ifconfig |grep $DVB_DEVICE`
        lll_if=`expr length "$str_if"`
        if [ $lll_if -gt 1 ]; then
                ifconfig $DVB_DEVICE down
        fi

        str_if=`dvbnet -l |grep $DVB_DEVICE`
        lll_if=`expr length "$str_if"`
        if [ $lll_if -gt 1 ]; then
                dvbnet -d 0 > /dev/null
        fi
        eend $?
}

Помещаем скрипт в /etc/init.d/
Для работы скрипта требуется наличие файла в /etc/conf.d/dvb его вид:

DVB_PID="4137"
DVB_DEVICE="dvb0_0"
DVB_MAC="00:08:c9:a0:14:88"
DVB_IP="172.16.0.1"

(PID выдает провайдер на основе (привязанный) предостовляемого нами MAC адреса, для рыбалки можно подставить любой найденый в Google)
Пиды можно найти при помощи утилиты /usr/bin/dvbtraffic из пакета media-tv/linuxtv-dvb-apps.
Запустите /usr/bin/dvbtraffic. Увидите список пидов и поток через них.

После запуска этого скрипта создастся сетевой интерфейс:

Провряем хождение сетевых пакетов:

С настройкой сетевого интерфейса покончено. Можно приступать к поиску софта для рыбалки.

Источники инфы:
http://wiki.videolan.org/Documentation:Streaming_HowTo/Stream_a_DVB_Channel - Wiki (eng)
http://silinio.webhost.ru/dialsat.html#kernel - Спутниковый интернет для dial-up пользователей Linux
Отдельное спасибо Ro и Serg