Je vous avais déjà expliqué comment créer un récepteur ADS-B avec un Raspberry Pi et un dongle USB TNT.
La lecture d’un article de Florent m’a donné envie de tester la réception radio FM avec la clé USB TNT et le RasPi. Et puis après je me suis demandé si je pouvais écouter les Talkys 446MHz que j’utilise de temps en temps…
Cette description n’est pas un tutoriel de type next/next/next. Il vaut mieux avoir une première expérience avec le RasPi avant de vous lancer.
Éventuellement, relisez l’article sur la réception ADS-B avant de commencer ce récepteur FM.
Au sommaire :
- 1 Ecouter la radio avec son Raspberry Pi
- 1.1 Le matériel
- 1.2 Installer le système
- 1.3 Mise à jour du système
- 1.4 Liste des périphériques USB connectés
- 1.5 Installation des programmes nécessaires à la compilation de rtl-sdr
- 1.6 Installer rtl-sdr
- 1.7 Tester rtl-sdr
- 1.8 Blacklister le driver d’origine
- 1.9 Nouveau test de rtl-sdr
- 1.10 Recevoir d’autres fréquences
- 2 Conclusion
- 3 Sources
Ecouter la radio avec son Raspberry Pi
Le matériel
- Raspberry Pi 2
- Carte microSD EVO Samsung 16 Go
- Alimentation 5V / 2A
- Recepteur TNT USB SPC-0155
- Paire d’enceintes amplifiées avec connecteur 3,5mm
Installer le système
On va commencer par installer un Raspbian propre, enfin, vous faites bien comme vous voulez….
Téléchargez l’archive depuis https://www.raspberrypi.org/downloads/ et après avoir extrait l’archive, utilisez Win32DiskImager pour transférer l’image sur la carte microSD.
Au démarrage de Raspbian dans raspi-config :
Validez l’option 1 – expand file system
Allez dans l’option 4 – internationalisation : (langage = français, locales = FR, fuseau horaire Paris et clavier français)
- Change locale > fr_FR.UTF-8 UTF-8 > validez par barre espace puis TAB <Ok>
- Default locale for the system environment : > fr_FR.UTF-8 TAB <Ok>
- Change Time Zone > Europe > Paris TAB <Ok>
- Change Keyboard Layout > Generic 105-key > Other > French > French – French (alternative, latin-9 only) > Ok > Ok > Ok (3 fois)
Focez le son sur le jack avec l’option 8 – Advanced Options > Audio > 1 Force 3.5 mm (‘headphone’) jack TAB <Ok>
TAB TAB <Finish>
Et reboot !
Mise à jour du système
sudo apt-get update sudo apt-get upgrade sudo rpi-update
=> avec rpi-update le firmware passe de 3.18.11-v7+ à rpi-4.0.y
Et reboot !
pi@raspberrypi ~ $ uname -a Linux raspberrypi 4.0.6-v7+ #798 SMP PREEMPT Tue Jun 23 18:06:01 BST 2015 armv7l GNU/Linux
Liste des périphériques USB connectés
Branchez le récepteur TNT et
pi@raspberrypi ~ $ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T Bus 001 Device 005: ID 046d:c52b Logitech, Inc. Unifying Receiver
Notre clé USB TNT est bien reconnue : comme le prouve la ligne Realtek Semiconductor Corp. RTL2838 DVB-T
Installation des programmes nécessaires à la compilation de rtl-sdr
pi@raspberrypi ~ $ sudo apt-get install cmake libusb-1.0-0.dev build-essential Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Note : sélection de libusb-1.0-0-dev pour l'expression rationnelle « libusb-1.0-0.dev » build-essential est déjà la plus récente version disponible. Les paquets supplémentaires suivants seront installés : cmake-data emacsen-common libxmlrpc-core-c3 Les NOUVEAUX paquets suivants seront installés : cmake cmake-data emacsen-common libusb-1.0-0-dev libxmlrpc-core-c3 0 mis à jour, 5 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 5 950 ko dans les archives. Après cette opération, 14,6 Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ? o
Après cette installation on passe à rtl-dsr :
Installer rtl-sdr
On clone le dépôt git de rtl-sdr
pi@raspberrypi ~ $ git clone git://git.osmocom.org/rtl-sdr.git Cloning into 'rtl-sdr'... remote: Counting objects: 1617, done. remote: Compressing objects: 100% (711/711), done. remote: Total 1617 (delta 1182), reused 1213 (delta 898) Receiving objects: 100% (1617/1617), 345.89 KiB | 428 KiB/s, done. Resolving deltas: 100% (1182/1182), done. pi@raspberrypi ~ $ pi@raspberrypi ~ $ cd rtl-sdr/ pi@raspberrypi ~/rtl-sdr $ pi@raspberrypi ~/rtl-sdr $ mkdir build pi@raspberrypi ~/rtl-sdr $ cd build pi@raspberrypi ~/rtl-sdr/build $ pi@raspberrypi ~/rtl-sdr/build $ cmake ../ -DINSTALL_UDEV_RULES=ON -- The C compiler identification is GNU 4.6.3 -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Build type not specified: defaulting to release. -- Extracting version information from git describe... -- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") -- checking for module 'libusb-1.0' -- found libusb-1.0, version 1.0.11 -- Looking for libusb_handle_events_timeout_completed -- Looking for libusb_handle_events_timeout_completed - found -- Looking for libusb_error_name -- Looking for libusb_error_name - found -- Found libusb-1.0: /usr/include/libusb-1.0, /usr/lib/arm-linux-gnueabihf/libusb-1.0.so -- Looking for include file pthread.h -- Looking for include file pthread.h - found -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Building with kernel driver detaching disabled, use -DDETACH_KERNEL_DRIVER=ON to enable -- Building for version: v0.5.3-12-ge3c0 / 0.5git -- Using install prefix: /usr/local -- Configuring done -- Generating done -- Build files have been written to: /home/pi/rtl-sdr/build pi@raspberrypi ~/rtl-sdr/build $
L’option -DINSTALL_UDEV_RULES=ON permet de lancer rtl-sdr sans être root
pi@raspberrypi ~/rtl-sdr/build $ make Scanning dependencies of target convenience_static [ 5%] Building C object src/CMakeFiles/convenience_static.dir/convenience/convenience.c.o Linking C static library libconvenience_static.a [ 5%] Built target convenience_static Scanning dependencies of target rtlsdr_shared [ 10%] Building C object src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o …/… pi@raspberrypi ~/rtl-sdr/build $ sudo make install [ 5%] Built target convenience_static [ 35%] Built target rtlsdr_shared [ 40%] Built target rtl_adsb [ 45%] Built target rtl_eeprom [ 50%] Built target rtl_fm [ 55%] Built target rtl_power [ 60%] Built target rtl_sdr [ 65%] Built target rtl_tcp [ 70%] Built target rtl_test [100%] Built target rtlsdr_static Install the project... -- Install configuration: "Release" …/…
ldconfig crée les liens nécessaires et met en cache (pour être utilisé par le chargeur / éditeur de liens ld.so) les bibliothèques partagées les plus récentes trouvées dans les répertoires indiqués sur la ligne de commande, dans le fichier /etc/ld.so.conf, et dans les répertoires sûrs (/lib et /usr/lib).
pi@raspberrypi ~/rtl-sdr/build $ sudo ldconfig
Et reboot ! (vous avez compté combien ça fait de reboot ? 😉 )
Tester rtl-sdr
pi@raspberrypi ~ $ rtl_test Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Using device 0: Generic RTL2832U OEM Kernel driver is active, or device is claimed by second instance of librtlsdr. In the first case, please either detach or blacklist the kernel module (dvb_usb_rtl28xxu), or enable automatic detaching at compile time. usb_claim_interface error -6 Failed to open rtlsdr device #0. pi@raspberrypi ~ $
C’est ok le récepteur TNT a été détecté mais… n’ a pas pu être ouvert…
Normal, Linux a détecté la clé TNT et monté son propre driver qu’il faut supprimer
On vérifie ?
pi@raspberrypi ~ $ lsmod Module Size Used by dvb_usb_rtl28xxu 15117 0 dvb_usb_v2 13368 1 dvb_usb_rtl28xxu dvb_core 81677 2 rtl2832,dvb_usb_v2 rc_core 16948 14 ir_sharp_decoder,ir_xmp_decoder,lirc_dev,ir_lirc_codec,dvb_usb_rtl28xxu,ir_rc5_decoder,ir_nec_decoder,ir_sony_decoder,ir_mce_kbd_decoder,ir_jvc_decoder,dvb_usb_v2,ir_rc6_decoder,ir_sanyo_decoder
On voit apparaitre dvb_usb_rtl28xxu et rtl2832
Il faut le « blacklister » pour le prochain démarrage :
Blacklister le driver d’origine
pi@raspberrypi ~ $ sudo nano /etc/modprobe.d/raspi-blacklist.conf
et ajouter
blacklist dvb_usb_rtl28xxu blacklist rtl_2832 blacklist rtl_2830
Et reboot ! bin oui, encore !
Nouveau test de rtl-sdr
On relance rtl_test : (il faudra sortir par CTRL C)
pi@raspberrypi ~ $ rtl_test Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T tuner Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 [R82XX] PLL not locked! Sampling at 2048000 S/s. Info: This tool will continuously read from the device, and report if samples get lost. If you observe no further output, everything is fine. Reading samples in async mode... ^C => CTRL C pour sortir ! Signal caught, exiting! User cancel, exiting... Samples per million lost (minimum): 0 pi@raspberrypi ~ $
Bon on commence à avoir un résultat
On se lance : trouver une fréquence de radio FM dans votre secteur et saisissez sa fréquence après le -f (100M = 100MHz, 95.7M = 95,700 MHz…)
pi@raspberrypi ~ $ rtl_fm -f 100M -M wbfm -s 400k -r 32k | aplay -r 32k -f S16_LE Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T tuner Tuner gain set to automatic. Tuned to 100316000 Hz. Oversampling input by: 3x. Oversampling output by: 1x. Buffer size: 6.83ms Sampling at 1200000 S/s. Output at 400000 Hz. Lecture données brutes 'stdin' : Signed 16 bit Little Endian, Fréquence 32000 Hz, Mono
Vous pouvez tester d’autres réglages pour améliorer la qualité (reportez vous au manuel d’emploi de rtl-fm)
Avec un autre réglage qui donne une meilleure qualité
pi@raspberrypi ~ $ rtl_fm -f 100M -M wbfm -s 200000 -r 48000 | aplay -r 48k -f S16_LE Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T tuner Tuner gain set to automatic. Tuned to 100316000 Hz. Oversampling input by: 6x. Oversampling output by: 1x. Buffer size: 6.83ms Sampling at 1200000 S/s. Output at 200000 Hz. Lecture données brutes 'stdin' : Signed 16 bit Little Endian, Fréquence 48000 Hz, Mono
Essayez aussi
rtl_fm -g 48 -f 100M -M wbfm -s 200000 -r 48000 -E deemp | aplay -r 48k -f S16_LE
rtl_fm -g 48 -f 100M -M fm -s 170k -A fast -r 32k -E deemp -l 0 | aplay -r 32k -f S16_LE
qui ajoute de la désaccentuation (deemphasis) – voir doc de rtl-fm
Avec ces réglages vous devriez pouvoir transformer un RasPi qui dort dans un placard en récepteur FM
Recevoir d’autres fréquences
J’ai fait quelques essais de réception de la bande aviation 108-130 MHz mais loin de tout aéroport je n’ai rien entendu, vous aurez peut-être plus de succès ?
rtl_fm -f 108M:130M:25K -M am -s 12k -l 20 | aplay -r 12k -f S16_LE
Par contre avec ce réglage j’ai pu écouter un talky-walky FM sur 446MHz
rtl_fm -M fm -f 446M:446.1M:6.25k -s 12k -g 50 -l 10 | aplay -r 12k -f S16_LE
Conclusion
Un récepteur FM et un scanner à peu de frais avec le Raspberry Pi et son dongle TNT. Si vous avez expérimenté d’autres réceptions (SSB ?) n’hésitez pas à en faire part aux lecteurs du blog.
Merci à Florent qui m’a autorisé à utiliser son article comme point de départ pour celui-ci.
Sources
- http://florentsegouin.me/articles/utiliser-sa-raspberry-comme-recepteur-radio/
- http://kmkeen.com/rtl-demod-guide/
- http://kmkeen.com/rtl-demod-guide/2014-01-24-03-21-57-580.html
- http://manpages.ubuntu.com/manpages/vivid/man1/rtl_fm.1.html
- http://www.yellownote.nl/blog/dvb-t-fun-raspberry-pi/
- http://pmr446.free.fr/index_pmr446_plan_de_bande.htm
- http://radio.pagesperso-orange.fr/Bandes.htmhttps://fr.wikipedia.org/wiki/PMR446
Bonjour,
très intéressant votre article,
juste une précision la réception des fréquences d’approche des aéroports est en AM et non en FM
Cordialement,
Jacques
Bonjour Jacques
Merci pour ce retour
Ce serait une erreur impardonnable pour un ancien mécano radio de l’Armée de l’Air !!!
la ligne de commande rtl_fm -f 108M:130M:25K -M am …
indique bien que la modulation est en AM (-M am)
73’s
François / F1GYT
Ping : Hackable Magazine N° 9 : Framboise d’honneur ! | Framboise 314, le Raspberry Pi à la sauce française….
Bonjour
Bravo, simple clair bien détaillé ca marche du 1er coup
le même avec gqrx ca serai extra
Merci de votre travail
73
Merci Michel
toutes mes 73’s également
François / F1GYT
Bonjour. Moi je m’intéresse plutôt à la partie station de radio ‘standard’ et les data rds + TD/TA. Ce stick USB ferait il bien l’affaire pour être embarqué dans une voiture ?
Bonjour
Je ne connais pas de réalisation de ce genre pour la voiture mais pourquoi pas
pour le rds voyez http://www.rtl-sdr.com/tag/rds/
cordialement
François
oui j’ai lu en long et en large tout ça et j’ai beaucoup cherché un moyen de gérer au travers de rtl-sdr le tuner FM et je suis tombé sur https://github.com/bastibl/gr-rds qui semble être pas mal. Je pense que je vais tester ça.
Merci 😉
Ping : Réalisez un analyseur de spectre avec le Raspberry Pi 2 | Framboise 314, le Raspberry Pi à la sauce française….
Bonjour, merci pour ce super tuto.
Petite question, est il possible d’ecouter sur plusieurs fréquences en même temps ?
Merci d’avance.
Cordialement
bonjour
eh non une seule a la fois
cordialement
François
Bonjour François
Je fais parti de l’Adrasec 81.
Dans le cadre de nos missions d entrainement, nous procédons à la recherche de balise détresse aviation (121.375 Am)
J’ai procédé il y a quelques temps a cette recherche sur tablette (android) relié à une clé RTL2838 DVB-T, ce système m’a permis de constater une amélioration du signal de la balise en SDR. Plus facile de voir que d entendre lors de la recherche directionnelle. Seulement tablette plus clé plus câble antenne+……., pas facile à gérer, de plus la clé usb décharge rapidement la tablette.
Donc, en lisant cet article je me demandais si cela ne pouvait être adapté pour faire la mm chose sur raspberry Pi3 que je viens d acquérir,( en cours d acheminement vers mon domicile.)
Pourriez vous m ‘aider un tant soit peu, ou m indiquer une procédure à suivre.
Merci d avance, F4GPZ
73-s
Bonjour Thierry
oui c’est possible aussi de recevoir cette fréquence sur une clé RTL-SDR. Je ne pense pas que le Raspberry Pi 3 soit le plus adapté du fait de ses 4 coeurs d’où une consommation plus élevée.
Mais pour les tests il peut être utilisé.
Un A+, B+ ou un Pi Zero consomme moins… https://fr.wikipedia.org/wiki/Raspberry_Pi#Tableau_comparatif
Après je pense que vous savez comment améliorer la réception :
filtre d’entrée sur la freq à recevoir
clé USB en boitier métallique (j’utilise ce modèle https://www.amazon.com/dp/B0129EBDS2/ref=as_li_ss_tl?ie=UTF8&linkCode=sl1&tag=rsv0f-20&linkId=9806dfa291f74f7cdb49e2cfbe3d34eb)
et j’ai reçu le N3 http://www.thumbsat.com/thumbnet-n3-sdr-receiver/store-item-1456436783
mais il y a un problème avec l’alim (signalé par le concepteur) et je n’ai pas encore pris le temps de le tester)
Blindage du Raspi et mise en place de perles ferrite sur les Entrées/sorties USB, alim…
regardez aussi https://www.framboise314.fr/realisez-un-analyseur-de-spectre-avec-le-raspberry-pi-2/ avec un raspberry pi equipé d’un écran 3.5 pouces vous pourriez afficher le spectre du signal et afficher son amplitude (il n’y a pas de décodage prévu avec l’analyseur de spectre on n’a pas le son de la balise)
j’espère avoir fait avancer votre réflexion
n’hésitez pas si vous avez d’autres questions
73’s
François – F1GYT – jn26ft
un petit complément d info, découvert grâce a un ami OM
http://gqrx.dk/download/gqrx-sdr-for-the-raspberry-pi
( j’espère que ça fait pas double emploi quelque part)
73’s
merci pour le lien !
bah si ça fait double emploi, une piqure de rappel ne peut pas faire de mal 🙂
testé en novembre sur Pi3 :
bonjour
je suis un passionné d’écoute radioamateur depuis des dizaines d’années SWL
également passionné par le raspberry je me suis lancé dans l’installation de GQRX 2.6 sur un pi 2
j’utilise une clé RTL2838 CINERGY
tout fonctionne sous windows 10 et android
j’ai suivi le tuto d’installation mais impossible de lancer le logiciel
merci pour vos réponses
73
Bonjour
ce n’est pas parce qu’un récepteur fonctionne sous Windows qu’il est reconnu par Linux 🙁
Après il est difficile de vous aider sans avoir aucune info…
qu’affichent dmesg, lsusb…
quels messages d’erreur avez vous ???
est-ce que l’install se déroule parfaitement, sans messages d’erreur ou d’avertissement ?
73’s
François
en complément cette page http://osmocom.org/projects/sdr/wiki/rtl-sdr indique que le 2838 est en fait un 2832… il ne devrait donc pas y avoir de souci
bonjour
merci pour votre réponse
j’ai donc remis à plat ma carte micro sd
tout fonctionne mais uniquement sur un pi 3 , c’est très bien comme ça
je n’aime pas rester sur un échec
je continue de flâner sur votre super site , j’ai quelques framboises qui tournent grâce a vous et toutes les personnes qui alimente le site
merci 🙂 bonne continuation
Bonjour !
J’ai récemment acheter et j’ai reçu mon dongle.
J’ai suivie votre tuto a la lettre mais il y’a un problème.
——————————————————————-
pi@raspberrypi:~ $ rtl_fm -f 100M -M wbfm -s 400k -r 32k | aplay -r 32k -f S16_LE
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
No supported tuner found <—- ███
Enabled direct sampling mode, input 1
Tuner gain set to automatic.
Tuned to 100316000 Hz.
Oversampling input by: 3x.
Oversampling output by: 1x.
Buffer size: 6.83ms
Sampling at 1200000 S/s.
Output at 400000 Hz.
Lecture données brutes 'stdin' : Signed 16 bit Little Endian, Fréquence 32000 Hz, Mono
——————————————————————-
Si vous savez pourquoi sa serais super !!
Bonjour, il existe un tutoriel expliquant comment émettre en fm sans accessoire, juste un fil… Alors pourquoi avoir besoin d’un récepteur tnt pour recevoir la fm ?
Autrement dit, ne serait-ce possible de recevoir la fm juste avec un bout de fil ?
Bonjour
hélas non
Si c était possible… mais non on reçoit des signaux de l ordre des mv ou microvolts il faut amplifier puis changer la fréquence dans un tuner classique ou numériser comme dans les tuners TNT. Malheureusement il faut plus qu’ un
Il y a qques décennies j ai fait un récepteur avec un fil, une diode et un écouteur peso… mais c était une station en PO et j étais près de l émetteur ?
Bonjour,
Merci pour ce tuto !! Savez vous s’il est possible de scanner la bande de fréquence afin de préenregistrée les chaînes radio pour la prochaine utilisation ? Et si oui quelle app serait susceptible de faire ça ?
Bonjour et merci pour ce tuto !
Comment faire pour zapper les radios à distance et les écouter via un streaming shoutcast ?
Exemple je suis à Mende mais mon raspberry est à Paris donc je peux profiter de la bande FM parisienne depuis internet en Lozère.
Des idées ? ! Merci.
Bonjour
Oui vous pouvez equiper le Raspi avec un recepteur Sdr et prendre la main a distance pour les reglages. Un streaming audio pour le retour de l’audio
Voyez du côté de
http://sdr.hu/openwebrx
http://arzhel.info/blog/index.php?article39/un-raspberry-pi-comme-serveur-rtl-sdr
http://f8rfl.blogspot.fr/2013/01/rtl-sdr-distance.htmlCa peit faire une base de départ
Cordialement
Francois
Ping : Le DAB arrive enfin | leproton
Bonjour à tous !
Mon problème est que mon tuner R820 génère une erreur:
Comment corriger svp ?
Merci.
Bonjour
si vous regardez les sorties dans l article vous verrez la même erreur, ce qui n’a pas empêché le montage de fonctionner.
Est ce que vous entendez qque chose ?
cdt
francois
En fait, CubicSDR et Gqrx fonctionnent sans problème, mais rtl_433 et consorts n’arrivent pas à verrouiller la PLL.
Ce qui fait que je ne peux pas analyser ce qui transite sur les ondes, comme si l’antenne n’était pas branchée.