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 :music:. 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.