Plate-forme
d' experimentation
La station de réception est composée
des éléments suivants:
-
Antenne TVRO: Parabole 80cm pour télé numérique avec
LNB universel (longitude <100m)
L'antenne est pointée sur le satellite Eutelsat W2 16 degrés.
-
Décodeur DVB : carte comatlas CAS2033A :
-
SCPC/MCPC demodulateur (2-30 MSymb)
-
Réception IP sur DVB/MPEG 2 transport stream
-
Multiprotocol Encapsulation compatible
-
Débit trafic IP traffic 5 Mbps
-
ISA Bus
-
Connecteur antenne Type F (classique)
La carte CAS2033A ne fait pas de filtrage
hardware, il est donc conseillé d'utiliser un CPU assez rapide et
un peu de
mémoire RAM (on a un très bon fonctionnement avec un
Pentium Pro 200Mhz et 64Mb de RAM) . INRIA supporte autres
cartes DVB : Broadlogic et HDS
- Cyberstream 040 model (Harmonic data systems)vous trouverez plus d'information
sur les drivers UDLR dans la page Web d'Emmanuel
Duros.
-
PC: Operating system: FreeBSD
Release 2.2.8
Pour les personnes sans expérience avec FreeBSD:
vous trouverez ici
un complet manuel d'intallation.et aussi la
doumentattion pas à pas pour l'intallation
des relases 2.2.7/ 3.1/4.0 . Vous trouverez ici les ftp's
pour la release
FreeBSD
2.2.8
-
Pile KAME (release 8/9/99).
La release qu'a été testé est
: Kame stable 8/09/1999 (download)
.
Pour l'installation suivre les instructions dans le fichier INSTALL
dans le répertoire "kame"
Vous pouvez aussi installer la dernière version: kame
4/07/2000 (mais il n'a pas été testé)
-
Connectivité Internet, ATM ou ISDN terrestre pour la voie
de retour "UDLR".

DRIVERS
UDLR-IPv6 :
Pour avoir plus d'informations sur UDLR et les drivers
IPv4 pour différents types des cartes DVB je vous
recommande la consultation de la page web d 'Emmanuel
Duros .
Information
Général :
Les drivers DVB ont été développés
dans l'environnement FreeBSD 2.2.x. la carte est configurable à
niveau IP
avec la commande " ifconfig ".
Les paquets envoyées à la carte DVB provenant
de la souche IP sont passés au dispositif " link layer tunneling
mechanism pseudo device (lltm)".
Pseodo-device (lltm) : Le pseudo-device "lltm"
intercepte les paquets destinés à la carte DVB. Fondamentalement,
il copie tous les paquets ne pouvant pas être envoyées
sur la carte dans le dispositif "/dev/ul0". La daemon " dvtunneld
"
réalise la lecture en bloque du dispositif "/dev/ul0". Chaque
paquet lu est encapsulé derrière un en-tête IP avec
adresse
destination l'adresse bidirectionnel de l'émetteur ("feed)".
Le paquet est envoyé sur l'interface terrestre. (Le mécanisme
est décrit dans le draft UDLR
).
Le code MPE contient une série de fonctions pour
l'encapsulation/décapsulation des paquets IP du paquet "multiprotocol
encapsulation".
La commande " dvconfig " configure la carte DVB à
niveau physique (fréquence du tuner , fréquence symboles....…)
Vous deviez avoir une adresse Ipv4/Ipv6
affecte à l'interface satellite (dv0). Vérifier le plan d'adressage
AIRS et me
contacter pour l'affectation
des adresses Ipv4 (Ipv6 en auto-conf)
INSTALLATION
La partie suivante suppose que vous aviez installé
FreeBSD et la souche KAME correctement dans votre récepteur.
Il est très recommandable vérifier que dans votre kernel
vous aviez les lignes :
options MROUTING
# Multicast routing
pseudo-device bpfilter
2 # Berkeley packet filter
L'architecture de la carte n'était pas bien désignée,
la CPU gaspille le temps en attendent sur le bus ISA pour charger
les donnés de la carte. Pour ce motif si vous aviez un driver
IDE il est très recommandable l'utilisation du maximum débit
possible entre le contrôleur et le driver avec les flags
0xe0ffe0ff :
controller wdc0 at isa? port "IO_WD1" bio
irq 14 flags 0xe0ffe0ff vector wdintr
Aussi assurez-vous que vous aviez configuré le host comme "
gateway " dans " /etc/rc.conf "
gateway_enable="YES"
# Set to YES if this host will be a gateway.
Préparation
Vérifier que vous aviez l'arbre des répertoires suivants
:
-
dvb-ipv6-1.0:
if_dv.c if_dvreg.h
-
dvconfig-ipv6-1.0: dvb.cfg dvconfig*
-
dvtunneld-ipv6: dvtunneld*
dvtunneld.cfg
-
lltm-ipv6-1.0:
ul.c ul_share.h
ulio.h
-
mpe-ipv6-1.0: crc32.c fpid.h
mpe_in.c mpeg2_in.c
filter.h mpe.h
mpeg2.h rdtsc.h
-
Maintenant vous deviez copier les packages dans le répertoire final
:
Copier les fichiers :
-
dvb-ipv6-1.0/*
/sys/i386/isa
-
dvconfig-ipv6-1.0/dvconfig /sbin
-
dvconfig-ipv6-1.0/dvb.cfg /etc
-
mpe-ipv6-1.0/*
/sys/net/
-
dvtunneld-ipv6/dvtunneld
/sbin
-
dvtunneld-ipv6/dvtunneld.cfg /etc
-
lltm-ipv6-1.0/ul.c
/sys/dev/
-
lltm-ipv6-1.0/ul_share.h
/sys/dev/
-
lltm-ipv6-1.0/ulio.h
/sys/sys/
Nouveau
noyau
-
Ajouter dans /sys/conf/files
net/mpe_in.c
optional mpe
net/crc32.c
optional mpe
net/mpeg2_in.c
optional mpe
-
Ajouter dans /sys/i386/conf/files.i386
i386/isa/if_dv.c
optional dv
device-driver
dev/ul.c
optional ul
device-driver
Dans votre fichier de
configuration du kernel ajouter:
pseudo-device mpe
pseudo-device ul
1
device dv0 at isa? port 0x310 net irq 11
vector dv_fifo_intr
Note: Pour choisir le IRQ et le port adresse
regarder la page de configuration des interrupteurs
del la carte sur la page web d'Emmanuel
Duros (votre BIOS doit être configuré pour réserver
le IRQ
au bus ISA)
-
Les données sont chargées utilisant: les modes: niveau
d'interrupt et pour "pooling ": Nous avons
besoin de 10ms à niveau d'interruption horloge.
Dans /sys/i386/isa/clock.c add ajouter l'appel à
dv_clkintr()
dans clkintr():
static void
clkintr(struct clockframe frame)
{
dv_clkintr(); /* Only
one function added here - No other modif.
*/
/* comment out when not compiling the reception driver */
timer_func(&frame);
switch (timer0_state)
{
...
...
-
Création du "node " pour le pseudo dispositif lltm :
-
Compile le nouveau noyau. Reboot et vous aviez fini !
DVCONFIG
Lancer 'dvconfig -f' pour configurer
la carte et vérifier avec la commande 'dvconfig'
que vous étiez
"locked" sur le signal porteur . Le message suivant doit apparaître
:
$> dvconfig
Satellite parameters read from card dv0
Tuner frequency = 2023.7 MHz
LNB power supply = 14 V + 22 KHz
Symbol frequency = 2.222 MHz
Pid is 0x03
PID0 = 0x0300 PID1 = 0xFFFF PID2 = 0xFFFF PID3
= 0xFFFF PID4 = 0xFFFF
14:47:12 - Carr off = +77 KHz CBER = 1.9E-04 VBER = 0.0E+00
14:47:14 - Carr off = +77 KHz CBER = 1.4E-04 VBER = 0.0E+00
...
Si l'offset du signal est plus grand que +/- 200 KHz votre carte
n'est pas bien configuré. Pour régler le problème
éditer le fichier "/etc/dvb.cfg "et modifier le paramètre
"TUNER_FREQ " de la forme suivante :
Soustraire le résultat obtenu d'Offset au paramètre
TUNE_FREQ. (par exemple si l'offset est -272 KHz
(avec r'ef'erence +272 KHz) ajouter 0.272 MHz a la fréquence
du tuner.
Comme exemple voir le fichier de conf. De " pecman " :
# Configuration of the DVB receiver
# Bugs and comments to Emmanuel Duros
# Email: eduros@sophia.inria.fr
# Email: rrizo@sophia.inria.fr
TUNER_FREQ: 2023.7 #
Tuner frequency
SYMBOL_FREQ: 2.222
# Symbol frequency
# PID listen to
PID0: 0x0300
# IPv6
PID1: 0xFFFF
# NULL PIDs
PID2: 0xFFFF
#
PID3: 0xFFFF
PID4: 0xFFFF
LNB_CONF: 0xC0
# LNB configuration
# 14V only : 0xE0
# 14V + 22 KHz: 0xC0
# 18V only : 0xF0
# 18V + 22 KHz: 0xD0
Lancer 'dvconfig -f' à nouveau et vérifier
l'offset avec 'dvconfig'.
( 'dvconfig -h' pour des infromations sur dvconfig )
DVTUNNELD DAEMON
La daemon dvtunneld met en ouvre le
protocole "Dynamic Tunneling Configuration Protocol" décrit dans
le draft UDLR . Quand la daemon dvtunneld
est lancé il envoi un message de "joint" sur l'adresse multicast
224.0.1.124 sur l'interface dv0 interface. La route multicast dois
être mise en place sur l'interface dv0 : dans
le fichier /etc/rc.conf vérifier que vous avez la ligne suivante
:
static_routes="multicast" # Set to static route list (or leave
empty).
route_multicast="224.0.0.0 -netmask 0xf0000000 -interface dv0"
Une foi la carte est configuré lancer la daemon dvtunneld :
$> dvtunneld &
Il détecte automatiquement la présence d'émetteurs.
Pour vérifier que vous receviez les messages HELLO :
$> tail -f /var/log/messages
...
Oct 6 18:39:32 pocman dvtunneld: New active feed: UDL IP=x.x.x.x
Oct 6 18:39:32 pocman dvtunneld:
BDL IP=x.x.x.x
Maintenant vous pouvez pinger notre émetteur satellite
$> ping(6) star0
Configuration Final
Quand tout est correctement installé vous pouvez ajouter les lignes suivantes dans votre fichier de configuration
/etc/rc.local
# put your local stuff here
/sbin/dvconfig -f
/sbin/dvtunneld &
Anything went wrong ? Go to the FAQ
!
Abréviations
AF
Assured Forwarding
AH
Authentication Header
ATM Asynchronous
Transfer Mode
DVB Direct Video Broadcasting
EF Expedited
Forwarding
GRE Generic
Routing Encapsulation
IETF Internet Engineering Task Force
IP Internet Protocol
IPng Internet Protocol next generation
IPv6 Internet Protocol version 6
IPv4 Internet Protocol version 4
ISP Internet Service Provider
LAN Local Area Network
MAC Medium
Access Control
MARS Multicast Address Resolution Server
MPEG II Moving
Pictures Experts Group Layer 2
MPE Multi-Protocol
Encapsulation
MTU Maximum
Transmit Unit
PID Program
IDentifier
PVC Permanent Virtual Circuit
QoS Quality of Service
RFC Request For Comments
RM Reliable Multicast
UDLR Uni-Directional
Link Routing
VC Virtual Circuit
WAN Wide Area Network
Références
[UDLR]
: "A
Link Layer Tunneling Mechanism for Unidirectional Links "
W. Dabbous, Y. Zhang, E. Duros, N. Fujii.
[DVB] :Digital
Video Broadcast (DVB). ETSI
EN
301 192 V1.1.1
[MPEG-2] :MPEG-2.
ISO IEC 13818.
[GRE] :'Generic
Routing Encapsulation (GRE)',rfc 2784 D. Farinacci, T. Li, S. Hanks,
D. Meyer, P. Traina. Draft IETF.
|