Réception VHF par internet pour moins de 100 Euros

Attention :

Cet article est fait pour les utilisateurs avancés de Raspberry et de Linux, c’est plus un bloc notes pour moi qu’autre chose.

Objectif : réaliser à l’aide d’un Raspberry, une radio d’écoute VHF avec diffusion par internet d’une fréquence pour une population limitée (identification par mot de passe).

En avons-nous le droit ?

Au niveau législatif, il faut savoir que la diffusion des messages radios par internet ne peut se faire qu’à usage restreint pas de pub sur facebook ! et prévoir une identification par mots de passe à vos membres, et pilotes locaux). Mais la diffusion même à tout le public qui serait à l’intérieur des locaux de votre Aéroclub (sur place, dans l’aérodrome) est tout à fait possible et courante depuis de nombreuses années à l’aide d’une ancienne radio, d’une alimentation 220V bricolée et qu’un ancien ampli Hi-Fi

Matériel

  • Raspberry Pi 3B ou Pi4
    incluant : connecteur RJ45, 4 USB et le Wifi)
    Evitez le Pi1
    Pi2 : possible mais vous n'aurez pas de Wifi
    Pi zéro : possible mais vous aurez besoin d'adaptateurs USB voir même d'un hub usb si vous souhaitez y connecter un clavier
    Une carte micro SD (mini 8Go)
    Un récepteur DVB compatible SDR Ex : RTL2833U

Comment ça marche ? : je simplifie beaucoup ! C’est volontaire.

  • Le Raspberry est un nano ordinateur, la carte SD fait office de disque dur. Il tourne sous Linux (remarque, une vielle tour de PC peut très bien faire l’affaire)
  • Le tuner TNT , comme tout périphérique, nécessite un pilote, on va le détourner de sa fonction première qui consiste à capter les ondes TNT de la TV pour qu’il capte les ondes VHF et lui demander d’envoyer le flux vers la carte son (et oui, dans un Raspberry, il y a une carte son !)
  • On va utiliser darkice pour qu’il récupère le flux de la carte son et le transformer en un flux compatible avec internet et l’envoyer vers un programme qui permettra la diffusion sur le web
  • La diffusion du flux vers internet se fera via icecast2

Quelles sont les étapes ?

  • D’abord disposer d’un Raspberry Pi Zéro, 2 , 3 ou 4.  Evitez le 1 : trop peu puissant. Remarque, si vous utilisez une tour de PC, cette étape est inutile
  • Paramétrer via raspi-config:
    • driver Open GL “Legacy”
    • le “Headphone” en sortie sonore”
  • Désactiver les services user de pulseaudio :
    • sudo systemctl –user –global stop pulseaudio.socket pulseaudio.service
    • sudo systemctl –user –global disable pulseaudio.socket pulseaudio.service
  • Reparamétrer pulseaudio pour un usage system
    • nano /etc/pulse/client.conf

mettre : autospawn = no

    • nano /etc/pulse/system.pa

mettre loadmodule modulenative-protocol-unix auth-anonymous=1

et loadmodule modulenative-protocol-tcp auth-anonymous=1

  • Lancer manuellement pulseaudio pour vérifier que les paramètres sont OK
pulseaudio --system

Pulseaudio doit alors démarrer et surement vous dire qu’il n’est pas fait pour fonctionner en mode système.

devices:
({
type = "rtlsdr";
index = 0; #numéro du périphérique RTL-SDR (si vous en avez acheter 2, ce peut-être 0 ou 1)
gain = 32; #Gain 
correction = 0;
centerfreq = 120.0; 
mode = "scan";
channels:
({
freqs = ( xxx.xxx );  # remplacer xxx.xx par la fréquence à écouter
labels = ( "Nom de la radio" ); # libellé de votre choix
squelch_threshold = ( -50 );  # niveau du squelch
outputs: 
({
type = "pulse";
});
});
});
  • Tester la configuration :
    • rtl_airband -fe

      Le programme doit se lancer, trouver la fréauence à écouter et réussir à se connecter à pulse.

  • Installer icecast2
    • apt-get install icecast2
  • Activer le service
    • systemctl enable icecast2
  • Préparer un fichier de configuration (/etc/icecast2/icecast.xml), poins importants à personnaliser :
 <location>Sur Terre</location> 
<admin>admin@root.com/admin>
<authentication>
<source-password>mot_de_passe_pour_pousser_le_flux_audio</source-password>
<admin-user>admin</admin-user>
<admin-password>admin_password</admin-password>
</authentication>
<hostname>raspberrypi</hostname>
<listen-socket>
<port>8000</port>
<shoutcast-mount>/radio.ogg</shoutcast-mount> 
</listen-socket>
  • Démarrer le service et vérifier qu’il est ok
systemctl start icecast2
systemctl status icecast2
  • Installer darkice
apt-get install darkice
  • Faire un fichier de paramétrage pour darkice : /etc/darkice/darkice.cfg
[general]
duration = 0 # duration in s, 0 forever
bufferSecs = 1 # buffer, in seconds
reconnect = yes # reconnect if disconnected

[input]
device = pulse # or `pulse' for Pulseaudio
sampleRate = 11025 # sample rate 11025, 22050 or 44100
bitsPerSample = 16 # bits
channel = 2 # 2 = stereo

[icecast2-0]
bitrateMode = vbr # variable bit rate (`cbr' constant, `abr' average)
quality = 0.7 # 1.0 is best quality
format = vorbis # format. Choose `vorbis' for OGG Vorbis
server = localhost # or IP
port = 8000 # port for IceCast2 access
password = mot_de_passe_pour_pousser_le_flux_audio # source password to the IceCast2 server
mountPoint = radio.ogg # mount point on the IceCast2 server .mp3 or .ogg
name = maradio

  • Tester Darkice :
    • darkice -c /etc/darkice/darkice.cfg
  • C’est OK ? Alors comme malgré de multiples tentatives, impossible de démarrer pulse en mode service et que rtl_airband a la facheuse tendance à vouloir démarrer alors que son pilote n’est pas encore chargé, fair eun truc ignoble à peine digne d’un débutant
    • éditer /etc/rc.local mettre juste avant le exit 0
pulseaudio -D --system --disallow-exit
  • Reboot et vérification  de pulseaudio : ps -aux | grep pulse doit montrer que pulse est démarré
  • systemctl status icecast2 pour vérifier que icecast2 est démarré
  • Mise en place du service rtl_airband : via la vielle techno de init.d, je n’aime pas mais bon, avec systemd, il veut démarrer alors que l’usb n’est pas prêt alors….
    • Récupérer rtl_airband initd service
    • cp rtl_airband.initd_service /etc/init.d/rtl_airband
      chmod a+rx /etc/init.d/rtl_airband
      update-rc.d rtl_airband defaults
      systemctl enable rtl_airband
      systemctl start rtl_airband
      
  • Le service doit reconnaitre le fichier de configuration, trouver le récepteur et se connecter à pulseaudio normalement
  • Enfin, mettre en place le service darkice en récupérant : darkice et instserv
    • suffit de faire :
    • bash instserv.sh darkice.service
      systemctl start darkice
      systemctl status rtl_airband
      

Tout doit être ok alors dans un navigateur allez dans http://ipduraspberry:portchoisispouricecast

Ex : http://192.168.0.2:8000/ vous devriez vous un bouton d’écoute comme ceci :

Reste à faire quelque chose d’important : le routage mais surtout sécuriser l’accès pour que seules des personnes autorisées dans un cercle restreint puisse y accéder.

Pour les réglages du squelch : mettre une enceinte sur le pi et modifier le fichier de configuration de rtl_airband

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.