É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.
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
1sudo 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.
1sudo apt install git cmake libfftw3-dev libmp3lame-dev libmpg123-dev librtlsdr-dev libfaad-dev libasound2-dev
2git clone https://github.com/AlbrechtL/welle.io.git
3cd welle.io
4mkdir build
5cd build
6cmake .. -DRTLSDR=1 -DBUILD_WELLE_IO=OFF -DBUILD_WELLE_CLI=ON
7make
8sudo 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, quelques dépendances dont QT sont requises. Voici les commandes :
1brew install qt@5 faad2 fftw mpg123 librtlsdr
2git clone https://github.com/AlbrechtL/welle.io.git
3cd welle.io
4mkdir build
5cd build
6cmake .. -DRTLSDR=1 -DBUILD_WELLE_IO=ON -DBUILD_WELLE_CLI=ON -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt\@5/5.15.2/
7make
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
1[Unit]
2Description=RTL-SDR Server
3Wants=network-online.target
4After=network-online.target
5
6[Service]
7ExecStart=/bin/sh -c '/usr/bin/rtl_tcp -a $(hostname -I)'
8WorkingDirectory=/home/pi
9StandardOutput=inherit
10StandardError=inherit
11Restart=always
12
13[Install]
14WantedBy=multi-user.target
Pour que ce nouveau fichier soit pris en compte, exécutez
1sudo systemctl daemon-reload
puis lancez le service rtlsdr
sur le serveur :
1sudo systemctl start rtlsdr
On peut automatiser le lancement du service au boot de la machine :
1sudo 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
:
1# card 1 pour pisound
2pcm.output {
3 type hw
4 card 1
5}
6
7# card 1 pour pisound
8ctl.!default {
9 type hw
10 card 1
11}
l'identifiant des cartes son peut être obtenu avec la commande aplay -l
:
1$ aplay -l
2**** Liste des Périphériques Matériels PLAYBACK ****
3carte 0: Headphones [bcm2835 Headphones], périphérique 0: bcm2835 Headphones [bcm2835 Headphones]
4 Sous-périphériques: 8/8
5 Sous-périphérique #0: subdevice #0
6 Sous-périphérique #1: subdevice #1
7 Sous-périphérique #2: subdevice #2
8 Sous-périphérique #3: subdevice #3
9 Sous-périphérique #4: subdevice #4
10 Sous-périphérique #5: subdevice #5
11 Sous-périphérique #6: subdevice #6
12 Sous-périphérique #7: subdevice #7
13carte 1: pisound [pisound], périphérique 0: PS-12KMP7S snd-soc-dummy-dai-0 [PS-12KMP7S snd-soc-dummy-dai-0]
14 Sous-périphériques: 1/1
15 Sous-périphérique #0: subdevice #0
la carte 0 étant la sortie jack standard du Raspberry Pi.
On arrive donc à la commande suivante :
1welle-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 :
1Service list
2 [0xfe43] CHANTE FRANCE [component 0 ASCTy: DAB+ ] [subch 1 bitrate:88 at SAd:0]
3 [0xf9f5] Melody [component 0 ASCTy: DAB+ ] [subch 2 bitrate:88 at SAd:66]
4 [0xfe50] GENERATIONS [component 0 ASCTy: DAB+ ] [subch 3 bitrate:88 at SAd:132]
5 [0xf650] SUD RADIO [component 0 ASCTy: DAB+ ] [subch 4 bitrate:88 at SAd:198]
6 [0xf20a] BLEU PARIS [component 0 ASCTy: DAB+ ] [subch 5 bitrate:88 at SAd:264]
7 [0xfefb] Radio Notre Dame [component 0 ASCTy: DAB+ ] [subch 6 bitrate:88 at SAd:330]
8 [0xfe35] EVASION [component 0 ASCTy: DAB+ ] [subch 7 bitrate:88 at SAd:396]
9 [0xf21d] OUI FM [component 0 ASCTy: DAB+ ] [subch 8 bitrate:88 at SAd:462]
10 [0xfe45] VOLTAGE [component 0 ASCTy: DAB+ ] [subch 9 bitrate:88 at SAd:528]
11 [0xf223] TSF JAZZ [component 0 ASCTy: DAB+ ] [subch 10 bitrate:88 at SAd:594]
12 [0xf22c] FG [component 0 ASCTy: DAB+ ] [subch 11 bitrate:88 at SAd:660]
13 [0xf22a] NOVA [component 0 ASCTy: DAB+ ] [subch 12 bitrate:88 at SAd:726]
14 [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é