Posts tonen met het label make. Alle posts tonen
Posts tonen met het label make. Alle posts tonen

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.