Installation
Sur Raspberry Pi, voici les différentes étapes pour installer les drivers et vérifier le bon fonctionnement sur une Debian stretch 9.1.
Installation du nécessaire de compilation
sudo apt-get install git cmake build-essential libusb-1.0-0-dev
Récupération des drivers RTL2832U Osmocom et compilation.
git clone git://git.osmocom.org/rtl-sdr.git cd rtl-sdr/ mkdir build cd build cmake ../ -DINSTALL_UDEV_RULES=ON make sudo make install sudo ldconfig sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
Blacklist du driver par défaut chargé lors du branchement de la clé USB (il s'agissait du driver pour décoder la TNT).
Editer le fichier /etc/modprobe.d/blacklist-rtl.conf
:
- /etc/modprobe.d/blacklist-rtl.conf
blacklist rtl8192cu blacklist rtl8xxxu blacklist dvb_usb_rtl28xxu
Redémarrer le pi et brancher la clé et vérifier les logs du noyau :
dmesg | tail [ 209.986572] usb 1-1.5: new high-speed USB device number 6 using dwc_otg [ 210.128484] usb 1-1.5: New USB device found, idVendor=0bda, idProduct=2838 [ 210.128500] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 210.128511] usb 1-1.5: Product: RTL2838UHIDIR [ 210.128521] usb 1-1.5: Manufacturer: Realtek [ 210.128531] usb 1-1.5: SerialNumber: 00000001
lsusb | grep -i rtl Bus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Vérifier les modules chargés, aucun module 'dvb*' ne doit être listé :
lsmod Module Size Used by cfg80211 543091 0 rfkill 20851 2 cfg80211 binfmt_misc 7988 1 snd_bcm2835 24427 0 snd_pcm 98501 1 snd_bcm2835 snd_timer 23968 1 snd_pcm snd 70032 3 snd_timer,snd_bcm2835,snd_pcm bcm2835_gpiomem 3940 0 uio_pdrv_genirq 3923 0 uio 10204 1 uio_pdrv_genirq fixed 3285 0 ip_tables 13161 0 x_tables 20578 1 ip_tables ipv6 409035 44
Lancer l'outil de vérification des caractéristiques de la clé :
rtl_test -t 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. No E4000 tuner found, aborting.
Tout est parfait, l'erreur de la dernière ligne peut être ignorée. Ici le tuner de la clé est un Rafael Micro R820T, les tuners E4000 (énuméré sur cette dernière ligne) sont moins bons.
Une première utilisation est d'écouter la Radio FM . Pour se faire, le programme rtl_fm
permet de faire la démodulation de signal et le convertisseur en flux audio. Il faut ensuite piper sa sortie sur un outil de décodage audio pour faire sortir le son sur les hauts parleurs comme aplay
ou sox
.
Ici je me cale sur 100.9 MHz. Penser à brancher des enceintes sur la sortie audio du pi :
rtl_fm -f 100.9M -M wbfm -s 200000 -r 48000 | aplay -r 48000 -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 101216000 Hz. Oversampling input by: 6x. Oversampling output by: 1x. Buffer size: 6.83ms Sampling at 1200000 S/s. Output at 200000 Hz. Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
Aujourd'hui décoder la radio FM sur un ordinateur peut paraître une opération anodine mais il y a quelques années, avant la création de rtl_fm
, il fallait un processeur type Intel Pentium 4 pour avoir un son audible !! Et dire qu'en analogique, quelques composants passifs suffisent pour faire la même chose… rtl_fm
a été développé en ayant en tête de pouvoir réaliser la démodulation de signal sur de toutes petites machines dotées de processeur Intel Atom ou maintenant des Raspberry Pi.