Écouter la radio DAB+ avec welle-cli

Le projet est d’écouter la radio DAB+ streamée dans le réseau local à partir d’un Raspberry Pi sur un autre Raspberry Pi.

Le récepteur est une clé rtl-sdr connectée à une antenne de toit, branchée à un Raspberry Pi en usb, le tout connecté en filaire au réseau local via la prise RJ45.

Les antennes de toit, de haut en bas : 1 UHF (TNT), 2 VHF (bande III pour DAB+ puis bande II pour FM)

Un autre raspberry Pi possédant une carte son (Pi Sound) va servir de poste d’écoute. Le module Pi Sound n’est pas obligatoire dans l’absolu mais il est pratique car possède un potentiomètre de volume et un bouton programmable dont on va décrire ses affectations.

à partir d’une fresh install Raspberry Pi OS sous un Raspberry Pi 3B+

Mise à jour de la distribution

sudo apt update && sudo apt full-upgrade && sudo apt autoremove

Installation des dépendances de welle-io, compilation et installation de l’outil cli

Note: l’absence de libasound2-dev ne va pas bloquer la compilation mais au runtime on ne pourra rien écouter avec alsa. Tous les autres paquets sont obligatoires.

sudo apt install git cmake libfftw3-dev libmp3lame-dev libmpg123-dev librtlsdr-dev libfaad-dev libasound2-dev
git clone https://github.com/AlbrechtL/welle.io.git
cd welle.io
mkdir build
cd build
cmake .. -DRTLSDR=1 -DBUILD_WELLE_IO=OFF -DBUILD_WELLE_CLI=ON
make
sudo make install

La commande welle-cli est désormais installée dans /usr/local/bin.

Petit aparté, si vous désirez compiler welle.io (la version avec interface graphique) sous MacOS, la dépendance avec QT est requise. Voici les commandes :

brew install qt@5
git clone https://github.com/AlbrechtL/welle.io.git
cd welle.io
mkdir build
cd build
cmake .. -DRTLSDR=1 -DBUILD_WELLE_IO=ON -DBUILD_WELLE_CLI=ON -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt\@5/5.15.2/
make
# sudo make install ?

Côté serveur, Mon récepteur possède l’ip 192.168.1.73, dispose du paquet rtl-sdr et exécute le service rtl_tcp sur le port 1234. Le service est géré via systemd et voici le fichier de déclaration /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

Pour que ce nouveau fichier soit pris en compte, exécutez

sudo systemctl daemon-reload

puis lancez le service rtlsdr sur le serveur :

sudo systemctl start rtlsdr

On peut automatiser le lancement du service au boot de la machine :

sudo systemctl enable rtlsdr

Retournons à la machine cliente :

Avec le pisound, pour que cette carte son soit considérée comme celle par défaut, nous devons ajuster le fichier /home/pi/.asoundrc :

# card 1 pour pisound
pcm.output {
  type hw
  card 1
}

# card 1 pour pisound
ctl.!default {
  type hw
  card 1
}

l’identifiant des cartes son peut être obtenu avec la commande aplay -l :

$ aplay -l
**** Liste des Périphériques Matériels PLAYBACK ****
carte 0: Headphones [bcm2835 Headphones], périphérique 0: bcm2835 Headphones [bcm2835 Headphones]
  Sous-périphériques: 8/8
  Sous-périphérique #0: subdevice #0
  Sous-périphérique #1: subdevice #1
  Sous-périphérique #2: subdevice #2
  Sous-périphérique #3: subdevice #3
  Sous-périphérique #4: subdevice #4
  Sous-périphérique #5: subdevice #5
  Sous-périphérique #6: subdevice #6
  Sous-périphérique #7: subdevice #7
carte 1: pisound [pisound], périphérique 0: PS-12KMP7S snd-soc-dummy-dai-0 [PS-12KMP7S snd-soc-dummy-dai-0]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0

la carte 0 étant la sortie jack standard du Raspberry Pi.

On arrive donc à la commande suivante :

welle-cli -F rtl_tcp,192.168.1.73:1234 -c 11B -p "OUI FM"
  • -c $CANAL : le numéro du canal sur lequel émet le multiplex. (cf. ma table des multiplex DAB+ parisiens)
  • `-p $PROGRAMME : le label du programme en toute lettre qu’on peut récupérer dans les logs de welle-cli quand on se connecte à un multiplex :
Service list
  [0xfe43] CHANTE FRANCE  [component 0 ASCTy: DAB+ ] [subch 1 bitrate:88 at SAd:0]
  [0xf9f5] Melody  [component 0 ASCTy: DAB+ ] [subch 2 bitrate:88 at SAd:66]
  [0xfe50] GENERATIONS  [component 0 ASCTy: DAB+ ] [subch 3 bitrate:88 at SAd:132]
  [0xf650] SUD RADIO  [component 0 ASCTy: DAB+ ] [subch 4 bitrate:88 at SAd:198]
  [0xf20a] BLEU PARIS  [component 0 ASCTy: DAB+ ] [subch 5 bitrate:88 at SAd:264]
  [0xfefb] Radio Notre Dame  [component 0 ASCTy: DAB+ ] [subch 6 bitrate:88 at SAd:330]
  [0xfe35] EVASION  [component 0 ASCTy: DAB+ ] [subch 7 bitrate:88 at SAd:396]
  [0xf21d] OUI FM  [component 0 ASCTy: DAB+ ] [subch 8 bitrate:88 at SAd:462]
  [0xfe45] VOLTAGE  [component 0 ASCTy: DAB+ ] [subch 9 bitrate:88 at SAd:528]
  [0xf223] TSF JAZZ  [component 0 ASCTy: DAB+ ] [subch 10 bitrate:88 at SAd:594]
  [0xf22c] FG  [component 0 ASCTy: DAB+ ] [subch 11 bitrate:88 at SAd:660]
  [0xf22a] NOVA  [component 0 ASCTy: DAB+ ] [subch 12 bitrate:88 at SAd:726]
  [0xf22f] J A Z Z Radio  [component 0 ASCTy: DAB+ ] [subch 13 bitrate:88 at SAd:792]

TODO

  • description de la gestion du bouton du Pi Sound
  • ajout photo du pi sound
  • ajout photo du récepteur + clé
comments powered by Disqus