Tutoriál – Návod ako vyrobiť RTL-SDR server ovládaný na diaľku na Orange Pi Zero

Tutoriál – Návod ako vyrobiť RTL-SDR server ovládaný na diaľku na Orange Pi Zero

Úvod

V tomto tutoriále vysvetlím krok po kroku, ako spraviť server na vzdialené počúvanie cez internet alebo lokálnu sieť (LAN) cez program SDRSharp na klientovi. Na servri (Orange Pi Zero) rozbehneme RTL-SDR drivre, obslužné appky ako napr. rtl_tcp ktoré vie na diaľku ovláadať RTL-SDR dongle a rtl_433 na vyčuchanie nejakých zaujímavých dát z éteru. 🙂

Zakončím to svojím open-source skriptom, ktorý som zverejnil na Githube, ktorý vie výstup z rtl_433 zobrazovať ako dynamickú web stránku. Je napísaný v jazyku Python.

Takto bude vyzerať hotový projekt:

Čo budeme potrebovať

Na začiatok budeme potrebovať

  • Inštalačku programu Etcher na napálenie obrazu systému na SD kartu
  • Obraz základného systému Armbian pre Orange Pi Zero, samozreme sťahujeme Stable verziu, a ak to chceme mať rýchlo, tak cez torrent (to je legálny torrent)

  • Orange Pi Zero, ktoré sa dá kúpiť za cca 9€ tu na Aliexpresse
  • Ľubovoľný RTL-SDR dongle stačí ten najlacnejší a najmenší, ja som použil ten čierny malý
  • SD kartu aspoň 8GB ale určite Class 10, ja som si obľúbil overenú kvalitku firmy LD, je to čína ale šlape to… aj stoja viac trošku

Pod týmto symbolom zistíte akej classy je vaša SD karta. Nikdy nikdy nikdy nepoužívajte na server fakeové karty. (90% na Ebay, Aliexpress)…

Príprava karty

Najprv rozbalíme stiahnutý obraz systému napríklad programom WinRAR alebo 7Zip.

Spustíme Etcher, a vyberieme rozbalený .img súbor.

Cez Select drive potom vyberieme našu SD-kartu a klikneme na Flash!

Etcher by si mal vedieť sám kartu správne naformátovať, ale ak by mu to nešlo, použite pred flashovaním program SD-Formatter. Treba ale nastaviť Size Adjust na ON.




Prvý boot a napojenie na Orange Pi Zero

Nezľakni sa, prvý a druhý boot trvá dosť dlho.

Stiahni alebo nainštaluj Putty na Windows, alebo cez Mac OS sa môžeš pripojiť príkazom:

ssh -l root <IP ADRESA TVOJHO ORANGE PI ZERO>

v termináli.

Adresu zistíš, keď sa prihlásiš na svoj router a tam si pozrieš aké zariadenia sú prihlásené cez DHCP. Uvidíš „OrangePiZero“. Môžeš použiť aj aplikáciu Fing na Android alebo iOS.

Prvý boot

Samozrejme pripoj do Orange Pi Zero ehternetový kábel a USB napájanie. Je dôležité, aby si použil aspon 5V 2A zdroj.

Keď sa pripojíš, prihlás sa ako root a heslo bude 1234.

Pre tých čo to nevedia, na všetkých Linuxových strojoch heslo nevypisuje hviezdičky keď píšes, kvôli bezpečnosti. Takže len pokojne píš a daj Enter.

Po prvom prihlásení ťa Armbian hneď vyzve, aby si si zmenil heslo na roota. Napíš 1x pôvodné heslo, 2x nové heslo a daj enter.

Následne ta systém vyzve aby si založil bežného používateľa. Vyplň údaje, zadaj heslo a si ready.

Dostaneš hlášku:

Warning: a reboot is needed to finish resizing the filesystem

Teraz už len napíš

reboot

a stlač Enter.

Orange Pi sa reštartuje. Chvíľku mu to potrvá. Po tom, čo sa znova prihlásiš, prihlás sa ako root a daj heslo ktoré si zadával ako prvé.

Prvé čo sprav, je plný ugprade systému:

apt update
apt upgrade

Môže sa stať, že sa spustia automatické aktualizácie, a preto sa ti nebude dať spustiť apt-get upgrade, resp. vypíše chybu. To skontroluješ, keď spustíš

htop

a pozreš sa, či beží proces bla bla bla /unattended-upgrade.

Htop ukončíš tlačítkom q.

Takto vyzerá bežiaci apt upgrade:

Keď skončia upgrady, spusti

apt install librtlsdr0
apt install librtlsdr-dev

To nainštaluje
librtlsdr driver.
Ešte potrebujeme:

apt install rtl-sdr

Na nainštalovanie utilít k RTL-SDR.

Keď ale spustíme appku rtl_test, dostaneme chybu:

root@orangepizero:~# 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.

Túto chybu ľahko odstránime blacklistovaním drivera, ktorý slúži na pozeranie DVB-T TV a počúvanie terestriálneho DVB-T rádia.
Upravíme blacklist súbor pomocou textového editora nano:

nano /etc/modprobe.d/rtl-sdr-blacklist.conf

A do súboru vložíme:

install dvb_usb_rtl2832u /bin/false

Potom stlačíme F2, odpovieme „y“ a stlačíme Enter.

Tým sa súbor uloží.

Teraz treba reštartovať, takže zase

reboot

A pripojíme sa znovu.

Len taká pripomienka, že príkazy ukončujeme cez skratku Ctrl-C alebo Cmd-C na Macu.

Teraz, keď spustíme

rtl_test

dostaneme hlášku že vie čítať sample.

Reading samples in async mode…

To je super! Vieme komunikovať s našim RTL-SDR donglom.

Keby sme teraz chceli iba vytvoriť vzdialený server, spustili by sme napríklad

rtl_tcp -a 0.0.0.0 -p 1234

Tak sa môžeme z iného počítača kde je napr. SDR-Sharp pripojiť na Orange Pi Zero a na porte 1234 nám tam pobeží krásne dekódovanie aj so zvukom.




Takto jednoducho môžeme mať vzdialený server na mieste so zlou prístupnosťou, ale dorbrou anténou.

Teraz si skompilujeme rtl_433.

Príkazy kopírujte po jednom.

apt install git cmake libtool libusb-1.0.0-dev librtlsdr-dev
git clone https://github.com/merbanan/rtl_433.git
cd rtl_433
mkdir build
cd build
cmake ../
make
make install

Takto by to malo vyzerať pri kompilácii:

Teraz by sme mali mať rtl_433 nainštalovaný.

Vyskúšame ho spustením

rtl_433

ak nám začne dekódovať dáta, je všetko v poriadku.




Teraz moja čerešnička na torte.

Vypracoval som program rtl_433_publish, ktorý spustí rtl_433 a vytvorí webserver kde zobrazuje všetky prijaté dáta, takže údaje sa dajú pozerať live cez prehliadač.

Postup inštalácie:

apt install python3-dev python3-pip
pip3 install flask
pip3 install shellcode
git clone https://github.com/tekk/rtl_443_publish
cd rtl_443_publish
chmod +x app.py
./app.py

Keď sa vám toto všetko podarí, server vypíše:

root@orangepizero:~/rtl_443_publish# ./app.py
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

Keď prídete na IP adresu Orange Pi Zero na port 5000, uvidíte toto:

Text bude stále pribúdať a scrollovať.

Pridávam ešte pár obrázkov.

Ako otvoriť porty na vašom routri už nechám na inokedy…

Orange Pi Zero má aj Wifi, takže budúcu prácu na tomto projekte by som videl v rozchodení bezdrôtovej siete cez terminál (tým ale asi stratíme nejakú šírku pásma)…

Dúfam že som niekoho inšpiroval a tiež sa začne zabávať s Linuxom ako ja. 😀

Ostanťe kreatívni. Zatiaľ… 🙂

73, Tekk BB, OM7TEK




Loading

10 thoughts on “Tutoriál – Návod ako vyrobiť RTL-SDR server ovládaný na diaľku na Orange Pi Zero

  1. OpiTester

    rtl_test vypíše
    Found 1 device(s):
    0: Realtek, RTL2838UHIDIR, SN: 00000001

    Using device 0: Generic RTL2832U OEM
    Found Fitipower FC0012 tuner
    Supported gain values (5): -9.9 -4.0 7.1 17.9 19.2
    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…
    lost at least 96 bytes
    a pak to vytuhne (ani po 2h nic nenapíše)


    rtl_433 funguje
    vypíše následující a skončí
    root@orangepizero:~/rtl_433/build/rtl_443_publish# rtl_433
    Registering protocol [1] „Rubicson Temperature Sensor“
    Registering protocol [2] „Prologue Temperature Sensor“
    Registering protocol [3] „Waveman Switch Transmitter“
    Registering protocol [4] „LaCrosse TX Temperature / Humidity Sensor“
    Registering protocol [5] „Acurite 609TXC Temperature and Humidity Sensor“
    Registering protocol [6] „Oregon Scientific Weather Sensor“
    Registering protocol [7] „KlikAanKlikUit Wireless Switch“
    Registering protocol [8] „AlectoV1 Weather Sensor (Alecto WS3500 WS4500 Ventus W155/W044 Oregon)“
    Registering protocol [9] „Cardin S466-TX2“
    Registering protocol [10] „Fine Offset Electronics, WH2 Temperature/Humidity Sensor“
    Registering protocol [11] „Nexus Temperature & Humidity Sensor“
    Registering protocol [12] „Ambient Weather Temperature Sensor“
    Registering protocol [13] „Calibeur RF-104 Sensor“
    Registering protocol [14] „GT-WT-02 Sensor“
    Registering protocol [15] „Danfoss CFR Thermostat“
    Registering protocol [16] „Chuango Security Technology“
    Registering protocol [17] „Generic Remote SC226x EV1527“
    Registering protocol [18] „TFA-Twin-Plus-30.3049 and Ea2 BL999“
    Registering protocol [19] „Fine Offset Electronics WH1080/WH3080 Weather Station“
    Registering protocol [20] „WT450“
    Registering protocol [21] „LaCrosse WS-2310 Weather Station“
    Registering protocol [22] „Esperanza EWS“
    Registering protocol [23] „Efergy e2 classic“
    Registering protocol [24] „Generic temperature sensor 1“
    Registering protocol [25] „WG-PB12V1“
    Registering protocol [26] „HIDEKI TS04 Temperature, Humidity, Wind and Rain Sensor“
    Registering protocol [27] „Watchman Sonic / Apollo Ultrasonic / Beckett Rocket oil tank monitor“
    Registering protocol [28] „CurrentCost Current Sensor“
    Registering protocol [29] „emonTx OpenEnergyMonitor“
    Registering protocol [30] „HT680 Remote control“
    Registering protocol [31] „S3318P Temperature & Humidity Sensor“
    Registering protocol [32] „Akhan 100F14 remote keyless entry“
    Registering protocol [33] „Quhwa“
    Registering protocol [34] „OSv1 Temperature Sensor“
    Registering protocol [35] „Proove“
    Registering protocol [36] „Bresser Thermo-/Hygro-Sensor 3CH“
    Registering protocol [37] „Springfield Temperature and Soil Moisture“
    Registering protocol [38] „Oregon Scientific SL109H Remote Thermal Hygro Sensor“
    Registering protocol [39] „Acurite 606TX Temperature Sensor“
    Registering protocol [40] „TFA pool temperature sensor“
    Registering protocol [41] „Kedsum Temperature & Humidity Sensor“
    Registering protocol [42] „blyss DC5-UK-WH (433.92 MHz)“
    Registering protocol [43] „Steelmate TPMS“
    Registering protocol [44] „Schrader TPMS“
    Registering protocol [45] „Elro DB286A Doorbell“
    Registering protocol [46] „Efergy Optical“
    Registering protocol [47] „Honda Car Key“
    Registering protocol [48] „Fine Offset Electronics, XC0400“
    Registering protocol [49] „Radiohead ASK“
    Registering protocol [50] „Kerui PIR Sensor“
    Registering protocol [51] „Fine Offset WH1050 Weather Station“
    Registering protocol [52] „Honeywell Door/Window Sensor“
    Registering protocol [53] „Maverick ET-732/733 BBQ Sensor“
    Registering protocol [54] „LaCrosse TX141TH-Bv2 sensor“
    Registering protocol [55] „Acurite 00275rm,00276rm Temp/Humidity with optional probe“
    Registering protocol [56] „LaCrosse TX35DTH-IT Temperature sensor“
    Registering protocol [57] „LaCrosse TX29IT Temperature sensor“
    Registering protocol [58] „Vaillant calorMatic 340f Central Heating Control“
    Registering protocol [59] „Fine Offset Electronics, WH25 Temperature/Humidity/Pressure Sensor“
    Registering protocol [60] „Fine Offset Electronics, WH0530 Temperature/Rain Sensor“
    Registering protocol [61] „IBIS beacon“
    Registering protocol [62] „Oil Ultrasonic STANDARD FSK“
    Registering protocol [63] „Citroen TPMS“
    Registering protocol [64] „Oil Ultrasonic STANDARD ASK“
    Registering protocol [65] „Thermopro TP11 Thermometer“
    Registering protocol [66] „Solight TE44“
    Registering protocol [67] „Wireless Smoke and Heat Detector GS 558“
    Registering protocol [68] „Generic wireless motion sensor“
    Registering protocol [69] „Toyota TPMS“
    Registering protocol [70] „Ford TPMS“
    Registering protocol [71] „Renault TPMS“
    Registering protocol [72] „FT-004-B Temperature Sensor“
    Registering protocol [73] „Ford Car Key“
    Registering protocol [74] „Philips outdoor temperature sensor“
    Registering protocol [75] „Schrader TPMS EG53MA4“
    Registering protocol [76] „Nexa“
    Registering protocol [77] „Thermopro TP12 Thermometer“
    Registering protocol [78] „GE Color Effects“
    Registered 78 out of 98 device decoding protocols
    Found 1 device(s)

    trying device 0: Realtek, RTL2838UHIDIR, SN: 00000001
    Found Fitipower FC0012 tuner
    Using device 0: Generic RTL2832U OEM
    Exact sample rate is: 250000.000414 Hz
    Sample rate set to 250000.
    Bit detection level set to 0 (Auto).
    Tuner gain set to Auto.
    Reading samples in async mode…
    Tuned to 433920000 Hz.
    2017-12-15 10:36:44 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:36:44 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:36:44 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:36:44 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:36:44 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:36:44 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:38:00 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:38:00 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:38:00 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:38:00 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:38:00 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:38:00 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:38:00 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.1 C
    Humidity: 33 %
    2017-12-15 10:38:38 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:39:16 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:39:16 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:39:16 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:39:54 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:40:32 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:41:10 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.3 C
    Humidity: 33 %
    2017-12-15 10:41:10 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.3 C
    Humidity: 33 %
    2017-12-15 10:41:10 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.3 C
    Humidity: 33 %
    2017-12-15 10:41:48 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:41:48 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:41:48 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %
    2017-12-15 10:41:48 : TFA-Twin-Plus-30.3049 : 5 : 3
    Battery: OK
    Temperature: 5.2 C
    Humidity: 33 %

    1. Ahoj,
      áno toto je v úplnom poriadku. rtl_test sa nezastaví sám, treba ho ukončiť cez Ctrl+C. Úlohou rtl_test je v podstate zistiť, koľko samplov ti uniká (napríklad kebyže sa chceš pripojiť na vzdialený server a použil by si pritom iba Wifi, alebo máš pomalú USB zbernicu, alebo keby samotný RTL-SDR dongle nezvládal, atď.)

      To že dostávaš z rtl_433 dáta je známka toho, že je všetko v poriadku.

      Môžeš sa skúsiť pohrať aj s aplikáciami rtl_tcp a rtl_fm.

      Ak sa ti niečo podarí, napíš to sem do komentárov a ak to bude niečo zaujímavé, tak to môžme pridať aj do tutoriálu.

      Zdraví ťa
      Tekk

  2. Juro OM0AAA

    Ahojte, je v tomto projekte niečo nové ?
    Hodil by sa log s časom udalostí, či indikácii dBi ak je to možné vôbec zmetať…
    Replikácia a vysielanie kódu to by už bola taká perlička …

  3. Milan Boboček

    ahojte, rtl_433 mi pojde aj na raspberry pi3? návod na inštaláciu je rovnaky? dik

    1. Ahoj, ano malo by to ist.
      Ak by bol problem pis.

      1. Milan Boboček

        ahoj, podarilo sa, funguje. fajn zabava. Teraz by som chcel rozbehat na tom rasp tcp server. aby som sa mohol napojit na dialku. som trosku novacik ohladom linuxu ale podla manualu zvladnem. hladal som na nete je tam vela navodov. vies mi pls poradit postup? Dakujem

    1. Treba lepší zdroj kúpiť (teraz myslím adaptér). Neboj sa dať aj zo 20 eur za originál napr. pre nejaký renomovaný telefón. Rušenie bude lepšie. Alebo to rušenie môže chytať tvoja anténa, ak bývaš v zasidlenej oblasti. Takisto invertory robia veľa rušenia. A ako som povedal, nekvalitné zdroje.

  4. Zdenek

    Při kompilaci rtl_433.
    se to zasekne : cmake ../
    Armbian na Raspberrypi 3 model B v1.2
    Jsem naprostý linuxový začatečník

Pridať komentár

Táto webová stránka používa Akismet na redukciu spamu. Získajte viac informácií o tom, ako sú vaše údaje z komentárov spracovávané.