Forum: Mikrocontroller und Digitale Elektronik Ethersex hängt sich auf, aber Ping geht?


von Klaus (Gast)


Lesenswert?

Meine Ethersex-Installation zur Abfrage diverser 1Wire-Sensoren , 
S0-Stromzähler und Inputs lief hier seit ca. 5 Jahren problemlos

Seit ca. 3 Wochen hängt sie sich allerdings alle 1-2 Tage auf, ist über 
Telnet nicht mehr erreichbar.
Komischerweise geht ein Ping aber weiterhin.

Ich bin etwas ratlos, wo ich hier anfangen soll zu suchen? Evtl. ein 
1wire-Sensor feucht geworden?

Ich frage die Sensoren von einem Linux-Server z.B. mit
garagentor=`echo '!pin get in4' | nc 192.168.178.44 2701 -q 1 
2>/dev/null `
ab.

Wie kann ich vom Server aus feststellen ob sich der Ethersex aufgehangen 
hat? Ping geht leider wie gesagt, sonst wäre es einfach

Viele Grüße

Klaus

von Bodo B. (gelbwichtel)


Lesenswert?

Hallo Klaus,
ich hatte diese Probleme auch mal. Letztendlich war bei mir der ENC28J60 
auf dem NET-IO defekt. Nach dessen Austausch lief alles wieder.
Gruß
Bodo

von Klaus (Gast)


Lesenswert?

Hallo Bodo,

danke für den Tipp, dann werde ich den mal als erstes tauschen und 
hoffen :-)

von Klaus (Gast)


Lesenswert?

Ich hole das alte Thema noch mal hoch - der Tausch des ENC hat leider 
nichts gebracht, der Net-IO mit Ethersex hängt sich weiterhin alle 1-2 
Tage auf.

Ich überwache ihn momentan vom Server aus, habe eine schaltbare 
STeckdose dazwischen
Strom aus/an für 10 sec reicht aus, um ihn wieder zum Leben zu erwecken

Irgendwelche weitere Ideen?


Viele Grüße

Klaus

von wendelsberg (Gast)


Lesenswert?

In 
https://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin
heisst es u.a.

> 100nF über alle drei IC Störunterdrückung zusätzlich bestücken

Besonders die fehlenden Cs am ENC hatten bei vielen, (auch bei meinem) 
den Verlust der Kommunikation bewirkt. Nachruesten der Cs behob das 
Problem.

Nein, die sind auf der Leiterplatte nicht vorgesehen.
Und sie wurden wahrscheinlich vergessen, weil sie nicht in der 
Beispielschaltung im Datenblatt gezeichnet sind, nur im Text erwaehnt.

wendelsberg

von eagle user (Gast)


Lesenswert?

ping wird vom Kernel selbst beantwortet, für die meisten anderen 
Aufgaben, z.B. telnet, muss erst ein Programm gestartet werden. Wenn 
z.B. die Festplatte komplett ausfällt, geht ping immer noch. Programme, 
die schon laufen und keine Festplattenzugriffe machen, laufen auch 
weiter.

Ein beliebter Fehler: ein Programm verbraucht im Laufe der Zeit immer 
mehr Speicher. Dann können irgendwann keine neuen Programme mehr 
gestartet werden, der Rest läuft aber noch. Eigentlich müsste eine 
bestehende telnet-Verbindung weiter funktionieren inkl. der Shell. 
Welche Befehle man noch ausführen kann, hängt natürlich vom Fehler ab. 
Shell-interne wie pwd oder echo sollten immer noch gehen.

von wendelsberg (Gast)


Lesenswert?

eagle user schrieb:
> ping wird vom Kernel selbst beantwortet, für die meisten anderen
> Aufgaben, z.B. telnet, muss erst ein Programm gestartet werden. Wenn
> z.B. die Festplatte komplett ausfällt, geht ping immer noch. Programme,
> die schon laufen und keine Festplattenzugriffe machen, laufen auch
> weiter.

Das ist ein AVR-Netio, der hat keine Festplatte.

wendelsberg

von Klaus (Gast)


Lesenswert?

> 100nF über alle drei IC Störunterdrückung zusätzlich bestücken

die habe ich drin, das Teil lief ja auch schon 2 Jahre, dann kam der 
Fehler plötzlich


Ich schicke mit mit Ehersex u.a. direkt zu einer 
Volkszähler-Installation bei einem Webhoster. Kann es evtl. sein das 
hier was nicht angenommen wird und sich Ethersex deshalb aufhängt?


Viele Grüße

Klaus

von wendelsberg (Gast)


Lesenswert?

Klaus schrieb:
> Kann es evtl. sein das
> hier was nicht angenommen wird und sich Ethersex deshalb aufhängt?

Moeglich, weil auf so einem kleinen uC der Pufferspeicher nicht gross 
sein kann. Kannst Du nur durch Mitloggen sicher ausschliessen.

wendelsberg

von Klaus (Gast)


Lesenswert?

Hallo Wendelsberg,

wie kann ich das mitloggen?  Mir fällt spontan nur Wireshark ein, ist 
aber ein RIesen-Aufwand mit Ntzwerkhub usw
Oder gibt es bei Ethersex eine einfachere Möglichkeit?

Viele Grüße

Klaus

von wendelsberg (Gast)


Lesenswert?

Ich denke da auch an Wireshark.

wendelsberg

von c-hater (Gast)


Lesenswert?

Klaus schrieb:

> Ich schicke mit mit Ehersex u.a. direkt zu einer
> Volkszähler-Installation bei einem Webhoster. Kann es evtl. sein das
> hier was nicht angenommen wird und sich Ethersex deshalb aufhängt?

Natürlich.

Ethersex verwendet nur einen ganz primitiven Netzwerkstack mit vielen 
Restriktionen und wenig Automatismen.

Es ist Sache der Anwendungen, diesen Stack korrekt zu benutzten. 
Insbesondere ist es Sache der Anwendungen, TCP-Verbindungen in 
Fehlersituationen (auch auf höheren Protokoll-Layern) korrekt 
abzuräumen, indem im richtigen Moment die richtigen Funktionen des 
Stacks aufgerufen werden.

Deine Fehlerbeschreibung klingt ganz danach, als würde deine Anwendung 
genau dies nicht tun, also keine korrekte Fehlerbehandlung 
implementieren, sondern nur den Fall abbilden, dass alles so läuft, wie 
es idealerweise laufen sollte. Sprich: eine typisches C-Programm von 
typischen C-"Programmierern", die eigentlich im Wesentlichen nur 
Copy&Paste betreiben...

Das führt dann hier dazu, dass längst abgekackte Verbindungen 
speicherverwaltungtechnisch im Stack offen bleiben. Irgendwann (eher 
früher als später) ist dann das Limit der vom Stack unterstützten 
gleichzeitigen TCP-Verbindungen ausgeschöpft. Das führt dann unmittelbar 
dazu, dass der Stack selber zwar sehr wohl noch läuft, aber keine 
TCP-Verbindungen mehr aufbauen kann, weder aus- noch eingehende. D.h.: 
ICMP und ARP gehen noch (sprich: "ping geht"), aber z.B. telnet 
eingehend ist nicht mehr möglich, weil telnet halt auf einer 
TCP-Verbindung aufsetzt, die der Stack nicht mehr anbieten kann, weil 
alle verfügbaren ausgeschöpft sind.

Also: lerne, wie die verwendeten Protokolle funktionieren, lerne, wie 
der Stack sie umsetzt, und gestalte dann deine Anwendung so, dass sie 
ihn auch in Fehlersituationen korrekt benutzt...

Das Zauberwort heißt: LERNE

Du hast die optimalen Voraussetzungen, weil du den kompletten Quelltext 
des Stacks einsehen kannst und auch die Spezifikation aller verwendeten 
Protokolle ohne Zwangsabgaben an irgendeine Abzocker-Organisation frei 
verfügbar sind.

Solche phänomenal guten Voraussetzungen werden heutzutage leider immer 
seltener...

von Klaus (Gast)


Lesenswert?

>Also: lerne, wie die verwendeten Protokolle funktionieren, lerne, wie
>der Stack sie umsetzt, und gestalte dann deine Anwendung so, dass sie
>ihn auch in Fehlersituationen korrekt benutzt...

Ich habe eigentlich nur die bereits in Ethersex implemtierte Funktion 
für den Volkszaehler genutzt, den Ethersex-Quelltext zu analysieren und 
zu verbessern übersteigt leider meine Kenntnisse bei weitem

komisch, das es 3 Jahre funktioniert hat, es kann ja jetzt alles 
mögliche sein, von irgendwelchen gealterten Elkos im Netzteil bis zu 
o.g. Fehler in Ethersex / Änderungen beim Webhoster

Aber das herauszufinden, ich glaube da tue ich mich einfacher das Ganze 
durch was Neues zu ersetzen?

von Sven K. (svenk)


Lesenswert?

Hallo Klaus,

der Fehler lässt sich doch insofern eingrenzen das Dein netio nicht mehr 
erreicht wird.

garagentor=`echo '!pin get in4' | nc 192.168.178.44 2701 -q 1 
2>/dev/null `
ab.

Ich würde mir mal das Netzteil und die Spannungsversorgung anschauen, 
falls Du hast - natürlich mit Oszilloskop.

Enc hast Du schon getauscht.
Steckernetzteil schon getauscht?
Hast Du das netio selber gelötet? Falls ja alle Lötstellen in Ordnung?

Tippe persönlich aber auf die Spannungsversorgung und die Elkos.

Gruß Sven

von Markus F. (mfro)


Lesenswert?

Klaus schrieb:
> garagentor=`echo '!pin get in4' | nc 192.168.178.44 2701 -q 1
> 2>/dev/null `


ich würde erst mal testweise das 2>/dev/null hier wegnehmen. 
Möglicherweise spuckt netcat ja eine erhellende Fehlermeldung aus, die 
Du so einfach ins Nirwana schickst.

U.u. kann ein zusätzliches "-vv" beim nc-Aufruf noch Infos bringen.

von grundschüler (Gast)


Lesenswert?

Schon länger her, hatte aber ein ähnliches Problem. Es lag dann an der 
Initialisierung des enc. Die enc-init-routine von ulrich radig führte 
dann zu stabilen  Ergebnissen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.