vrijdag 6 maart 2020

Interludium [ De framboos aka Raspberry Pi : eindelijk ! dump1090 in werking ]

Het enige wat ons nu nog te doen staat is de toepassing laten lopen .

Sluit een antenne aan , steek de dongle in de USB poort en start de rpi op.

Na inloggen gaan we naar de dump1090 map met

cd dump1090

en starten we op de commandolijn met :

./dump1090 --interactive

u krijgt iets in de zin van :


Als je dit ziet , loopt de soft .
We kunnen het aanschouwelijker maken  door het volgende:

Verlaat eerst met <CTRL>  C het scherm.

Daarna start je met :

./dump1090 --interactive --net

Op het eerste zicht zie je hetzelfde , maar ondertussen loopt er wel een webserver die je kunt oproepen in een browser.

Typ in je browser op de adresbalk ( url) het volgende in :

uw-ipadres van uw rpi zero w :8080

bv  192.168.1.125:8080  en kijk wat er gebeurt !



 Wat u hier ziet is met weliswaar een zelfgemaakte antenne maar wel in huis op de begane grond en met enkel een rpi zero w en een SDR dongle .
Antennehoogte 1m50 !

Indien u dit buitenshuis zet ( bv in uw tuinhuis), maar wel in het bereik van uw wifi, kunt ge in huis alles gemakkelijk volgen .

Veel plezier ermee.

ps: ook eens de processor - en geheugen belasting bekeken met de browser open 




 CPU  ca 40 % en slechts 45 MB aan ram ! Toch niet slecht voor deze lilliputter


Interludium [ De framboos aka Raspberry Pi : de oplossing van het fout-compileren]

Nu we dit allemaal weten , is de oplossing slechts vijf minuten werk.
Zo gaat het altijd , de weg ernaar toe is altijd de  lastigste klus .

We openen het bestand in nano , maar zorgen eerst dat we in de juiste directory zitten .

 cd /usr/local/lib/pkgconfig

daarna openen van het bestand:

sudo nano  librtlsdr.pc

en vullen we de lege velden in zoals in de bijlage getoond. Let goed op de allerhande leestekens zoals $ en { ...
U ziet ook de verwijzing naar onze arm-linux processor architectuur.

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib/arm-linux-gnueabihf
includedir=${prefix}/include

Name: RTL-SDR Library
Description: C Utility Library
Version: 0.6.0-22-g3d7c
Cflags: -I${includedir}/
Libs: -L${libdir} -lrtlsdr
Libs.private:  -lusb-1.0


Bewaren met

 <CTRL> o en  <ENTER> afsluiten met <CTRL> X

Misschien is het best om toch maar eens te herstarten 

sudo reboot 

Na herstart  gaan we terug naar onze dump1090 map met 

cd dump1090

en voeren we opnieuw het make commando uit.

sudo make  

Het resultaat is al volgt , let niet op de warnings



 Geen errors , opdracht volbracht!

Interludium [ De framboos aka Raspberry Pi : de finale , de foutopsporing van het compileren.]

Foutopsporing.

Hiervoor ben ik enkele dagen in de weer geweest.
Eerst uitzoeken hoe het make script in elkaar zit , dan opzoeken waar het script naar verwijst en dan proberen te interpreteren hoe alles aan elkaar hangt.
Ik moet zeggen dat ik alles eerst nog eens naar een raspberry 2 overgezet hebt , maar daar dook hetzelfde probleem op.

Kort analyse van het make-script ( Makefile). ik ga hier niet in detail wat al die argumenten doen maar enkel de hoofdbrok.

In weze is het script zo opgebouwd:


target:afhankelijkheden
<TAB> recept

<TAB> of inspringen is verplicht !

Hieronder een voorbeeld uit een extract van de Makefile:

dump1090 is hier het target en alle bestanden met .o zijn de afhankelijkheden
vanaf $(CC) komt het recept ( hier aanroepen van de compiler en de nodige bibliotheken ($(LIBS))

dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o
          $(CC) -g -o dump1090 dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o $(LIBS) $(LDFLAGS)


$(LIBS) is eigenlijk een variabele die hogerop is gedeclareerd ( hier niet te zien) maar hieronder toch opnieuw is weergegeven

LIBS=`pkg-config --libs librtlsdr` -lpthread -lm

Hierbij is de verwijzing naar de pkg-config van groot belang.
pkg-config is in feite een soort script dat de bibliotheken weet zitten .
Elk operatingssyteem heeft zijn eigen architectuur aan boord ( bv een x86-64 of  in dit geval bij de rpi  een ARM processor.)
Afhankelijk van deze arch. moet er anders gebuild worden .
Om uw software voor alle van deze architecturen te kunnen laten werken is er een " agent" nodig die u de weg wijst.
Deze verwijzing voor de bibliotheek van de  rtl-sdr  zit in een bestand dat librtlsdr.pc   zit . Het is dit bestand dat nodig is om juist te kunnen compileren.
Alle verwijzingen voor de pkg-config hebben een extensie die eindigt op .pc 

Eerst zoeken we waar  librtlsdr.pc   zich bevindt.Vanop de root zoeken we met

sudo find -name librtlsdr.pc

Het antwoord ziet U hieronder



Er zijn meerdere antwoorden ,maar  /usr/local/lib/pkgconfig is het juiste.

Let ook op dat pkgconfig ook in het pad zit !

We gaan naar daar met :
 cd /usr/local/lib/pkgconfig

en kijken wat er in librtlsdr.pc zit met

 cat -n  librtlsdr.pc



 

 Deze ziet er nogal leeg uit vind ik , vergelijk hem eens met het bestand dat op mijn linux desktop staat. Let ook op het andere pad in de desktop !


Hier zijn wel de eerste regels ingevuld !


Hier moet iets aan gedaan worden , dit is in een volgende aflevering.
eerst koffie drinken ;)

Interludium [ De framboos aka Raspberry Pi : de finale , een toepassing met dump1090 die fout afloopt]

Om te laten zien de rpi zero w nu in staat is toepassingssoftware te draaien gaan we het ADS-B pakketje genaamd dump1090 hierop installeren .

Althans , dat was de bedoeling maar ik stuitte tegen héél wat problemen nochtans had ik deze soft reeds meerdere malen kunnen doen draaien .
Volg hieronder mijn lijdensweg 

***************************************************************************

Allereerst voordat ge iets nieuws doet , updaten van uw lijst.

sudo apt-get update

en eventueel ook

sudo apt-get upgrade

zo staan we weer in sync met de laatste soft.

Dan via Putty

maak dat je in de home directory staat

met  
cd ~   of  ( tip : de <Page Down> key geeft ook een tilde (~) af )
cd /home/pi
je kunt dit checken met 

pwd 




de  ~ is de home directory en
de $  is de prompt van de user , hier duidelijk gemaakt in het gele kader

Nu zijn we klaar voor dump1090.

De mosterd komt van hier uit Github

https://github.com/MalcolmRobb/dump1090

Ook hier komt het git commando van pas:

sudo git clone git://github.com/MalcolmRobb/dump1090.git




Vervolgens veranderen van map, aangemaakt door git

cd dump1090

en compileren met

sudo make 

en vanaf hier loopt het allemaal mis.





Het make commando roept de Makefile op waar een script in staat om het          " builden" uit te voeren .
Het compileren naar objectbestanden ( bv dump1090.o ) gaat goed ( --cflags ) maar het omzetten en verder linken met de bibliotheken gaat grof in de fout .
De gekleurde opmerkingen in de gele kader zijn geen fouten maar waarschuwingen . Dat is in elk geval niet de boosdoener. Het loopt mis vanaf de rode kader.



zaterdag 29 februari 2020

Interludium [ De framboos aka Raspberry Pi : het blacklisten van de dongle]

Dit blacklisten is nodig omdat er anders bij opstart er reeds claims doorgevoerd worden .Maw in feite is onze dongle een DVB-T ontvanger ( ontvanger voor aardse televisie uitzendingen) en wordt als zogaande ook geclaimd door de software.
Wij moeten deze vrijwaren en "onze" driver daarrin installeren . Dit kan maar als deze eerst is gevrijwaard.

Er is een snelle test om dit te proberen vooraleer dit in definitieve vorm te gieten in een bestand. Het gaat als volgt, wederom de commando's in het blauw:

lsmod 





U ziet in dit extract het volgende ergens staan :

dvb_usb_rtl28xxu

we gaan deze verwijderen met het volgende commando:

sudo rmmod dvb_usb_rtl28xxu


 Bij een nieuwe lsmod

lsmod

 zien we deze module niet meer staan , wel nog een V2 versie maar daar hebben we blijkbaar geen last van want met het volgende commando kunnen we dit testen .

rtl_test




Alles werkt nu naar behoren , maar spijtig is dit slechst éénmaal. 
Verlaat dit met <CTRL> C

Het blacklisten zelf.

Hiervoor moeten we een bestand aanpassen  

Commando:

cd /etc/modprobe.d

en dan het bestand aanpassen met 

sudo nano blacklist-rtl8xxxu.conf  

Opgelet , kijk goed naar de naam !

de volgende lijn bijvoegen onder de commentaar lijn   



Commentaar begint met #  teken en staat in het cyaanblauw
Gebruik enkel het toetsenbord , ook voor de cijfers , niet het numeriekveld rechts. Gebruik de pijltjestoets om ergens naar toe te gaan.

Afsluiten met <CTRL>  O  en <ENTER> en daarna <CTRL> X


Reboot de rpi  

sudo reboot 

De  Putty verbinding zal verbroken worden en na een poosje moet je terug via Putty inloggen.

Daarna als allerlaatste test :

rtl_test 

 en alles is nu OK !



De rpi zero w staat nu klaar om een toepassingssoftware gebaseerd op de RTL-SDR dongle te doen werken !

 Als uitsmijter nog eens de cpu/memory belasting met de dongle , weliswaar in idle toestand( gewoon de drivers zonder dat hij "werkt")


 

Interludium [ De framboos aka Raspberry Pi : de drivers voor de RTL- SDR dongle ]


Meestal zijn er "dependecies" vooraleer de te installeren soft kan werken .
Hier niet anders , er moeten wat bibliotheken vooraf geïnstalleerd worden .
Als het al lang geleden is , dan eerst

sudo apt-get update     uitvoeren.

1.  libusb.

sudo apt-get install libusb-1.0-0-dev

Let goed op het intypen!




2. build-essential

Hetzelfde verhaal voor de installatie

sudo apt-get install build-essential




Was blijkbaar al geïnstalleerd.

En nu uiteindelijk de driver voor de RTL_SDR dongle, en dit met het git commando. alle commando's verderop staan in het blauw.


git clone git ://git.osmocom.org/rtl-sdr.git


Nu moeten we dit " builden"

Eerst eens kijken wat dit gecloon heeft teweeg gebracht met het volgende commando

ls -al





Er is een nieuwe map aangemaakt rtl-sdr ( in het blauw). we gaan daarnaar toe via

cd rtl-sdr
maken zelf een map --> mkdir build
en gaan ernaar toe   --> cd build




en dan het aanmaken van de soft zelf ( compileren) met het commando


sudo cmake ../



*******************************************************************************

Voor de volledigheid : Er wordt ook soms volgende regel vooropgesteld om cmake uit te voeren :

sudo cmake ../ -DINSTALL_UDEV_RULES=ON

***************************************************************************







Verder builden en linken  met het commando

make              ( kan een tijdje duren , geen paniek !)



U ziet de laatste lijnen van make . aan het getal [100% ] is ook te zien dat alles vlot is verlopen

Verder installeren met

sudo make install



Nog verder configureren met

sudo ldconfig




Dit gaat héél snel en zonder antwoord.

We staan nog steeds in  de build directory

hierin en als laatste werk 

 sudo cp ../rtl-sdr.rules  /etc/udev/rules.d/

Kijk eens of het kopiëren gelukt is met

cd /etc/udev/rules.d

en daarna 

ls -al 

U moet daar   rtl-sdr.rules zien staan.


 


 herstart voor alle zekerheid uw rpi zero

Ik heb vastgesteld als je de dongle insteekt de rpi zichzelf herstart !
Wacht tot de opstartprocedure is doorlopen en bouw een nieuwe verbinding op met Putty

Met het commando 

lsusb

zie je dan de dongle zitten . 


en met commando

rtl_test

kun je de dongle testen en dat loopt hier niet zo goed af , zie " usb_claim_interface_error -6 " en verder "Failed to open rtlsdr device #0"


de oplossing staat er bij , we moeten hem " blacklisten".
Dit is voor een nieuw verhaal.

 

Interludium [ De framboos aka Raspberry Pi : Voorbereiden installeren soft voor SDR dongle ]

Eerst gaan we nog twee installaties doen die laters handig kunnen/zullen zijn .
Ze worden vaak gebruikt bij installatie van nieuwe toepassingen .

Eerst en vooral via Putty, dit is echt wel noodzakelijk , uw lijst updaten !

sudo apt-get update





daarna de volgende pakketten

1.  git

Git is een " warenhuis" waar heel veel projecten bewaard en ontwikkeld worden.

Om die soft te kunnen overhalen wordt deze " gecloond" .Hiervoor installeren we het cloneprogramma.

Via Putty :

sudo  apt-get install git, indien gevraagd wordt: "Do you want to continue ?" , antwoorden met Y of <ENTER>



Een hele boterham dus.



2.cmake .

Hiermee kan men compileren/builden wat ook soms gevraagd wordt.

sudo apt-get install cmake



Dit zijn zowat de laatste lijnen van de install die zichtbaar zijn .

Volgende keer , het installeren van de drivers voor de RTL-SDR dongle.

Datainfoblad [ASCII karakterset]

Omdat ik ondertussen ook bezig ben met seriële poorten ( jaja ze bestaan nog !)
Hierbij een data infoblad die het gemak vergroot .


AscII  karakterset
Bij de karakterset is het handig om te weten welk karakter men moet doorsturen om eventueel te antwoorden op een bericht .
De sleutel staat onderaan bij "KEY"

Veronderstel dat je ACK van acknowledge moet terugsturen , dan kun je dit met de volgende toetsen

<CTRL>  en F
Dit komt omdat de <CTRL> toets de zevende bit reset naar 0 en ipv van hexadecimaal 46 door te sturen er hexadecimaal 06 wordt doorgestuurd .

Tweede voorbeeld   Xoff ( software control)

<CTRL>  en S    hex 53   wordt   hex 13   of   0101 0011    wordt   0001 0011



De uitleg van de afkortingen van de Ascii controlcharacterset   kan men hier vinden


controlkarakterset

woensdag 26 februari 2020

Interludium [ De framboos aka Raspberry Pi : Statisch Ip-adres]

Laatste configuratie om de zero pi als standalone te laten werken is het toekennen van een statisch ip-adres . Zoals de naam al zelf verraadt is dit een ip-adres , dat éénmaal is toegekend , niet meer verandert en dit is nodig om steeds een verbinding te kunnen opbouwen met Putty of andere gebruikers.

Voorbereiding :
Het statisch ip-adres dat je wenst toe te kennen aan de rpi mag natuurlijk nog niet in gebruik zijn . Dit kunnen we zien als je toegang hebt tot je router of je test dit met eens te kijken of dit al te voorschijn komt met volgend commando .
Veronderstel je wilt ip adres 192.168.1.111 gebruiken , dan doe je dit als volgt op je eigen PC , niet met de rpi.


Dit is gedaan in Linux , maar dit kan ook met hetzelfde commando in een Windows PC . hiervoor typ je in de zoekbalk CMD in en dan krijg je na <Enter> een soortgelijk terminal venster te zien, weliswaar met een andere prompt.
Je kunt het pingen onderbreken met <CTRL>   C

Ip adres niet vrij , hier getest op 192.168.2.111 ,mijn netwerk


Vrij want host is niet bereikbaar

Is er geen antwoord , dan is dit adres vrij en kunt je het gebruiken .





Is het niet vrij dan krijg je dit


Niet vrij , antwoord is icmp_seq=1 ttl=64 enz...

Wil je het ipadres kennen van je gateway van de router dan kan je in Linux het volgende intypen :


Het ip-adres dat onder gateway staat kan dan in gevuld worden in hetgeen hierna volgt bij " static_routers= "

Onder Windows kan je gewoon in de CMD box   ipconfig intypen en daar vind je dan de gateway





Ip adres naar statisch.


Hiervoor is er enig typwerk nodig .Typ volgend commando in aan de prompt.
Nu wel in de rpi  !



 Dit opent een editor ( in dit geval nano) waarin je kunt editeren .


Ga met je pijltjes toets helemaal naar onderen tot de laatste lijn.
En vul de lijnen in MET UW GEGEVENS zoals aangegeven in de blauwe rechthoek. Als voorbeeld kun je spieken in de rode rechthoek .
Ik heb mijn echte gegevens gemaskeerd.
Gebruik enkel je cijfers van je toetsenbord bovenaan en niet het rechts numerieke pad op je toetsenbord . Gebruik ook de pijltjes-toetsen om ergens naar toe te gaan . Het is even zoeken maar het went wel.
Ook geef ik in commentaar mijn ingave aan en datum .
Commentaar geef je door een # teken voor je tekst te zetten , de kleur wordt dan ook cyaan , echte commandolijnen zijn in het wit.





Na controle sla je op  met <CTRL> O en <ENTER>
en sluit je af met < CTRL> X

Belangrijk reboot het systeem !













En je ziet het volgende 



Dit verteld ons dat de SSH connectie met Putty afgebroken is en dat is logisch want we hebben zonet de rpi herstart. Dus dit mag niet als een fout beschouwd worden .

Na herstart van rpi moeten we dus terug Putty opstarten , echter we moeten eerst ons nieuw statisch ip adres invullen in Putty en dat opnieuw bewaren met " Save"

Dit komt er in het terminalvenster van Putty te staan, na inloggen/paswoord



Ik heb mijn ip-adressen  uitgemaskeerd , maar de uwe zullen daar verschijnen .
Dit is een teken dat je vanop afstand aan het werken zijt.

Nog eens testen met ifconfig aan de prompt


Vanaf nu is het steeds mogelijk te werken via Putty en WiFi. Geen muis, toetsenbord en scherm  komt er nog aan te pas. U kunt gerust de rpi opstellen buitenshuis , bv in het tuinhuis , voorzien van de voeding en bereik van uw thuisnetwerk via WiFi. U zit dan gezellig in huis te werken via uw PC of laptop.


Interludium [ De framboos aka Raspberry Pi : Putty ]

Om vanop afstand connectie te kunnen maken met je PC en in dit geval via WiFI moeten we eerst nog een programmaatje installeren op die PC.
De naam daarvan is Putty , is vrij te verkrijgen en te gebruiken en draait op verschillende OS systemen.
Deze soft kan meer dan alleen maar SSH verbinding , maar we gebruiken enkel de SSH verbinding .

Hier is de link.
Putty

Klik op de link "here" op die website

en kies uw package en installeer.


Het icoontje van Putty op mijn bureaublad in Linux



Na  het openen van Putty krijg je iets in deze zin:




een beetje uitleg hierover :

Kies bij  " Category"  " Session" , normaal staat deze standaard bij het openen
In het veld " Host name or IP address " vul je uw ip adres in dat je in één van de  vorige aflevering hebt genoteerd , dus waarschijnlijk niet het mijne .

Kies bij " connection type " SSH  , dit brengt automatisch het "Port" nummer op 22 .

In " Saved Sessions " kies je een eigen naam , ik heb rpi gekozen .
Daarna druk je op de " Save" toets om dit op te slagen .
Bij een nieuwe sessie moet je dit voorgaande allemaal niet doen en kies je voor " Load" en alles wordt voor je ingevuld.



Druk daarna op " Open" om te starten .

Je krijgt dit waarschijnlijk te zien :

Dit is een waarschuwing die je krijgt bij de eerste verbinding , daarna niet meer Het is uit veiligheidsoverweging . Als je in een eigen thuisnetwerk zit kan dit geen inbreuk zijn van buitenaf en Accept je de verbinding , zie rode pijl.

Daarna krijg je iets zoals op de volgende afbeelding


Hier is al ingelogd en het paswoord ingegeven . De prompt verschijnt en je bent klaar voor de volgende stappen .

Vind  je het venster en het font te klein dan kan je dit aanpassen via " Colours" en "Fonts"  . Let op dat je in de juiste sessie zit , hier dus rpi , en na instellen van je colours en fonts uw sessie terug opslaan , anders heeft het geen effect.

Voor de volgende aflevering : instellen van een statisch ip adres.