View previous topic :: View next topic |
Author |
Message |
henry Apprentice

Joined: 09 Aug 2002 Posts: 154
|
Posted: Wed Apr 02, 2025 2:05 pm Post subject: gelöst: Gpredict / rotctld |
|
|
Hallo Freunde ,
mein Problem
Gpredict soll an Port 4533 und hören senden
und rotctld soll das selbe auf Port 4533 machen.
Läuft auf localhost.
tcpdump zeigt:
15:58:01.705401 IP localhost.38504 > localhost.4533: Flags [.], ack 90, win 512, options [nop,nop,TS val 1060230869 ecr 1060230869], length 0
Bei jedem Neustart werden statt 4533 beliebige andere Ports geöffnet.
Ich habe nach tagelanger Suche des errors keine Idee mehr.
Wer kann helfen?
Danke und beste Grüße Henry
15:58:01.072325 IP localhost.4533 > localhost.38504: Flags [P.], seq 80:89, ack 34, win 512, options [nop,nop,TS val 1060230236 ecr 1060230236], length 9
15:58:01.072332 IP localhost.38504 > localhost.4533: Flags [.], ack 89, win 512, options [nop,nop,TS val 1060230236 ecr 1060230236], length 0
15:58:01.705329 IP localhost.38504 > localhost.4533: Flags [P.], seq 34:36, ack 89, win 512, options [nop,nop,TS val 1060230869 ecr 1060230236], length 2
15:58:01.705338 IP localhost.38504 > localhost.4533: Flags [F.], seq 36, ack 89, win 512, options [nop,nop,TS val 1060230869 ecr 1060230236], length 0
15:58:01.705387 IP localhost.4533 > localhost.38504: Flags [F.], seq 89, ack 37, win 512, options [nop,nop,TS val 1060230869 ecr 1060230869], length 0
15:58:01.705401 IP localhost.38504 > localhost.4533: Flags [.], ack 90, win 512, options [nop,nop,TS val 1060230869 ecr 1060230869], length 0
Last edited by henry on Fri Apr 04, 2025 7:22 am; edited 1 time in total |
|
Back to top |
|
 |
Christian99 Veteran

Joined: 28 May 2009 Posts: 1734
|
Posted: Wed Apr 02, 2025 4:29 pm Post subject: |
|
|
Quote: | Gpredict soll an Port 4533 und hören senden |
sorry, der satz macht so keinen Sinn. Meinst du "... an Port 4533 hören und senden"?
wenn du das meinst, funktioniert das zusammen mit dem nächsten Satz "und rotctld soll das selbe auf Port 4533 machen." nicht. denn auf einen Rechner (streng genommen IP Adresse) kann nur ein Programm einen bestimmten Port zum Listen öffnen.
Lass uns doch mal einen Schritt zurückgehen. Was willst du denn eigentlich erreichen? sollen diese beiden Programme über TCP miteinander kommunizieren?
Wenn ja, ist eines davon das Programm, das den Port 4533 zum listenen öffnet (sorry, klingt irgendwie komisch, aber "zum horchen" in bezug auf netzwerk sockets ist für mich irgendwie noch komischer)
das andere macht dann eine Verbindung zu diesen port auf. Diese Verbindung geht von einem beliebigen port aus und endet bei einem bestimmten port. das ist aber kein problem, das ist so üblich, dass der, der die verbindung aufmacht keinen festen port verwendet (ich glaube, wenn man unbedingt will kann man einen festen port verwenden, aber die allermeisten programme machen das nicht, weil es wesentlich einige wesentliche nachteile hat)
dein tcpdump ausschnitt sieht aber auch so aus, als ob da eine Verbindung hergestellt ist, denn die zwei seiten reden miteinander. mal schickt der eine was, mal der andere. |
|
Back to top |
|
 |
henry Apprentice

Joined: 09 Aug 2002 Posts: 154
|
Posted: Thu Apr 03, 2025 6:55 am Post subject: |
|
|
Hallo Christian99,
ich versuch es mal so:
gpredict : listening 4533
rotctld : set TCP listening port, default 4533
So steht es in den help-Anweisungen geschrieben.
Interface ist IF-100
an /dev/parport0
Ich hoffe das ist aussagekräftiger.
Danke Henry |
|
Back to top |
|
 |
Christian99 Veteran

Joined: 28 May 2009 Posts: 1734
|
Posted: Thu Apr 03, 2025 9:49 am Post subject: |
|
|
henry wrote: |
gpredict : listening 4533
rotctld : set TCP listening port, default 4533
|
das kann so nicht gehen. auf einer IP Adresse kann nur ein Programm auf einen port Listener sein.
Quote: |
So steht es in den help-Anweisungen geschrieben.
|
Welche Help anweisungen?
Quote: |
Interface ist IF-100
an /dev/parport0
|
bin mir nicht sicher was da was ist. IF-100 ist ein sehr untypischer name für ein Netzwerkinterface. und Netzwerkinterfaces haben normalerweise auch kein Devicenode in /dev
Aber dieser letzte Punkt ist eigentlich auch nicht relevant für das was du weiter oben geschrieben hast. Zu beginn hattest du was von localhost erzählt, was ja über ein lokales Interface läuft, also nicht über tatsächliche Hardware netzwerkinterfaces.
Außerdem weiß ich immer noch nicht was dein eigentliches Problem ist. Können die beiden Programme nicht miteinander reden? Dein anfänglicher tcpdump auszug sieht aber anders aus. Da sieht es so aus, als ob eine TCP Verbindung besteht, über die geredet wird. |
|
Back to top |
|
 |
henry Apprentice

Joined: 09 Aug 2002 Posts: 154
|
Posted: Thu Apr 03, 2025 10:09 am Post subject: |
|
|
Hallo,
ich versuche es mal anders :
das Rotorinterface von gpredict:
Name : Rotor
Host: 127.0.0.1
Port: 4533 (Standartport)
rotctld:
rotctld -m 1201 -r /dev/parport0 -T 127.0.0.1 -t 4533 -vvvv -C south_zero=1
wenn ich rotctld starte:
rotctld, Hamlib 4.6.2 2025-02-09T21:03:50Z SHA=870364 64-bit
Report bugs to <hamlib-developer@lists.sourceforge.net>
rot_init called
initrots4_amsat called
rot_register (1201)
rot_token_lookup called lookup south_zero
rot_token_lookup called lookup south_zero
rot_set_conf called
rot_set_conf: south_zero='1'
frontrot_set_conf called
rot_open called
par_open called
ser_set_dtr: DTR=0
ser_set_dtr: Cannot change DTR - Invalid argument
ser_set_rts: RTS=0
ser_set_rts: Cannot change RTS - Invalid argument
Opened rot model 1201, 'IF-100'
Backend version: 20110531.0, Status: Stable
Connection opened from 127.0.0.1:57134
rot_get_position called
rot_get_position called
rot_get_position called
rot_get_position called
rot_get_position called
rot_get_position called
rot_get_position called
rot_get_position called
rot_get_position called
Connection closed from 127.0.0.1:57134
/dev/parport0 wir angezeigt (lspci -v auch)
rotctld -h
Usage: rotctld [OPTION]... [COMMAND]...
Daemon serving COMMANDs to a connected antenna rotator.
-m, --model=ID select rotator model number. See model list
-r, --rot-file=DEVICE set device of the rotator to operate on
-R, --rot-file2=DEVICE set device of the 2nd rotator controller to operate on
-s, --serial-speed=BAUD set serial speed of the serial port
-t, --port=NUM set TCP listening port, default 4533
-T, --listen-addr=IPADDR set listening IP address, default ANY
-C, --set-conf=PARM=VAL set config parameters
-o, --set-azoffset==VAL set offset for azimuth
-O, --set-eloffset==VAL set offset for elevation
-L, --show-conf list all config parameters
-l, --list list all model numbers and exit
-u, --dump-caps dump capabilities and exit
-v, --verbose set verbose mode, cumulative
-Z, --debug-time-stamps enable time stamps for debug messages
-h, --help display this help and exit
-V, --version output version information and exit
Commands (some may not be available for this rotator):
P: set_pos (Azimuth, Elevation)
p: get_pos ()
K: park ()
S: stop ()
R: reset (Reset)
M: move (Direction, Speed)
V: set_level (Level, Level Value)
v: get_level (Level)
U: set_func (Func, Func Status)
u: get_func (Func)
X: set_parm (Parm, Parm Value)
x: get_parm (Parm)
C: set_conf (Token, Value)
_: get_info ()
s: get_status ()
w: send_cmd (Cmd)
1: dump_caps ()
3: dump_conf ()
?: dump_state ()
L: lonlat2loc (Longitude, Latitude, Loc Len [2-12])
l: loc2lonlat (Locator)
D: dms2dec (Degrees, Minutes, Seconds, S/W)
d: dec2dms (Dec Degrees)
E: dmmm2dec (Degrees, Dec Minutes, S/W)
e: dec2dmmm (Dec Deg)
B: qrb (Lon 1, Lat 1, Lon 2, Lat 2)
A: a_sp2a_lp (Short Path Deg)
a: d_sp2d_lp (Short Path km)
?: pause (Seconds)
?: get_conf (Token)
In interactive mode prefix long command names with '\', e.g. '\dump_state'
The special command '-' is used to read further commands from standard input
Commands and arguments read from standard input must be white space separated,
comments are allowed, comments start with the # character and continue to the
end of the line.
Habe ich ein Problem mit parport0?
IF-100 ist ein Interface für die parallele Schnitstelle. Habe eine PCI Multi-I/O-Karte.
73 Henry |
|
Back to top |
|
 |
Christian99 Veteran

Joined: 28 May 2009 Posts: 1734
|
Posted: Thu Apr 03, 2025 10:27 am Post subject: |
|
|
hm, ich weiß immer noch nicht was dein Problem ist.
Du schreibst zwar jetzt was die Ausgaben von dem Programm sind, aber da ich dieses Programm nicht kenne, weiß ich jetzt auch nicht ob das was da steht, so richtig ist, oder nicht. Auf den ersten Blick ist aber nichts zu sehen, was offensichtlich wie ein Fehler/Problem aussieht.
Quote: | Connection opened from 127.0.0.1:57134
...
Connection closed from 127.0.0.1:57134
|
das sieht so aus, als ob da erfolgreich eine Netzwerkverbindung zu diesem Programm hergestellt wird, und nach einer Weile wieder beendet wird. Also funktioniere Netzwerkverbindungen und dein eigentliches Problem ist was anderes, richtig?
Kannst du mal versuchen zu erklären, was du von den beiden Programmen erwartest, und was da nicht geht/was tatsächlich passiert? |
|
Back to top |
|
 |
henry Apprentice

Joined: 09 Aug 2002 Posts: 154
|
Posted: Thu Apr 03, 2025 1:34 pm Post subject: |
|
|
Es wir aber nicht Port 4533 angesprochen.
Bei jedem Start wird ein anderer Port angesprochen.
Es müsste doch so aussehen 127.0.0.1: 4533
Oder?
73 Henry |
|
Back to top |
|
 |
Christian99 Veteran

Joined: 28 May 2009 Posts: 1734
|
Posted: Thu Apr 03, 2025 4:17 pm Post subject: |
|
|
da steht "from", das bezieht sich auf die gegenstelle der eingehenden verbindung. Eine TCP Verbindung hat zwei seiten: die Seite, die listener ist, und die Seite, die sich zu dem listener verbindet. und eine Seite setzt sich zusammen aus IP und port, übliche darstellung ist, das durch ":" zu trennen.
in deinem fall ist die listener seite 127.0.0.1:4533, was du ja auf der Kommandozeile angibst. Jetzt kommt ein anderes Programm, das ein connect zu diesem 127.0.0.1:4533 macht, wenn man das nicht explizit anders macht, wird vom Netzwerkstack/Kernel eine zufällige portnummer als absender port zugewiesen. in dem fall ist die Gegenstelle, die die Verbindung aufbaut, 127.0.0.1:57134.
Die Verbindung ist also 127.0.0.1:4533<->127.0.0.1:57134. Da die listenseite fix ist, solange das programm läuft, und die Parameter dafür auf der Kommandozeile angegeben werden, haben sich die Entwickler des Programms vermutlich gedacht, dass man sich das sparen kann, und es wird nur die Gegenseite der Verbindung ausgegeben, 127.0.0.1:57134
Du kannst das Programm mal starten und dann in einer anderen shell mal "ss -tlpn" (als root) ausführen, das zeigt dir an welche programme auf deinen Rechner gerade auf welchen port listener sind.
ich mach das mal beispielhalber mit socat, da ich das programm von dir nicht habe.
Code: | socat TCP-LISTEN:22222,fork,bind=127.0.0.1 - |
im ss output ist dann neben anderen folgende zeile zu sehen.
Code: | LISTEN 0 5 127.0.0.1:22222 0.0.0.0:* users:(("socat",pid=1907501,fd=5)) |
die erste spalte heißt, dass das die Informationen zu einen Programm sind, das listener ist, die nächsten zwei spalten sind irgendwelche queue längen im Kernel und interessieren uns hier nicht, danach steht da "127.0.0.1:22222", das heißt das an der adresse 127.0.0.1 port 22222 (bei dir wäre der port dann 4533) ein listener ist, und in der letzten spalte steht, welches programm das ist. bei dir wäre das dann rotctld
Jetzt mache ich zu diesem socat eine Verbindung auf, auch mit socat:
wenn ich jetzt
ausführe (achtung ohne l parameter wie oben)
sehe ich folgende 2 zeilen
Code: |
ESTAB 0 0 127.0.0.1:22222 127.0.0.1:34482 users:(("socat",pid=1911185,fd=6))
ESTAB 0 0 127.0.0.1:34482 127.0.0.1:22222 users:(("socat",pid=1911184,fd=5)) |
ohne den l parameter zeigt ss bestehende verbindungen an, mit l die listener.
Die erste Spalte bedeutet, das es eine bestehende Verbindung ist, ESTAB soll established heißen, dann wieder 2mal Queues im kernel, dann die zwei seiten der Verbindnug 127.0.0.1:22222<->127.0.0.1:34482 in der einen zeile und 127.0.0.1:34482<->127.0.0.1:22222 in der anderen. Da beide Programme auf meinen rechner laufen ist die selbe verbindung hier zweimal zu sehen, einmal aus der Sicht des Listeners(erste Zeile) und einmal aus sicht dessen, der die Verbindung aufgebaut hat(zweite Zeile). |
|
Back to top |
|
 |
henry Apprentice

Joined: 09 Aug 2002 Posts: 154
|
Posted: Fri Apr 04, 2025 7:22 am Post subject: |
|
|
Hallo Chris,
danke für Deine Erläuterungen, das war sehr erhellend. Habe wieder was dazu gelernt.
An Hand Deiner Erklärungen kann ich nun den Fehler auf ein Hardwareproblem am Rotor eingrenzen.
Wahrscheinlich ist das Potentiometer (im Rotor) für die Positionsmeldung defekt.
Ein Fehler der in den einschlägigen Foren benannt wird.
Nochmals vielen Dank. War wirklich sehr aufschlussreich für mich.
73 Henry |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|