Diffuser la télé et la radio sur son réseau local

Table des matières

Je présente ici ma configuration pour diffuser la télévision (TNT) et la radio (FM et DAB+) reçues par voie hertzienne sur mon réseau local. Voyons le matériel nécessaire, les types de signaux à traiter et les différents logiciels utilisés.

Le matériel de réception

Tout d’abord un point sur la partie matérielle. Nous parlons de radiofréquences et de signaux transportés dans l’air, pour les recevoir il nous faut un bon lieu de réception dégagé en hauteur, par exemple un toit, et une antenne accordée à la fréquence que l’on veut recevoir.

Antennes toit

  • Une antenne UHF pour la TNT, polarisation horizontale, directive et orientée plein nord vers la tour Eiffel dans mon cas
  • Une antenne DAB+, polarisation verticale, omnidirectionnelle
  • Une antenne FM, polarisation verticale, omnidirectionnelle

Raspberry Pi + clé RTL-SDR

  • Une clé USB RTL-SDR connectée aux antennes
  • Une Raspberry Pi connectée en filaire au réseau local

La télévision TNT

La TNT, télévision numérique terrestre, est la technologie employée depuis 2005 en France métropolitaine pour la diffusion broadcast. La réception est anonyme et gratuite (nous payons cependant chaque année une contribution pour les chaînes de l’audiovisuel public).

Depuis 2016, la norme technique de diffusion est le DVB-T avec une compression MPEG-4 AVC (H.264). Les fréquences utilisées vont de 470 MHz à 694 MHz (bande UHF).

En TNT, les chaînes de télévision sont regroupées dans plusieurs multiplex. Un multiplex est affecté à un canal, et un canal correspond à une fréquence en MHz. Voici un tableau récapitulatif des canaux, fréquences, multiplex, et chaînes associées (pour la région parisienne). Chaque multiplex (mux) a une bande passante de 8 MHz, la fréquence indiquée est la fréquence centrale. J’ai limité la liste des canaux à ceux autorisés en France. En France, la polarisation est Horizontale pour l’ensemble des chaînes TNT. Toutes les chaînes sont diffusées en full HD (1920x1080) à l’exception des chaînes “SD” (720x576). Le ($) signifie chaîne à péage, mais je ne sais même plus comment recevoir la TNT payante…

Canal Fréquence Mux Chaînes
21 474 MHz
22 482 MHz R3
CNH3
DVB-T
769 Canal+
LCI (SD)
777 Paris Première (SD)
771 Canal+ Sport ($)
770 Canal+ Cinéma ($)
772 Planète+ ($)
23 490 MHz
24 498 MHz HEVC
DVB-T2
100 UHD1
200 UHD2
300 UHD3
25 506 MHz R2
NTN2
DVB-T
513 C8
515 BFM TV
516 CNews
517 CStar
518 Gulli
26 514 MHz
27 522 MHz
28 530 MHz R15
DVB-T
2050 Canal 31
2051 IDF1
2052 France 24
2053 viàGrandParis
29 538 MHz
30 546 MHz R4
Multi 4
DVB-T
1045 France 5
1025 M6
1031 Arte
1026 W9
1046 6ter
31 554 MHz
32 562 MHz R6
SMR6
DVB-T
1537 TF1
1542 TMC
1544 TFX
1538 NRJ 12
1545 LCP
33 570 MHz
34 578 MHz
35 586 MHz R1
SGR1
DVB-T
257 France 2
273 F3 Paris IDF
260 France 4
261 Culturebox
262 franceinfo: (SD)
368 BFM Paris
36 594 MHz
37 602 MHz
38 610 MHz
39 618 MHz
40 626 MHz
41 634 MHz
42 642 MHz R7
MHD7
DVB-T
2561 TF1 Séries Films
2562 L’Équipe
2565 RMC Story
2564 RMC Découverte
2563 Chérie 25
43 650 MHz
44 658 MHz
45 666 MHz
46 674 MHz
47 682 MHz
48 690 MHz

Capture GQRX - télévision TNT Visualisation de la partie supérieure du multiplex R4 (ma clé SDR ne permettant pas une largeur de bande de 8MHz).

Streamer la TNT

Sur la raspberry fraichement installée de raspbian, installez l’outil dvblast :

sudo apt install dvblast

Vérifiez que la clé sdr est bien reconnue, vous devez avoir présent les fichiers suivants

$ ls /dev/dvb/adapter0
demux0  dvr0  frontend0  net0

Les modules suivants doivent également être chargés :

$ lsmod | grep dvb
dvb_usb_rtl28xxu       28672  0
dvb_usb_v2             28672  1 dvb_usb_rtl28xxu
dvb_core              114688  2 dvb_usb_v2,rtl2832
mc                     40960  8 bcm2835_isp,bcm2835_codec,videobuf2_common,videodev,dvb_core,dvb_usb_v2,v4l2_mem2mem,videobuf2_v4l2

Importez ensuite dans un répertoire les fichiers de configurations et le script suivants :

r1.conf

# Multiplex R1 - SGR1 - 586.166MHz
239.255.0.2:1234  1 257 # France 2
239.255.0.3:1234  1 273 # France 3 Paris Ile-de-France
239.255.0.14:1234 1 260 # France 4
239.255.0.19:1234 1 261 # Culturebox
239.255.0.27:1234 1 262 # franceinfo:
239.255.0.30:1234 1 368 # BFM Paris

r2.conf

# Multiplex R2 - NTN2 - 506.166 MHz
239.255.0.8:1234  1 513 # C8
239.255.0.15:1234 1 515 # BFM TV
239.255.0.16:1234 1 516 # CNews
239.255.0.17:1234 1 517 # CStar
239.255.0.18:1234 1 518 # Gulli

r3.conf

# Multiplex R3 - CNH3 - 482.166 MHz
239.255.0.04:1234 1 769 # Canal+
239.255.0.43:1234 1 770 # Canal+ Cinéma
239.255.0.42:1234 1 771 # Canal+ Sport
239.255.0.45:1234 1 772 # Planète+
239.255.0.26:1234 1 776 # LCI
239.255.0.41:1234 1 777 # Paris Première
239.255.0.46:1234 1 778 # Canal+

r4.conf

# Multiplex R4 - Multi 4 - 546.166MHz
239.255.0.06:1234 1 1025 # M6
239.255.0.09:1234 1 1026 # W9
239.255.0.07:1234 1 1031 # Arte
239.255.0.05:1234 1 1045 # France 5
239.255.0.22:1234 1 1046 # 6ter

r6.conf

# Multiplex R6 - SMR6 - 562.166 MHz
239.255.0.1:1234  1 1537 # TF1
239.255.0.12:1234 1 1538 # NRJ12
239.255.0.10:1234 1 1542 # TMC
239.255.0.11:1234 1 1544 # TFX
239.255.0.13:1234 1 1545 # LCP / Public Sénat

r7.conf

# Multiplex R7 - MHD7 - 642.166 MHz
239.255.0.20:1234 1 2561 # TF1 Séries Films
239.255.0.21:1234 1 2562 # L'Équipe
239.255.0.25:1234 1 2563 # Chérie 25
239.255.0.24:1234 1 2564 # RMC Découverte
239.255.0.23:1234 1 2565 # RMC Story

r15.conf

# Multiplex local R15 - 530.166MHz
239.255.0.31:1234 1 2050 # Canal 31 / Télé Bocal / Demain TV
239.255.0.32:1234 1 2051 # IDF1
239.255.0.33:1234 1 2052 # France 24
239.255.0.34:1234 1 2053 # viàGrandParis

hevc.conf

# Multiplex test HEVC - 498MHz
239.255.0.81:1234 1 100 # test UHD1
239.255.0.82:1234 1 200 # test UHD2
239.255.0.83:1234 1 300 # test UHD3

stream.sh

#!/usr/bin/env bash

##
# Lancement de diffusion d'un multiplex avec dvblast
# source: https://aerogus.net/posts/diffuser-tele-radio-reseau-local/
##

[[ $# -lt 1 ]] && echo "mux manquant" && exit

case $1 in
  r1)
    dvblast -f 586000000 -c r1.conf
    ;;
  r2)
    dvblast -f 506000000 -c r2.conf
    ;;
  r3)
    dvblast -f 482000000 -c r3.conf
    ;;
  r4)
    dvblast -f 546000000 -c r4.conf
    ;;
  r6)
    dvblast -f 562000000 -c r6.conf
    ;;
  r7)
    dvblast -f 642000000 -c r7.conf
    ;;
  r15)
    dvblast -f 530000000 -c r15.conf
    ;;
  hevc)
    dvblast -f 498000000 -c hevc.conf
    ;;
  *)
    echo "mux inconnu"
    ;;
esac

n’oubliez pas de rendre exécutable ce script :

chmod +x stream.sh

Usage : stream.sh r1

Ceci lancera dvblast et streamera le multiplex r1 sur les adresses des groupes multicast indiquées dans le fichier de conf.

Côté client, prenons VLC

vlc rtp://239.255.0.19:1234

Cette ip:port correspond à la chaine Culturebox, elle devrait donc s’afficher à l’écran.

Capture VLC - télévision TNT Capture d’écran de VLC avec un flux TNT

Enfin si on veut lancer en plein écran, et avec le désentrelacement, on peut ajouter des paramètres :

vlc --fullscreen --deinterlace=1 --deinterlace-mode=yadif2x rtp://239.255.0.19:1234

La radio FM

  • Bande II VHF (de 88 MHz à 108 MHz)
  • Bande passante 200 kHz par station

Voici un relevé des stations que je capte.

Station Fréquence RDS Signal
TSF Jazz 86.7 MHz ? Moyen
? 86.9 MHz ? Faible
France Inter 87.6 MHz ? Faible
France Inter 87.8 MHz F201 Fort
? 88.0 MHz ? Moyen
Generations 88.2 MHz FE50 Bon
? 88.4 MHz ? Moyen
? 88.6 MHz ? Bon
Rire&Chansons 88.7 MHz ? Brouillé
Evasion 88.8 MHz ? Brouillé
R F I 89.0 MHz FE10 Bon
Sensations 89.2 MHz ? Moyen
? 89.4 MHz FE5E Bon
Culture 89.6 MHz F202 Bon
? 89.7 MHz ? Brouillé
TSF Jazz 89.9 MHz F223 Bon
Terre de Mixes 90.1 MHz FE5F Moyen+
Nostalgie 90.4 MHz F218 Fort
? 90.7 MHz ? Moyen
Chante France 90.9 MHz FE43 Bon
? 91.0 MHz ? Brouillé
? 91.1 MHz ? Brouillé
Cherie FM 91.3 MHz F224 Bon
France Musique 91.5 MHz ? Brouillé
France Musique 91.7 MHz F203 Fort
France Musique 91.8 MHz ? Brouillé
France Musique 91.9 MHz F203 Fort
Mouv' 92.1 MHz F208 Bon
? 92.3 MHz ? Faible
? 92.4 MHz ? Brouillé
Tropiques FM 92.6 MHz FE43 Bon
Mille Pattes 92.9 MHz FE96 Fort
? 93.0 MHz ? Brouillé
? 93.1 MHz ? Faible
? 93.2 MHz ? Moyen
? 93.3 MHz ? Brouillé
Culture 93.5 MHz F202 Bon
? 93.8 MHz ? Brouillé
? 93.9 MHz ? Moyen
Orient 94.3 MHz F22B Bon
? 94.7 MHz ? Brouillé
? 94.8 MHz F097 Bon
? 95.0 MHz F201 Moyen
? 95.2 MHz ? Moyen
? 95.4 MHz ? Moyen/souffle
? 95.6 MHz ? Moyen
? 95.8 MHz ? Moyen
Skyrock 96.0 MHz F214 Fort
BFM Business 96.4 MHz F227 Bon
? 96.9 MHz ? Bon
Rire&Chansons 97.4 MHz ? Bon
? 97.8 MHz ? Moyen
? 98.0 MHz ? Bon
? 98.2 MHz ? Moyen Brouillé
Latina 99.0 MHz ? Faible Brouillé
Evasion 99.3 MHz FE35 Très Fort
Sud Radio 99.9 MHz ? Moyen
NRJ 100.3 MHz ? Moyen
? 100.7 MHz ? Moyen/souffe
classique 101.1 MHz ? Bon
? 101.3 MHz ? Moyen
? 101.5 MHz ? Moyen+
Fun radio 101.9 MHz ? Moyen+
OUI FM 102.3 MHz ? Moyen/souffle
? 102.5 MHz ? Faible/bruit
M RADIO 102.7 MHz F225 Bon
? 102.9 MHz ? Mauvais
RMC 103.1 MHz F216 Bon
VIRGIN 103.5 MHz F219 Bon
? 103.9 MHz ? Bon
RTL 104.3 MHz F211 Bon
EUROPE 1 104.5 MHz ? Brouillé
EUROPE 1 104.7 MHz F213 Bon
? 104.9 MHz ? Moyen
? 105.1 MHz ? Bon
France Info 105.5 MHz F206 Bon
France Info 105.7 MHz F206 Bon
RTL2 105.9 MHz F215 Fort
? 106.2 MHz ? Moyen
? 106.3 MHz ? Moyen brouillé
LOVELY 106.5 MHz FE82 Fort
? 106.7 MHz ? Moyen
? 106.9 MHz ? Moyen
France Bleu 107.1 MHz F20A Bon
Handi FM 107.3 MHz ? Moyen
? 107.5 MHz ? Moyen
Autoroute FM 107.7 MHz ? Moyen souffle

Capture GQRX - radio FM Visualisation de la forme d’onde de la bande FM. Accordé sur OÜI FM 102.3, on remarque les gros sons des voisins 101.9 (Fun Radio) et 102.7 (M Radio)

Streamer la FM

Méthode 1

Sur la raspberry fraichement installée de raspbian, installez l’outil rtl_tcp issu du paquet rtl-sdr. C’est un “serveur de spectre de signal en quadrature”. Ceci va nous permettre de partager sur le réseau les données radio reçues par la clé. Attention, la bande passante d’un signal I/Q est assez gros (5Mo/s), la connexion filaire c’est mieux.

sudo apt install rtl-sdr

saisissez le fichier suivant :

/etc/systemd/system/rtlsdr.service

[Unit]
Description=RTL-SDR Server
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/bin/sh -c '/usr/bin/rtl_tcp -a $(hostname -I)'
WorkingDirectory=/home/pi
StandardOutput=inherit
StandardError=inherit
Restart=always

[Install]
WantedBy=multi-user.target

Puis chargez le serveur rtl_tcp au démarrage de la pi

sudo systemctl daemon-reload
sudo systemctl enable rtlsdr
sudo systemctl start rtlsdr

Note: pour la section Streamer le DAB+, méthode 1, le prérequis côté serveur sera le même.

côté client

GQRX

au démarrage :

  • device: other
  • device string: rtl_tcp=ip_raspberry_pi:1234

Méthode 2

  • côté serveur: rtl_fm_streamer
  • côté client: lecture via vlc http://ip_raspberry/fm/102300000

rédaction à finir

La radio DAB+

  • Bande III VHF (de 180MHz à 220 MHz)
  • Bande passante de 1,536 MHz par multiplex
  • Le code service semble être le même que le code PI du RDS en FM, pour les stations sur les 2 supports
Canal Fréquence Multiplex (Nom) (Service) Station
6A 181.936 MHz multiplex 2: intermédiaire
(RNT Paris 2)
F229 Beur FM
FE43 Chante France
FEE8 Crooner Radio
FE35 Évasion
FED6 FG Chic
F22D France Maghreb 2
F21C Latina
FEF2 MAXXIMUM
F22B Radio Orient
F21B Swigg
FEF3 Hello Paris
FEFD Vivre FM
FE45 Voltage
6C 185.360 MHz métropolitain 1
(démarrage le 15/07/2021)
???? Air Zen
???? Chérie FM
???? Fun Radio
???? Latina
???? M Radio
???? Nostalgie
???? NRJ
???? Radio Classique
???? Rire et Chansons
???? RTL
???? RTL 2
???? Skyrock
???? Skyrock Klassiks
6D 187.072 MHz multiplex 3: intermédiaire
(RNT Paris 3)
FE93 AFRICA RADIO
FED0 Antinea Radio
FAB6 euradio
FE53 MBS
FEFC Monte Carlo Doualiya (début le 09/02/2021)
FEEC MyZen radio
FEE3 Phare FM
FA84 Radio Bonheur 100% Chansons fr.
F228 Radio Courtoisie
FE82 Radio Lovely
F9F4 Radio Maria
F4FB Urban Hit
F9FA Virage Radio
8B 197.648 MHz métropolitain 2
(démarrage le 15/07/2021)
???? BFM Business
???? BFM Radio
???? Europe 1
???? FIP
???? France Culture
???? France Info
???? France Inter
???? France Musique
???? Mouv'
???? RFM
???? RMC
???? Virgin Radio
9A 202.928 MHz multiplex 4: local
(RNT Associative)
FE46 Aligre
FED1 AYP
F9F1 CapSao
FEF8 Cause Commune
FED7 Fréquence India
FEFF Fréquence Protestante
FEDB Ici & Maintenant
F21A Néo
FEE7 Radio Campus Paris
FEEF Radio Mandarin d’Europe (RME)
F68C Radio TER
FEFE WRP
9B 204.640 MHz multiplex 5: local
(RNT Paris 5)
FEE0 Aasman Radio
FEF5 AMI
FEE5 CINEMUSIC Radio
FEDC Hope Radio
FEDF Medi 1
FEF4 Mouvement Up (fin le 01/01/2021)
F7FA Pi-node
FEE4 PI-MG Radio
FEE6 Radio ALFA
???? Radio Club Paris & Île-de-France (pas de diffusion)
F8FE Radio Pitchoun
FE86 Sensations
9D 208.064 MHz multiplex towerCast F201 France Inter
F202 France Culture
F203 France Musique
F204 FIP
F206 France Info
F208 Mouv'
F20A France Bleu
11A 216.928 MHz multiplex 6: local
(RNT Paris 6)
FEE1 Collector Radio
FE41 Espace FM
FE50 Générations
FECF Les Inrocks Radio
FEE2 Paname
FED4 Radio Emotion
FEED Radio Life
FEF0 Radio Monaco
F222 SANEF 107.7 IDF
FEF7 Séquence FM
FEFA Trace FM Paris
FE34 Tropiques FM
11B 218.640 MHz multiplex 1: étendu
(démarrage le 13/04/2021)
FE43 Chante France
FE35 Évasion
F20A France Bleu Paris
FE50 Générations
???? Jazz Radio
???? Melody
FE40 Oüi FM
F22C Radio FG
FE32 Radio Notre-Dame
F22A Radio Nova
???? Sud Radio
F223 TSF Jazz
FE45 Voltage

Capture GQRX - radio DAB+ Une visualisation du multiplex 6A autour de 182MHz, je ne sais pas pourquoi la chute d’eau forme ces vaguelettes hypnotisantes à regarder 🤪

Streamer le DAB+

Méthode 1

  • côté serveur: rtl_tcp /!\ bande passante réseau 5Mo/s, filaire mieux. Cf. méthode 1 de streamer la FM
  • côté client: welle.io (avec GUI)

Capture welle.io - écoute de CINEMUSIC Radio en DAB+ Écoute de CINEMUSIC Radio en DAB+ avec welle.io

Méthode 2

dab_transmitter ?

à tester et finir la rédaction

Sources

J’ai eu comme sources d’inspiration mes différents boulots dans des stations de radio, et de l’autre côté de l’émetteur ma mission à l’INA au service captation Radio/TV (dépôt légal de l’audiovisuel). Voici quelques images glannées de cette dernière mission où j’ai eu à moderniser la chaine de captation de la radio FM.

Autres sources d’infos comme Wikipédia, le CSA, Radiodigi, Thierry Vignaud, Digitalbitrate…

comments powered by Disqus