Home Wiki > DVB-S
Sign up | Login

DVB-S

tagline: Материал из openSUSE

Стандарт DVB-S. Спутниковое ТВ (SAT) вещание было и остаётся самым быстрым, надёжным и экономичным способом подачи ТВ сигнала высокого качества в любую точку обширного пространства.

Установка DVB-S карты

Установка DVB-S карт осуществляется в Yast -> Оборудование -> TV-карта

Установка TechniSat SkyStar 2

Добавить -> DVB Плата -> B2C2 FlexCopII DVB Chip/TechniSat SkyStar 2 card

Установка TT-Budget S1401 (SkyStar 3)

Добавить -> DVB Плата -> Technotrend-Budget / Hauppauge WinTV-NOVA-T DVB card Настройки эксперта. Модуль ядра 1: budget -> Далее Модуль ядра 2: tda10086 -> Далее

Проверка правильности установки

Если карта установилась правильно, то команда

ls /dev/dvb

Должна вернуть список установленных адаптеров. В случае если установлен всего один адаптер это будет просто adapter0

Проверка правильности настройки оборудования

Создание файла /etc/channels.conf

Файл /etc/channels.conf должен содержать список доступных каналов (список и параметры для вашего спутника смотрите на LyngSat).

Пример /etc/channels.conf для провайдера "Радуга", спутник Yamal 201 90E.Ku диапазон

Raduga:11671:v:0:18200:0:0:0

Пример для провайдера SatGate, спутник Yamal 202 49E

SatGate:12130:v:0:27500:0:0:0

Для канала O2 на спутнике Ямал-201 строка должна выглядеть так:

O2:3944:h:0:15550:2501:2502:2500

Здесь:

  • O2 – название канала. Может быть любым.
  • 3945 – частота
  • h – поляризация. Может быть H – горизонтальная и V – вертикальная
  • 0 – Номер Disec порта (0,1,2,3 - для 4-портового)
  • 15550 – Величина потока (Symbol rate)
  • 2501 – Видео PID
  • 2502 – Аудио PID
  • 2500 – Program id

Еще один пример:

#1  Номера строк указаны для того что бы их можно было использовать для команды szap (на 08.10.2008)
#2--------------PlanetSKY---------------
#PlanetSky, спутник ExpressAM22 53'
#pid 7000
PS:10974:v:0:32223:0:0:5
#PlanetSky, спутник Express-АМ1 40'
#PS:11669:v:0:39715:0:0:7  - Больше нету!!!

#9---------------SpaceGate---------------
#SpaceGate, спутник Eutelsat-W6 21.5e'
#pid 1024
SGW6:11345:h:0:28782:0:0:12
#SpaceGate, спутник Telstar-12 15'e
#pid 1024
SGT12:11000:v:0:6336:0:0:15       -- Тоже закрывают!!!!
#SpaceGate, спутник HellasNet-12 39'e
#pid 257
SGHN:11512:h:3:30000:0:0:18
#SpaceGate, спутник Express AM33 (96,5°)
#pid 
SGAM33:12527:v:2:12000:0:0:21
#SpaceGate, спутник NSS 6, 95e
#pid 750
SG:11017:v:0:10500:0:0:24

#26---------------SkyDSL-----------------
#SkyDSL, спутник Express-АМ22 53'E   - Закрыли!!!!
#
#20
#SkyDSL, спутник Eutelsat W3A (7.0° в.д.)
SDSL:10845:v:0:27500:0:0:31
#23
#SkyDSL, спутник Atlantic Bird 2 8'E
SDSL:12732:v:0:27500:0:0:34

#----------------SatGate------------------
#SatGate, спутинк Astra-5A, (31.5°)Несущая 5.235 восточный луч,Ku-диапазон
ST:12379:h:0:27500:0:0:38
#SatGate, спутинк Astra-5A,31.5° восточной долготы, Несущая 5.201 восточный луч,Ku-диапазон
ST:11733:h:0:14000:0:0:40
#SatGate, спутинк Sirius-4 B22, (5.0°)
ST:12130:v:0:27500:0:0:42
#SatGate, спутник Ямал-202 49'E
ST:4066:l:0:29763:0:044

#--------------STV-----------------------
#STV, спутник Intelsat-904 60'E транспордер S1
#PID 
STV:11595:v:0:29270:0:0:49
#STV, спутник Intelsat-904 60'E транспордер S2 
STV:11149:v:0:12700:0:0:51

#----------------SpectrumSat-------------
#SpectrumSat, спутник HellasSat, 39'
#pid 512
SS:11630:h:0:20500:0:0:56
#SpectrumSat Спутник NSS 6, 95° восточной долготы, Ku-диапазон
SS:11017:v:0:10500:0:0:58

#----------------Raduga-------------
#Raduga, спутник Sirius-4 (4°East)
RAD:126985:h:0:7143:0:0:62

#Raduga, спутник Express AM1 (40°East)
RAD:11082:v:0:5064:0:0:65

#Raduga, спутник Express AM22 (53° East)
RAD:11096:v:0:6164:0:0:68

#Raduga, Спутник Intelsat 904 (60° East) транспордер S1 Платформа А
RAD:11595:v:0:29270:0:0:71

#Raduga, Спутник Intelsat 904 (60° East) транспордер S1 Платформа В
RAD:10983:v:0:3819:0:0:74

#Raduga, Спутник Intelsat 904 (60° East) транспордер DVB-S2 Платформа S2
RAD:11149:v:0:20000:0:0:77

#Raduga, спутник Yamal 201 Ku-Band (90E)
RAD:11672:v:0:18200:0:0:80

#Raduga, спутник Yamal 201 C-Band (90° East)
RAD:3980:h:38:0:0:83

#----------------Sky-Fi-------------
#Sky-Fi, спутник Intelsat-904 (60° East) транспондер DVB-S2
SKYFi:11042:v:0:7181:0:0:87

#Sky-Fi, спутник Bonum 1 (56° East)
SKYFi:12303:h:0:27500:0:0:89

Утилита szap

Утилита szap входит в пакет dvb, который необходимо установить в Yast -> программное обеспечение -> Управление прогрммным обеспечением После того как файл channels.conf создан и пакет dvb установлен можно попробовать настроиться на канал:

Shellscript.png Выполните команду
 szap -c /etc/channels.conf -x -l C_BAND -n 1

Здесь:

  • -c /etc/channels.conf – местоположение файла со списком каналов для szap
  • -l C-BAND – указание, что частота принадлежит диапазону C-BAND для Ku-band ничего указывать не нужно
  • -n 1 – настроиться на первый канал из channels.conf
  • -x – выйти из программы по завершении настройки

Если все сделано верно, то вывод должен быть примерно таким:

# szap -c /etc/channels.conf -x -l C-BAND -n 1
reading channels from file '/etc/channels.conf'
zapping to 1 'O2':
sat 0, frequency = 3945 MHz H, symbolrate 15550000, vpid = 0x09c5, apid = 0x09c6

using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 07 | signal 6ce9 | snr 3270 | ber 0000ff00 | unc 00000000 |
status 1f | signal c08d | snr d344 | ber 00001800 | unc 00000000 | FE_HAS_LOCK

Ключевое слово здесь это “status 1f” и FE_HAS_LOCK. Остальные поля указывают уровень сигнала, количество ошибок и т.д. При указании ключа -x количество строк может быть от одного до 10-ти (в этом случае szap делает максимум 10-ть попыток настроиться). Как только устойчивый сигнал получен, szap завершит свою работу.

Просмотр DVB-S ТВ

openSUSE 10.3 (и другие версии) не имеют возможности просмотра DVB, потому что требуемый декодер не включен в дистрибутив. Для просмотра DVB-S необходимо установить пакеты из репозитариев сообщества. Подробнее см. Restricted Formats

Kaffeine

Для просмотра в Kaffeine программ DVB-S необходимо установить libxine собранный с поддержкой DVB, например из репозитария Packman.

Настройка

При первом запуске Kaffeine будет предложено настроить устройства DVB позднее этот диалог можно вызвать из DVB -> Настройка DVB...

1. Выбрать тип конвертера: Универсальный конвертер (Ku), C-Band LNB или C-Band Multipoint LNB 2. Выбрать тип ротора если есть и спутник.

Если спутника нет в списке то необходимо создать файл-описание спутника. в $HOME/.kde/share/apps/kaffeine/dvb-s/

Пример файла описания спутника Yamal 201 90E Ku:

# Yamal 201 90E Ku
# freq pol sr fec

S 10956000 V 2150000 3/4
S 10960000 V 2200000 3/4
S 10964000 V 3475000 3/4
S 10975000 V 3700000 3/4
S 10990000 V 2170000 3/4
S 10995000 V 4285000 3/4
S 11057000 V 26470000 3/4
S 11092000 V 26470000 3/4
S 11123000 V 2180000 3/4
S 11145000 V 22222000 3/4
S 11483000 V 25000000 3/4
S 11575000 V 5000000 3/4
S 11586000 V 11850000 3/4
S 11638000 V 2200000 3/4
S 11671000 V 18200000 5/6

Здесь:

  • S - тип DVB здесь S - Sat
  • 10956000 - частота
  • V - поляризация может быть горизонтальная H или вертикальная V
  • 2150000 - скорость птока в bit/s
  • 3/4 - FEC

3. Далее необходимо просканировать каналы. DVB-> Каналы.. -> Начать поиск Справа появиться список найденых каналов. Из них надо выбрать те которые нужны и нажать "Добавить выбранное" или установить параметры фильтра и нажать "Добавить через фильтр" Каналы должны появиться в списке слева. Та их можно отредактировать двойным щелчком по нужному каналу.

Просмотр

Для просмотра спутникового ТВ необхожимо в главном окне нажать кнопку "Цифровое ТВ" и выбрать канал в списке слева.

Запись

Настройка параметров записи передач доступна в меню DVB- > Нстройка DVB...-> Запись Запись начинается оп нажатию DVB-> Мгновенная запись или по таймеру. Таймеры можно создать в DVB-> Таймеры...

DVB-S интернет

Кроме просмотра ТВ, при помощи спутникового оборудования можно получать и доступ в интернет. Сущесвуют два вида доступа в интернет через спутник - One Way и Two Way. One Way означает что пакеты идут только в одном направлении - от спутника к пользователю. При этом входящие пакеты идут через DVB-S карту, а для исходящих пакетов нужен наземный канал. Two Way -способ доступа при котором входяие и исходящие пакеты идут через спутник.

Ниже рассматривается настройка оборудования для доступа по One Way.

Дополнительная настройка DVB-S карты

Для использования спутникового интернета необходимо чтобы карта не "засыпала", иначе входящий трафик будет пропадать после некоторого времени. Проверить таймаут засыпания можно так:

Shellscript.png Выполните команду
 cat /sys/module/dvb_core/parameters/dvb_shutdown_timeout 
Команда вернет таймаут в секундах .Для того чтобы карта не засыпала необходимо установить его в 0. Для этого необходимо дописать строчку
options dvb-core dvb_shutdown_timeout=0

в файл /etc/modprobe.d/tv После правки он должен выглядеть примерно так:

alias char-major-81 videodev
options i2c-algo-bit bit_test=1
alias char-major-81-0 off
alias char-major-81-1 off
alias char-major-81-2 off
alias char-major-81-3 off
# YaST configured TV card
# zsAr.kXehR0AesgA:B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card
install char-major-212-3 /sbin/modprobe dvb-core; /sbin/modprobe mt312
options dvb-core dvb_shutdown_timeout=0  #< -- эту строку мы добавили

После правки необходимо перезагрузиться и убедиться что теперь таймаут выставлен в 0.

Примечание: Примечание: В новых ядрах, в частности в 2.6.25 что в openSUSE 11.0 установка параметра dvb_shutdown_timeout в ноль желаемого эффекта не дает. Возможно решение в виде выставления заведомо большого числа.


VPN подключение

Немного теории

Так как в при использовании спутникового интернета с доступом через VPN подключение сетевые пакеты приходят через один интерфейс, а уходят через другой необходимо разрешить IP маршрутизацию. Проверить включена маршрутизация можно командой

Shellscript.png Выполните команду
 cat  /proc/sys/net/ipv4/ip_forward

Если маршрутизация включена то команда должна вернуть 1 В openSUSE для включения IP маршрутизации необходимо исправить отредактировать файл /etc/sysconfig/sysctl

## Type:	yesno
## Default:	no
#
# Runtime-configurable parameter: forward IP packets.
# Is this host a router? (yes/no)
#
IP_FORWARD="yes" # здесь включаем IP маршрутизацию

На лету маршрутизацию можно включить так:

Shellscript.png Выполните команду с правами суперпользователя (root)
 echo 1 > /proc/sys/net/ipv4/ip_forward


Кроме того необходимо отключить rp_filter который фильтрует пакеты которые не могут уйти через тот же интерфейс что и пришли. В случае спутникового интернета пакет приходит через один интерфейс а уходит через другой.

Если ответ на текущий пакет не может уйти через тот же интерфейс (когда приходит через один интерфейс, а уходит через другой), пакет отфильтровывается.

В openSUSE SuSEfirewall2 настроен по умолчанию на фильтрацию таких пакетов. Чтобы отключить фильтрацию для интерфейса dvb0_0 необходимо установить в файле /etc/sysconfig/SuSEfirewall2

## Type:	string
#
# 25.)
# Do you want to load customary rules from a file?
#
# This is really an expert option. NO HELP WILL BE GIVEN FOR THIS!
# READ THE EXAMPLE CUSTOMARY FILE AT /etc/sysconfig/scripts/SuSEfirewall2-custom
#
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"

Тем самым разрешив дополнительные правила фаерволла

Затем в файле /etc/sysconfig/scripts/SuSEfirewall2-custom в секцию fw_custom_after_antispoofing() добавить строчку

fw_custom_after_antispoofing() { # could also be named "before_port_splitting()"
    # these rules will be loaded after the anti-spoofing and icmp handling
    # but before any IP protocol or TCP/UDP port allow/protection rules
    # will be set.
    # You can use this hook to allow/deny certain IP protocols or TCP/UDP
    # ports before the SuSEfirewall2 generated rules are hit.

#example: always filter backorifice/netbus trojan connect requests and log them.
#for target in LOG DROP; do
#    for chain in input_ext input_dmz input_int forward_int forward_ext forward_dmz; do
#        iptables -A $chain -j $target -p tcp --dport 31337
#        iptables -A $chain -j $target -p udp --dport 31337
#        iptables -A $chain -j $target -p tcp --dport 12345:12346
#        iptables -A $chain -j $target -p udp --dport 12345:12346
#    done
#done
    echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter  # <- отключаем rp_filter на интерфейсе dvb0_0
    true
}

Проверить отключен ли rp_filter для интерфейса dvb0_0 можно командой

Shellscript.png Выполните команду
 cat  /proc/sys/net/ipv4/conf/dvb0_0/rp_filter


На лету можно отключить rp_filter так:

Shellscript.png Выполните команду с правами суперпользователя (root)
 echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter


Создание сетевого интерфейса

В начале необходимо настроить DVB-S карту на частоту вашего провайдера

Shellscript.png Выполните команду с правами суперпользователя (root)
 szap -c /etc/channels.conf -n 1 -x

Про команду szap и файл channels.conf подробнее см выше

Для создания сетевого интерфейса необходимо выполнить команду (dvbnet утилита из пакета dvb см выше):

Shellscript.png Выполните команду с правами суперпользователя (root)
 dvbnet -p 1234


Здесь: 1233 - ваш пид выданный провайдером.

После выполнения команды должен появиться сетевой интерфейс dvb0_0

Теперь необходимо его настроить

Shellscript.png Выполните команду с правами суперпользователя (root)
 ifconfig dvb0_0 192.168.238.238 netmask 255.255.255.0 broadcast 255.255.255.255

Здесь 192.168.238.238 - IP адрес тот который выдан провайдером по подписке в случае подключения с использованием ускорителей типа Slonax и любой другой ИП, но не тот который выдан провайдером по подписке если подключение осуществляется через VPN!!

если ваша подписка подразумевает фильтрацию по IP адресу а не по MAC адресу то необходимо задать интерфейсу dvb0_0 MAC адрес вычисленный из выданного IP адреса.

Shellscript.png Выполните команду с правами суперпользователя (root)
 ifconfig dvb0_0 hw ether 00:00:0A:FA:58:36
Здесь 00:00:0A:FA:0C:22 - MAC адрес вычисленный из IP адреса.

Предположим выданный провайдером IP адрес 10.250.12.34, для того чтобы вычислить соответствующий MAC адрес необходимо просто перевести все десятичные значения в шестнадцатеричные и дописать слева 00:00

  • 10 переводим в шестнадцатеричную систему - получаем 0A
  • 250 переводим в шестнадцатеричную систему - получаем FA
  • 12 переводим в шестнадцатеричную систему - получаем 0C
  • 34 переводим в шестнадцатеричную систему - получаем 22

Записываем в том же порядке 0A:FA:0C:22, дописываем слева два шестнадцатеричных нуля и получаем наш MAC адрес 00:00:0A:FA:0C:22

Примечание: Примечание: Для перевода чисел из десятичной системы в шестнадцатеричную можно воспользоваться калькулятором, например Kcalc


Далее устанавливаем маршрут на интерфейс dvb0_0

Shellscript.png Выполните команду с правами суперпользователя (root)
 route add 192.168.238.238 dev dvb0_0


Подключение через ускоритель Slonax

Создание сетевого интерфейса

В начале необходимо настроить DVB-S карту на частоту вашего провайдера

Shellscript.png Выполните команду с правами суперпользователя (root)
 szap -c /etc/channels.conf -n 1 -x

Про команду szap и файл channels.conf подробнее см выше

Для создания сетевого интерфейса необходимо выполнить команду (dvbnet утилита из пакета dvb см выше):

Shellscript.png Выполните команду с правами суперпользователя (root)
 dvbnet -p 1234


Здесь: 1233 - ваш пид выданный провайдером.

После выполнения команды должен появиться сетевой интерфейс dvb0_0

Теперь необходимо его настроить

Shellscript.png Выполните команду с правами суперпользователя (root)
 ifconfig dvb0_0 172.12.34.56 netmask 255.255.255.0 broadcast 255.255.255.255

Здесь 172.12.34.56 - IP адрес выданный вам по подписке. Обычно он написан в Личном кабинете на сайте провайдера.

Shellscript.png Выполните команду с правами суперпользователя (root)
 ifconfig dvb0_0 hw ether 00:0D:0A:FA:38:31
Здесь 00:0D:0A:FA:38:31 - MAC адрес который введен у вас в Личном кабинете на сайте провайдера.

Далее устанавливаем маршрут на интерфейс dvb0_0

Shellscript.png Выполните команду с правами суперпользователя (root)
 route add 172.12.34.56 dev dvb0_0

Остановка сетевого интерфейса

Если требуется воспользоваться DVB-S картой еще для чего-то, например для простора ТВ, то необходимо остановить и далить интерфейс dvb0_0. Останавливаем интерфейс:

Shellscript.png Выполните команду с правами суперпользователя (root)
 ifconfig dvb0_0 down


Удаляем интерфейс:

Shellscript.png Выполните команду с правами суперпользователя (root)
 dvbnet -d dvb0_0


Решение проблем

Если входящего траффика нет, то следует начать искать проблему с выполнения команды

Shellscript.png
 dvbtraffic


При нормальной работе команда должна показывать активность на пидах транспондера, выглядит это примерно так

-PID--FREQ-----BANDWIDTH-BANDWIDTH-
0000    10 p/s     1 kb/s    15 kbit
0010     0 p/s     0 kb/s     1 kbit
0011     0 p/s     0 kb/s     1 kbit
0014     0 p/s     0 kb/s     1 kbit
0032    60 p/s    11 kb/s    90 kbit
003c    10 p/s     1 kb/s    15 kbit
003d    31 p/s     5 kb/s    47 kbit
0064    13 p/s     2 kb/s    20 kbit
0065   889 p/s   163 kb/s  1337 kbit
0066   351 p/s    64 kb/s   529 kbit
0384    10 p/s     1 kb/s    15 kbit
0385    10 p/s     1 kb/s    15 kbit
03e8  5500 p/s  1009 kb/s  8272 kbit
2000  6892 p/s  1265 kb/s 10365 kbit

Если вывод команды пуст то скорее всего это вызвано "засыпанием" карты либо неправильной настройкой на спутник.

Уточнение. команда dvbtraffic выводит значение PID в шестнадцатиричном виде. Тогда как команда dvbnet -p PID по умолчанию принимает значение PID в десятичном виде.

Пример скрипта инициализации интерфейса dvb0_0

/etc/init.d/dvbcard

#!/bin/bash
# Copyright (c) HighwayStar
# 
# Скрипт для запуска интерфейса dvb0_0
### BEGIN INIT INFO
# Provides: dvbcard
# Required-Start:
# Required-Stop:
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# X-UnitedLinux-Should-Start: hotplug
# Short-Description: start dvbcard for internet
# Description:  Script for start dvbnet interface
### END INIT INFO
# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_status -s     display "skipped" and exit with status 3
#      rc_status -u     display "unused" and exit with status 3
#      rc_failed        set local and overall rc status to failed
#      rc_failed <num>  set local and overall rc status to <num>
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
#      rc_active	checks whether a service is activated by symlinks
#      rc_splash arg    sets the boot splash screen to arg (if active)
. /etc/rc.status
# First reset status of this service
rc_reset

DIR=/usr
#пид вашего провайдера
PID=1234
DEV_NAME=dvb0_0
#IP карты dvb. смотреть в мануале или в и-нете.
IP_ADDR=192.168.238.238
NETMASK=255.255.255.0
BCAST=255.255.255.255
# здесь пишем MAC dvb карты.  В случае VPN пишем MAC вычисленный
# из IP если фильтрация по IP или MAC адрес из личного кабинета 
# если фильтрация по MAC
MAC_ADDR=00:00:0A:FA:0C:22

case "$1" in
start)

echo -n "Starting DVBcard"

	/sbin/ifconfig | grep $DEV_NAME &> /dev/null  # Подавление вывода.
	case $? in	
	0) echo "Interface already up and runnining" ;;
	esac
	# создаем сетевой адаптер
        # тюним на нужный спутник, частоту и т.п.
	echo -n  "Read channels.conf"
	$DIR/bin/szap -c /etc/channels.conf -n 1 -x

	echo -n "Set PID ${PID}"
	$DIR/bin/dvbnet -p $PID
	# присваеваем карте IP
	echo -n "ifconfig Dev=${DEV_NAME} IP=${IP_ADDR}, Netmask=${NETMASK}, Broadcast=${BCAST}"
	/sbin/ifconfig $DEV_NAME $IP_ADDR netmask ${NETMASK} broadcast ${BCAST}
	# присваеваем карте MAC
	echo -n "Set MAC-Address - ${MAC_ADDR}"
	/sbin/ifconfig $DEV_NAME hw ether ${MAC_ADDR}
	# Устанавливаем маршрутизацию на этот интерфейс
	echo -n "Set route on DVB card interface"
    	route add ${IP_ADDR} dev ${DEV_NAME}
	echo "Disable rp_filter"
    	echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter
    	echo 1 > /proc/sys/net/ipv4/ip_forward
	rc_status -v
	;;
stop)
	echo -n "Shutting down DVBcard"
	/sbin/ifconfig | grep $DEV_NAME &> /dev/null  || \
			echo -n " Warning: interface not running. "	
	/sbin/ifconfig $DEV_NAME down
	dvbnet -d $DEV_NAME
	rc_status -v
;;

restart)
		$0 stop
		$0 start
		rc_status
	# Remember status and be quiet
	rc_status
	;;

status) 

echo -n "Checking for DVBcard "
	/sbin/ifconfig | grep $DEV_NAME &> /dev/null 
	rc_status -v
;;

 *)
	echo "Usage: $0 {start|stop|status|restart}"
	exit 1
	;;
esac
rc_exit
Icon-expand.png Эта статья является незавершенной!
Эта статья нуждается в доработке. Если Вы можете помочь, сделайте это в соответствии с руководством по оформлению.