zondag 30 augustus 2009

Werken met Pardus Linux en GPS (live met gpsd)

Afgelopen week ontving ik een email van de Pardus Bugzilla website waar behalve bugs ook package requests gepost kunnen worden als je van een bepaalde applicatie graag een makkelijk installeerbaar Pardus PISI pakket in de pakketbronnen opgenomen ziet worden. Er werd mij teruggemeld dat het door mij aangevraagde software pakket GPSd vanaf nu beschikbaar is in de softwarebronnen van Pardus.

Mooi, gelijk maar eens even uitproberen dacht ik, en daar kwam mijn oude maar degelijke Magellan Explorist 210, een prima GPS apparaatje, uit de bureaulade, nieuwe batterijen er in en testen maar. Want, om GPSd te testen heb je een werkend GPS apparaat nodig dat je wilt koppelen aan je laptop. Althans, koppelen aan een PC kan natuurlijk ook wel, amar aangezien GPS met name functioneel is als je jezelf voortbeweegt is een laptop of netbook natuurlijk logischer wanneer je met GPSd aan de slag wilt.

Een korte omschrijving van GPSd van de website van dit project: "gpsd is a service daemon that monitors one or more GPSes attached to a host computer through serial or USB ports, making all data on the location/course/velocity of the sensors available to be queried on TCP port 2947 of the host computer. With gpsd, multiple GPS client applications (such as navigational and wardriving software) can share access to GPSes without contention or loss of data."

Kortom: door GPSd te installeren op je linux-systeem kun je live de data die door je GPS apparaat worden opgevangen in je laptop laden voor gebruik met andere GPS toepassingen. Zo kun je als het ware van je laptop je eigen TomTom-achtig navigatie-apparaat maken om maar eens een voorbeeld te noemen. Op YouTube staat bijvoorbeeld ook een filmpje van iemand die m.b.v. GPSd als schakel tussen GPS apparaat en laptop live ziichzelf ziet voortbewegen op Google Earth mappen. Kijk maar eens naar dat filmpje "Driving Google Earth on Linux with GPSD".

Eerst moest GPSd natuurlijk even geinstalleerd worden op mijn Pardus 2009 laptop. Op moment van schrijven bevond het pisi pakket zich nog in de pardus-2009-test repositiory, maar doorgaans verhuist het pakket na nog wat laatste testjes vrij snel naar de standaard pakketbron pardus-2009 (of de contrib-2009 repo). Er bleek eerst nog een extra afhankelijkheid geinstalleerd te moeten worden, welke zich in dezelfde pardus-2009-test pakketbron bevond, namelijk het pakket libgps. Ik installeerde dus achtereenvolgens libgps en daarna gpsd op mijn Pardus systeem:

sudo pisi it http://paketler.pardus.org.tr/pardus-2009-test/libgps-2.39-1-1.pisi
sudo pisi it http://paketler.pardus.org.tr/pardus-2009-test/gpsd-2.39-1-1.pisi

Dat was natuurlijk simpel, maar...werkt het dan ook? Nou, nee, dat vergde het nodige gepuzzel en gezoek op internet. Sowieso is het gebruik van gpsd in de command line interface (CLI) geen appeltje-eitje voor niet-CLI gebruikers, en de documentatie op de GPSd site is ook voor de wat meer gevorderde linux-gebruiker, kortom niet echt in wiki of HOWTO vorm om je als het ware aan de hand te nemen.

In de meest simpele vorm start je GPSd in de CLI door achter het commando gpsd een aparaat (device) lokatie te typen. Welke lokatie dat dan wel niet is verschilt per linux distributie. De meeste GPS apparaten verbind je via een USB kabel aan je laptop. In mijn geval betrof het een serial-to-usb kabel, dus aan de zijde van mijn odue Magellan Explorist 210 een serieel contact (je moet dan wat pinnetjes op de achterzijde van het apparaat "vastchroeven") en aan de laptop-zijde een standaard USB-stekker. Ik vond na wat zoeken op internet al snel dat mijn apparaat dan waarschijnlijk de lokatie /dev/ttyACM0 toegewezen zou krijgen, en na wat bladeren in de bestandsbeheerder, zag ik in de map /dev/ in ieder geval ook deze naam staan. In sommige andere linux distributies wordt het adres /dev/ttyUSB0 toegewezen. Maar op mijn Pardus 2009 systeem zou dan als ik het goed begrepen had het volgende commando de boel aan de praat moeten krijgen:

gpsd /dev/ttyACM0

vervolgens typ je dan het standaard mee geinstalleerde

xgps

...om te zien dat het niet meteen werkte. Na een korte "NO FIX" melding verscheen er "UNKNOWN" in het xgps venstertje en verder overal "n/a", niks live data van mijn Exploristje dus. Mmmmmm. Om een lang verhaal kort te maken waren er twee zaken die ik eerst moest instellen om het alsnog aan de praat te krijgen.

1. Mijn Magellan Explorist 210 moest niet in USB Data transfer modus maar in NMEA modus gezet worden, dat had ik ook nog wel begrepen van de GPSd website, de communicatie met de GPS gaat via NMEA, maar welke NMEA modus moest het zijn? Dat is nogal GPS apparaat-specifiek, voor de Magellan Explorist 210 bleek het na wat Google zoekopdrachten om de optie NMEA-V2.1 GSA (de onderste van vier opties onder NMEA) te gaan. Voor de zekerheid je GPS apparaat eerst opnieuw opstarten en nogmaals NMEA GSA modus kiezen.
2. Vermoedelijk (ik weet het niet zeker) is GPSd in het Pardus pisi pakket zo geconfigureerd dat deze daemon standaard opstart als je je systeem opstart, m.a.w. gpsd draait al op het moment dat jij je commando in de CLI wilt gaan geven. Ik rkeeg steeds wel of geen (afhankelijk van extra opties die je aan het gpsd commando mee kunt geven) foutmeldingen, en nog steeds niets spanneds in beeld in het xgps venster. Pas nadat ik de gpsd daemon eerst gestopt had en opnieuw startte door:

sudo killall gpsd
sudo /usr/sbin/gpsd -N /dev/ttyACM0
xgps

...werkte het ineens (wel even met de laptop en verbonden Magellan naar buiten moeten lopen, want anders had mijn apparaatje sowieso geen GPS fix). In xgps krijg je dan zoiets (ik heb uit privacy overwegingen de laatste cijfers van de GPS coordinaten grijs gemaakt):




Mogelijk dat in plaats van "/usr/bin/gpsd" hier ook gewoon zoals aanvenkelijk gemeld simpelweg "gpsd" had gewerkt, maar met bovenstaande kreeg ik het aan de praat.

Nou, dat werkt, mooi. Later zal ik nog eens wat bloggen over GPS toepassingen die je in Pardus linux tegenkomt Voor het simpele xgps heb je natuurlijk ook allerlei altermatieven, maar xgps is de standaard meegeleverde applicatie bij GPSd, dus deze heb ik in het voorbeeld ook gebruikt.

Geen opmerkingen:

Een reactie posten