• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

GPS-Daten von CW auf PDA an Cachewolf auf PC in Linux[gelöst

white_rabbit

Geocacher
Hallo.
Folgendes "Problem": Ich besitze einen XDA Orbit I, der unter Linux nicht per USB ansprechbar ist. Nun habe ich im Cachewolf aber die Option "GPS-Daten weiterleiten an Host 192.168..." entdeckt.
Meine Frage ist nun: Was muss auf dem Host laufen, damit diese Daten auch angenommen werden? Sehe ich das richtig, dass dort gpsd laufen muss oder wie macht ihr das? Ich habe mir gpsd schon mal angesehen aber verstehe bisher leider nicht, wie ich es starten muss, damit es nicht auf ein USB-Gerät wartet sondern einfach auf die Daten vom Cachewolf wartet??
Hat da einer ne Idee?

Dann noch was grundsätzliches: Was genau soll GpsBabel? Wo ist der Unterschied zu dem hier gewählten Weg??
Danke f. Infos,
White Rabbit
 

pfeffer

Geowizard
"GPS-Daten weiterleiten an Host" bewirkt, dass Cachewolf zum Host eine TCP-Verbindung mit Zielport 21 aufbaut und die Daten einfach dahin schickt.
In Windows kann das zum Beispiel das Programm virtualCOMPlus (oder so ähnlich) entgegennehmen und an einem virtuellen COM-Port ausgeben.
In Linux müsste Vergleichbares mit Boardmitteln machbar sein:
nc -p 21 -l >/dev/tty0
oder so vielleicht?
(wobei nc für netcat steht)
Was möchtest Du mit den Daten denn weiter machen?

Gruß,
Pfeffer.
 
OP
W

white_rabbit

Geocacher
ach so ...
also auf dem Zielrechner läuft ebenfalls Linux mit dem Cachewolf. Der soll die Daten einfach nur annehmen. Das klappte out-of-the-box leider nicht.
Sinn der ganzen Aktion ist es, dass ich ab und zu das GPS-Signal auch gerne am Rechner hätte. Mein PDA ist aber nicht ständig per BT mit dem Rechner verbunden...
 

jennergruhle

Geoguru
Der Cachewolf kann entweder die GPS-Daten roh auf einen bestimmten TCP-Port eines Zielrechners weiterleiten oder aber einen woanders (oder auf der selben Maschine laufenden) GPSD zugreifen. Beides aber nur per Netzwerk (TCP-Verbindung). Man braucht also eine Verbindung per WLAN, USB-Netzwerk oder Bluetooth-PAN (aber immer TCP/IP).
 
OP
W

white_rabbit

Geocacher
also dann ist es ja doch genauso, wie ich mir das vorgestellt hatte.
dann müsste ja folgendes gehen:

1.) Handy mit GPS-Device: Cachewolf --> Daten senden an Host mit gpsd
(Wlan ist vorhanden; IP-Adresse kommt aus dem gleichen Subnetz)
2.) Wie genau starte ich den gpsd in diesem Fall auf dem Host?
3.) Cachewolf auf dem Host: Cachewolf --> Daten von gpsd auf 127.0.0.1
empfangen

Hat das einer so realisiert?
 

jennergruhle

Geoguru
Also ich habe die Weiterleiten-Funktion noch nie benutzt, aber ich verstehe sie so, dass einfach die NMEA0183-Datensätze vom GPS-Empfänger am Seriellport auf die im Cachewolf hinterlegte Adresse aktiv weitergeleitet werden, und zwar per TCP-Verbindung zu Port 23 (Telnet). Dort sitzt dann ein Programm, welches die Verbindung entgegennimmt und die Daten weiter verarbeitet. Dafür gibt es sicher Anwendungsfälle, aber zum Weiterleiten von NMEA-Daten an einen weiteren Cachewolf taugt das nicht.
Wenn man Cachewolf auf einem Rechner betreiben will, der keinen GPS-Empfänger hat, dann muss man einen entfernten GPS-Empfänger per GPSD ansteuern. Dazu muss also in Deinem Fall auf dem Handy ein GPSD laufen, der die GPS-Daten vom Seriellport liest und per Netzwerk (meist auf Port 2947) zur Verfügung stellt. Ich habe mal kurz gesucht, aber kein passendes Programmm gefunden.
 

jennergruhle

Geoguru
Nachtrag: Die von Dir beabsichtigte Konstellation wird so leider nicht funktionieren, da wie gesagt auf dem Handy kein GPSD vorhanden ist, der dem Host die Daten weiterleiten könnte. Auf dem Linux-Host könntest Du zwar einen GPSD betreiben, aber der hätte keine Möglichkeit, an die Daten zu kommen, da er kein passendes Eingabe-Plugin hat.

In meiner Konstellation gibt es einen GPSD auf dem Handy (der ogpsd von OpenMoko), dessen Daten kann ich lokal auf dem Handy oder entfernt auf einem PC mit CW abrufen.
 

MiK

Geoguru
jennergruhle schrieb:
Dafür gibt es sicher Anwendungsfälle, aber zum Weiterleiten von NMEA-Daten an einen weiteren Cachewolf taugt das nicht.
Das geht schon. Für Win gibt es Programme, die diese Daten dann an einem virtuellen COM-Port zur Verfügung stellen. Ich kann mir eigentlich nicht vorstellen, dass es dafür unter Linux keinen Weg gibt.
 

pfeffer

Geowizard
ich habe doch schon geschrieben, wie ich denke, dass es in linux gehen müsste. Wenn ich das richtig sehe, muss man bestimmt tty durch pty ersetzen.
Hast Du das denn mal ausprobiert?

Gruß,
Pfeffer.

PS: Thema präzisiert und [gelöst] ergänzt.
 
OP
W

white_rabbit

Geocacher
das Problem ist momentan eher, dass unter der Java-Version vom CW in den Einstellungen *gar* keine Seriellen Ports gelistet werden -- auch nicht, wenn man auf "Suche..." klickt. Wahrscheinlich sucht der CW "nur" nach Com1: ... ComX: und nicht nach Linux-Ports??
Von daher kann ich den CW, der das GPS-Signal empfangen soll, gar nicht so einstellen, wie es sein müsste, oder?
:hilfe:
 

arbor95

Geoguru
ja, automatisch werden nur COM1: bis COM9: geprüft.

Manuell eingeben sollte aber möglich sein (von mir nicht getestet).

Noch mal zu deinem ursprünglichen Problem:
white_rabbit schrieb:
also dann ist es ja doch genauso, wie ich mir das vorgestellt hatte.
dann müsste ja folgendes gehen:

1.) Handy mit GPS-Device: Cachewolf --> Daten senden an Host mit gpsd
(Wlan ist vorhanden; IP-Adresse kommt aus dem gleichen Subnetz)
2.) Wie genau starte ich den gpsd in diesem Fall auf dem Host?
3.) Cachewolf auf dem Host: Cachewolf --> Daten von gpsd auf 127.0.0.1
empfangen

Hat das einer so realisiert?
zu 1und2 ) Willst du CW nutzen um die gps-Daten an den PC zu schicken? (Da hab ich noch nicht ins prog reingesehen)
zu 3) im CW wird eine socket - Verbindung auf die IP port 2947 aufgebaut. Im Eingabefeld kannst du aber auch IP:portNr eingeben

Da gspd ja wohl nur unter linux rennt kann ich das bei mir zur Zeit nicht simulieren. Aber Jennergruhle hat das ja eingebaut. Der sollte auch sagen können , wie was funktioniert.
 
OP
W

white_rabbit

Geocacher
Hi. Also den Vorschlag
Code:
nc -p 21 -l >/dev/tty0
habe ich ausprobiert.
Das Problem liegt eher woanders:
Auf dem PDA läuft CW mit der Option
"GPS-Daten weiterleiten an Host 192.168.178.42:21"
Wenn ich das GPS starten will, wird aber gemeckert:
"Ignoriere Fehler: Konnte Daten nicht an Host 192.168.178.42:21 weiterleiten. Für einen neuen Versuch stoppe und starte GPS neu"
(ein Ping auf 192.168.178.42 geht aber!)

Auf dem Host .42 komme ich auch nicht weiter, denn dort
stelle ich folgendes ein:
1.) in einer Shell den Befehl von oben
2.) im CW wähle ich in den Einstellungen ---> Port /dev/tty0
Wenn ich dann auf Ok klicke steht dort seltsamerweise
../dev/tty0 << Bug oder Feature? Und wenn ich dort auf "Testen" klicke kommen keine Daten vom PDA an.

Ihr seht: Da ist noch irgendwo der Bock drin -- aber wo??
 

arbor95

Geoguru
white_rabbit schrieb:
Hi. Also den Vorschlag
Code:
nc -p 21 -l >/dev/tty0
habe ich ausprobiert.
Das Problem liegt eher woanders:
Auf dem PDA läuft CW mit der Option
"GPS-Daten weiterleiten an Host 192.168.178.42:21"
Wenn ich das GPS starten will, wird aber gemeckert:
"Ignoriere Fehler: Konnte Daten nicht an Host 192.168.178.42:21 weiterleiten. Für einen neuen Versuch stoppe und starte GPS neu"
(ein Ping auf 192.168.178.42 geht aber!)

Auf dem Host .42 komme ich auch nicht weiter, denn dort
stelle ich folgendes ein:
1.) in einer Shell den Befehl von oben
2.) im CW wähle ich in den Einstellungen ---> Port /dev/tty0
Wenn ich dann auf Ok klicke steht dort seltsamerweise
../dev/tty0 << Bug oder Feature? Und wenn ich dort auf "Testen" klicke kommen keine Daten vom PDA an.

Ihr seht: Da ist noch irgendwo der Bock drin -- aber wo??

ASAF : gpsfeed+ Kann die Daten vom tcp nehmen und z.B. an serielle Schnittstelle weiterleiten die man dann mit nem virtuellen Nullmodemkabel com0com(linux?) auf eine andere srielle Schnittstelle weiterleitet.

Hab ich zwar auch noch nicht probiert, aber Versuch macht kluch!
 

jennergruhle

Geoguru
Mir scheint, dass man beim Weiterleiten nicht den Port angeben kann, der ist also immer hartkodiert 23 (Telnet=23, 21 ist FTP!). hostname:23 wird deshalb falsch verstanden.

Das obige "nc -p 21 -l >/dev/tty0" kann aber nicht klappen, erstens muss der Port wie gesagt 23 sein, außerdem würde es die empfangenen Daten auf das Gerät tty0 leiten, was ein virtuelles Terminal ist. Das interessiert dann dort niemanden.

Aber man könnte einen FIFO erzeugen, auf diesen die nc-Ausgabe umleiten und ihn unter dem CW als Eingabegerät nehmen. Ich probiere das mal heute abend aus - habe hier keine taugliche Testumgebung dafür.
 

arbor95

Geoguru
jennergruhle schrieb:
Mir scheint, dass man beim Weiterleiten nicht den Port angeben kann, der ist also immer hartkodiert 23 (Telnet=23, 21 ist FTP!). hostname:23 wird deshalb falsch verstanden.
...
Stimmt ich hab auch grad reingeschaut. CW erwartet wohl ein prog, das auf port 23 lauscht (telnetd ?). Eine Verbindung mit einem (lokalen) telnet-client geht nicht. Ein anderer CW nimmt nur Daten von der seriellen Schnittstelle oder von einem gpsd (was CW aber nicht ist).
 

jennergruhle

Geoguru
So, ich hab es mal getestet. "nc -l -p 23" öffnet ein netcat, das auf Telnet-Verbindungen lauscht und die empfangenen Daten auf dem Bildschirm ausgibt (natürlich nur, wenn man keinen telnetd auf der Linuxkiste laufen hat - aber heutzutage nutzt man ssh als Standard).
Händisch mit telnet dahin ne Verbindung aufbauen klappt, das nc erzählt dann alles Eingegebene nach. Ob das mit dem Cachewolf als Telnet-Sprecher auch klappt weiß ich nicht, denn ich kann zu Hause nur auf dem Fensterbrett GPS empfangen, aber bis dort reicht das USB-Kabel vom Handy nicht. Und ohne GPS-Daten sendet der CW ja auch nichts per Telnet aus.

Aber folgendes klappt auch:
mkfifo gpsfifo
sudo nc -l -p 23 >gpsfifo

und dann in einem zweiten Terminal "cat gpsfifo". Das nc muss als root gestartet werden, weil nicht jeder Nutzer einfach so Ports zum Horchen öffnen darf.

Dann wird auf dem zweiten Terminal das ausgegeben, was ich in einem dritten Terminal nach Telnet-Verbindung einhacke. Also sollte auch der Cachewolf auf dem Host das vom Fifo auslesen können, was dort vom Handy-Cachewolf per Telnet und nc abgeliefert wird. Es ist allerdings so, dass ein Beenden des Auslesens am Fifo selbigen schließt und damit auch das nc. Das muss man dann also beim nächsten Mal wieder neu starten.
 

arbor95

Geoguru
alos gut, und dann muss das noch auf einen seriellen port ausgegeben werden, damit CW das wieder einlesen kann.

Also noch >seriellerPort dranhängen (dann kommt es auch nicht auf dem Bildschirm).

Mit Einlesen über gpsd hat man da keinen Erfolg.!
 
OP
W

white_rabbit

Geocacher
Ok, das klappt soweit schon mal. Bleibt die Frage, was ich dann im CW auf dem Host unter "serieller Port" einstellen soll? "Testen" klappt jedenfalls nicht, wenn ich dort einfach auf
Code:
prw-r--r--  1 root root          0 2009-10-29 07:41 gpsfifo
zeigen lasse...
Und wenn ich überall "/dev/tty0" oder den echten seriellen Port "/dev/ttyS0" eintrage, erhalte ich in der CW-Shell einen Java-Fehler:
Code:
java.lang.UnsatisfiedLinkError: canOpen 
[...] bzw.
java.lang.UnsatisfiedLinkError: nativeCreate
[...]
Vielleicht ist ja jemand schon weiter als ich?
 

arbor95

Geoguru
Ich vermute da ein Problem mit der Java - Version.

Die Abfrage "serialPort".canOpen ist der interne Test für die Existenz der seriellen Schnittstelle. Und das ist speziell aus der Ewe - Bibliothek.
 
Oben