mumudvb v1.5.4 - README

= Site =
Site principal de mumudvb http://mumudvb.braice.net

= Description =
mumudvb est, à l'origine, une modification de dvbstream pour le cr@ns (http://www.crans.org), la quantité de modifications étant importante nous avons décidé de redistribuer le projet (dans l'esprit du logiciel libre).

Désormais mumudvb est un projet indépendant de dvbstream.

Mumudvb permet de diffuser plusieurs chaines d'un transpondeur dvb sur différentes adresses de multicast.

= Auteurs =

Auteur principal:
Brice DUBOST (mumudvb AT braice.net)

Contributeurs:
Manuel SABBAN (manu AT crans.ens-cachan.fr) (implémentation du getopt)
Stephane GLONDU (glondu AT crans.ens-cachan.fr) (page de man, nettoyage du Makefile)

Remerciements:
Dave CHAPMAN pour avoir écrit dvbstream.

Mailing-liste : 
"mumudvb-dev _AT_ lists DOT crans DOT org"

= Fonctionalités et contenu =

== Fonctonalités principales =
 * Possibilité de diffuser plusieurs chaînes d'un même transpondeur sur des ips différentes
 * Mumudvb est capable de réécrire à la volée le pid PAT pour n'annoncer que les flux réelement présents (utile pour les set-top boxes).
 * Support des chaines cryptées (si vous n'avez pas de CAM vous pouvez utiliser sasc-ng mais vérifiez que c'est autorisé dans votre pays)
 * Mumudvb est capable de trouver les chaines présentent dans le flux
 * Génération automatique des annonces SAP

== Liste détaillée des fonctionalités ==

 * Possibilité de diffuser plusieurs chaînes d'un même transpondeur sur des ips différentes
 * Pouvoir afficher la puissance du signal pendant l'utilisation
 * Liste mise a jour en temps réel des chaînes diffusées
 * Mumudvb peut être lancé en tant que démon (en cas d'exécution en tache de fond les logs sont écrit via syslog)
 * Ecriture dans un fichier de son pid
 * Pouvoir utiliser des fichiers de configuration
 * Mumudvb est capable de se tuer tout seul si la carte ne diffuse plus rien au bout d'un temps paramétrable
 * Mumudvb arrête de tenter d'accorder la carte au bout d'un temps paramétrable.
 * Permet de diffuser le meme pid sur plusieurs chaines (permet de creer des chaines avec plusieurs langues)
 * Support fonctionnel du DVB-T
 * Diffusion des pids obligatoires systématique
  * Les pids obligatoires sont les suivants :
   * PAT (0): Program Association Table
   * NIT (16) : Network Information Table : Fournit des informations à propos du réseau physique.
   * SDT (17) : Service Description Table : Le pid SDT contient des données décrivant les différents services ex : nom des services, fournisseur du service, etc.
   * EIT (18) : Event Information Table : Le pid EIT contient des données concernant les programmes comme : le nom du programme, l'heure de début, la durée, une description etc ...
   * TDT (20): Time and Date Table : Le pid TDT contient l'heure et la date. Cette information est dans un pid à part car sa mise à jour est fréquente.
 * Mumudvb s'inscrit lui même au flux (IGMP membership request) pour éviter que certains switchs braodcastent les flux
 * Mumudvb est capable de réécrire à la volée le pid PAT pour n'annoncer que les flux réelement présents (utile pour les set-top boxes).
  * Cette fonctionalité est expérimentale (03/2006) et ne permet pas de réécrire des Pids PAT plus gros que 188 bytes
 * Support expérimental des chaines cryptées
 * Mumudvb est capable de s'autoconfigurer, voir plus bas

D'autres programmes sont joints dans les sources de mumudvb:
 * relay : permet de relayer un flux (récupérer un flux en multicast et l'unicaster ou l'envoyer vers une autre ip de multicast) il peut être utilisé pour traverser des routeurs ou des firewalls interdisant le multicast.
 * recup_sap : mini client sap, récupère les annonces sap sur le réseau pendant 60 secondes et les écrit dans un fichier (non triées)


= Installation =

== A partir des sources ==

Pour installer mumudvb à partir des sources tapez:

make
make install (en root)

C'est tout!

Pour la TNT, les valeurs par défaut sont auto pour tous les paramètres, excepté pour la bande passante définie à 8MHz.

Note : Le support des cartes CAM dépends de libdvben50221 (fourni avec dvb-apps). Si vous ne voulez pas compiler le support des cartes CAM, vous devez taper 
"make NOCAMSUPPORT=1" au lieu de make.

Pour installer les scripts de démarrage (version debian), il faut copier les fichiers suivants

cp scripts/mumudvb /etc/default/mumudvb
cp scripts/mumudvb.init /etc/init.d/mumudvb

== A partir du paquet debian ==

Si vous voulez installer une version qui n'est pas encore dans les dépots, un

dpkg -i mumudvb*.deb

 suffira

= Utilisation =

Pour connaître la syntaxe des fichiers de configuration, se référer au fichier README_CONF

Pour une utilisation rapide de mumudvb, voir le fichier QUICKSTART

Syntaxe :
	mumudvb [options] -c fichier_de_configuration
	mumudvb [options] --config fichier_de_configuration
Les différentes options possibles sont : 

-d, --debug
	ne se lance pas en démon et affiche les messages sur la sortie standard et d'erreur

-s, --signal
	Affiche la force du signal pendant que la carte s'accorde et, une fois que la carte est accordé, toutes les 5 secondes

-h, --help
	affiche l'aide

-v
	Rends mumudvb plus "verbeux"

-q
	Rends mumudvb plus silencieux

Signaux : (voir la page de man de kill)
    SIGUSR1 : change l'affichage de la puissance une fois la carte tunée, s'il était absent il devient présent et inversement

= Autoconfiguration =

Mumudvb est capable de s'autoconfigurer, c'est a dire que mumudvb est capable de trouver la plupart des parametres pour la diffusion des chaines dans le flux
et ainsi simplifier la vie de l'utilisateur.

Mumudvb est capable de faire deux types d'autoconfiguration : 

== Autoconfiguration Complète ==

C'est la manière la plus simple d'utiliser mumudvb

Utilisez ce mode lorsque vous voulez diffuser un transpondeur complet.

Dans ce mode, mumudvb va trouver pour vous, les différentes chaînes, leurs noms et leurs PIDs (PMT, Audio, Vidéo, PCR, Sous-titres, Télétexte et AC3).

Pour utiliser ce mode vous devez : 
 * Définir les parametres pour l'accord de la carte (fréquence polarisation etc) dans le fichier de configuration
 * Ajouter "autoconfiguration=2" dans le fichier de configuration
 * Vous n'avez a définir aucune chaîne
 * Pour avoir les messages dans la console, pensez à utiliser le paramètre "-d" : 
   ex : mumudvb -d -c your_config_file

Exemple de fichier de configuration : 

-----
freq=11296
pol=h
srate=27500
autoconfiguration=2
-----

Les chaînes seront diffusées sur les ip de multicast 239.100.c.n où c est le numéro de carte (0 par défaut) et n le numéro de chaîne.

Si vous n'utilisez pas la directive common_port, mumudvb utilisera le port 1234.

Par défaut les annonces sap sont générées automatiquement si vous utilisez ce mode d'autoconfiguration. Pour les désactiver ajoutez une ligne "sap=0" apres la ligne autoconfiguration=2.

== Autoconfiguration "simple" ==

Utilisez ce mode lorsque vous voulez controller le nom des chaînes, leurs ip et quelles chaines vous voulez diffuser

Dans ce cas, vous avez a préciser pour chaque chaîne : 
 * L'adresse ip
 * Le port (optionnel si vous utilisez common_port)
 * Le nom
 * Le pid PMT 

Et vous avez a ajouter "autoconfiguration=1" au début de votre fichier de configuration.

Mumudvb trouvera les autres PIDs de chaque chaîne (Audio, Vidéo, PCR, Sous-titres, Télétexte et AC3) avant de les diffuser.

Note : si vous précisez plus d'un PID pour une chaine, mumudvb désactivera l'autoconfiguration pour cette chaîne.

= Sap announces =

Les annonces sap permettent aux clients de connaitre les flux diffusés automatinquement

VLC et la plupart des set-top-boxes les supporte.

Mumudvb génerera et enverra automatiquement les annonces sap si cela est demandé dans le fichier de configuration ou si le mode autoconfiguration complète est choisi.

Les annonces sap sont envoyées pour les chaines détectées comme étant "vivantes". Si une chaine stoppe sa diffusion, mumudvb arretera de diffuser les annonces la concernant jusqu'a la reprise de la diffusion.


= Surveiller mumudvb =

Vous pouvez utiliser monit (http://mmonit.com/monit/) pour surveiller mumudvb et le redemarrer en cas de problemes (certaines cartes freezent au bout d'un certain temps).

Pour cela, vous devez installer les scripts de demarrage (fournis dans le repertoire scripts) et ajoutez les lignes suivantes dans votre /etc/monit/services : 

----
check process mumudvb with pidfile /var/run/mumudvb/mumudvb_carte0.pid
    start program = "/etc/init.d/mumudvb start"
    stop program = "/etc/init.d/mumudvb stop"
----


Pour plus d'informations consultez le site de monit


= Détails techniques (en vrac) =

 * mumudvb permet de recevoir un signal satellite (DVB-S), Terrestre (DVB-T) ou cable (DVB-C). Il y a aussi un support préliminaire de l'ATSC.

 * mumudvb diffuse les Pids suivants avec toutes les chaînes (conformément à la norme MPEG2-TS)
   * PAT (0): Program Association Table
   * NIT (16) : Network Information Table : Fournit des informations à propos du réseau physique.
   * SDT (17) : Service Description Table : Le pid SDT contient des données décrivant les différents services ex : nom des services, fournisseur du service,\ etc.
   * EIT (18) : Event Information Table : Le pid EIT contient des données concernant les programmes comme : le nom du programme, l'heure de début, la durée,\ une description etc ...
   * TDT (20): Time and Date Table : Le pid TDT contient l'heure et la date. Cette information est dans un pid à part car sa mise à jour est fréquente.

 * Performances: mumudvb consomme 15% du processeur d'un celeron 2.6GHz avec une carte Hauppauge et un noyau Linux 2.6.9 pour un transpondeur plein (mumudvb a été développé à l'origine dans ce but, après des tests avec VLC qui offrait de piteuses performances, une instabilité chronique et avec des fonctionnalités manquantes pour notre utilisation)

 * A éviter : les chipset via non récents ou nforce, ces chipset sont des chipsets grand public, incapables de gérer correctement une grande quantité de données sur le bus PCI.

 * mumudvb est capable de diffuser de la TNT (télévision numérique terrestre). N'oubliez pas de vérifier les paramètres de réception si vous avez un problème.

 * Lors de l'exécution le programme écrit la liste des chaînes diffusées dans le fichier /var/run/mumudvb/chaines_diffusees_carte%d le %d est remplacé par le numéro de carte, le chemin n'est pas paramétrable mais cela est facile à implémenter, envoyez moi un mail si vous en avez besoin. Ce fichier contient la liste des chaînes diffusées (actualisée toute les 5 secondes) de la forme suivante (pour chaque ligne) : "nom:ip:port"

 * mumudvb a été testé avec plus de 6 cartes, et peut en supporter plus.
  * au (04/2005) pour utiliser plus de 4 cartes, les possibilités sont d'utiliser un noyau 2.4.* avec devfs :-( ou d'utiliser un noyau > 2.6.11 avec udev compilé statiquement avec klibc en attendant la mise a jour de la glibc. Note : ce probleme est resolu désormais (testé avec udev 104 et libc6 2.7 ie debian etch).

= Problèmes connus =

== Vlc incapable de lire le flux vidéo mais pas xine ou mplayer ==

 * Pour Vlc, il faut indiquer le pid PMT en plus des pids audio et vidéo (sinon, il est aussi incapable de voir ce qui est présent dans le flux). Ceci est un problème courant, en effet scan ne fournit pas le pid PMT mais son numéro. pour résoudre ce problème, on peut utiliser {{{vlc -v}}} qui va donner une ligne de la forme : {{{[00000269] ts demuxer debug:   * number=1025 pid=110}}} vous aurez la correspondance entre le nombre donné par scan et le pid réel, plus d'informations sont données dans le fichier readme-conf. dvbsnoop permet aussi d'obtenir cette information. Vous pouvez aussi utiliser l'autoconfiguration.

== VLC lit la video mais pas le Son ==

 * Ceci peux arriver lorsque les information PCR (program clock reference) ne sont pas transmises avec la video mais avec un pid a part. Verifiez si le pid PCR est bien transmis.

== Crash du système en utilisant mumudvb ==

 * les chipset via non récents ou nforce, ces chipset sont des chipsets grand public, incapables de gérer correctement une grande quantité de données sur le bus PCI, ils peuvent faire planter la machine complètement.

== Problème d'accord avec la TNT ==

 * Il faut vérifier vos paramètres d'accord, en sachant que le paramètre bandwidth ne peux pas être mis en auto.


