Hallo Jakob!
Am 2016-11-14 um 17:34 schrieb Jakob Riepler:
Hallo Erich!
Danke für Deine flotte Antwort!
Prinzipiell habe ich gute Erfahrung damit gemacht, einfach
regelmäßigen keep-alive traffic (zB einen http request) zu produzieren
(hatte mal ein ähnliches Problem mit einem 3G Stick, der so was
HiLink-ähnliches hatte).
ICMP-Keepalives macht der TL-WR1043ND sowieso - die sollten auch über
das Gateway laufen. Mein Reset-Script startet beispielsweise erst dann,
wenn diese Pings eine Weile lang unbeantwortet bleiben.
Eine weitere Methode wäre, einen non-HiLink Firmware zu flashen (ich
weiß aber gerade leider nicht, ob es eine für deinen Stick gibt.
Müsste man mal nachschauen).
Das ist gar nicht erforderlich. Der Stick läuft auf Android. Die
AT-Befehle würden dort von einem AT-Emulator-Dienst interpretiert. Durch
Aufruf einer speziellen URL mittels curl lässt sich der Stick per Skript
in den Nur-Modem-Mode versetzen. Er verharrt auch darin, sofern er nicht
mittels AT-Befehl wieder in den Ethernet-Mode versetzt wird.
Aber manchmal ist er einfach nur "weg". (Denn das reset-script würde ihn
in den Modem-Mode versetzen und eine Reihe von AT-Befehlen absetzen, die
in quasi in den Werkszustand (Ethernet) versetzen; Würde das Skript bei
seinem Start ein Modem vorfinden, würde es davon ausgehen dasselbe tun.
Der Status in dem der Stick sich also befindet, wenn das Script ihn
nicht retten kann, muss ein anderer sein. Dass ein Powercycle genügt,
spricht für einen "indetermined lockup state".
Wenn das alles nichts bringt, bieten viele USB Hosts (zumindest in PCs
und Laptops. Ich weiß nicht, wie fortgeschritten selbige in Routern
sind... Hab das bei meinem Laptop mal mit einem kleinen C Programm
geschafft. "ganged usb power" sind glaub ich die richtigen Schlagworte
dazu. Wenn ich wieder zu Hause bin kann ich dir mal einen Link
schicken, wenn du willst und ich das wieder finde :P) die Möglichkeit,
den USB Port zu deaktivieren.
Per Software ging das mittels echo 0 oder echo 1 nach
/sys/bus/usb/devices/[xyz]/authorized, um zumindest eine teilweise
Reinitialisierung der Treiber zu bewirken. Bis Kernel 3.6 konnte man
auch den Power Level einzelner Port setzen. Neuere Kernel lassen das
(direkt) offenbar nicht mehr zu. Man meines Wissens kann nur ein
Inactivity Timeout setzen, aber nur der Strom wird nur abgeschaltet,
wenn das Endgerät das auch zulässt.
Leider habe ich bis jetzt keine andere Methode gefunden. Links sind
willkommen.
Wenn der Router das nicht kann (was vermutlich der Fall ist), ist der
sinnvollste Weg wahrscheinlich ein Relay, mit dem man die Stromzufuhr
unterbricht (am besten einfach mit einem GPIO Pin vom Router
ansteuern) oder ein USB Hub, der Power switching beherrscht.
Naja, die Idee wäre weniger ein GPIO gewesen, denn dafür muss ich den
Router öffnen, als vielmehr ein USB-Zwischenstecker nach Art der
USB-Relays für Homeautomation.
Wie gesagt, bei 7-port Hubs werden Hubs kaskadiert. 4 Port - 1 Port + 4
Port.
Nehme ich einen 4-Port-Hub, schließe ein USB-Relay an einem der Ports an
und den zweiten Hub an einen weiteren Port, unterbreche jedoch dessen
Power-Lines über das Relay am ersten Port, hätte ich in etwa das, wonach
ich als Komplettlösung suche. Für den Fall, dass ich eine externe
Stromversorgung benötigte, müsste ein zweites, paralleles Relay auch
dessen Stromversorgung unterbrechen.
Nur, wundert es mich, dass es sowas nicht schon gibt. USB-Hubs mit
Kippschaltern pro Port gibt es ja auch... (Vielleicht doch ein
Knopfdruckroboter? ;-).
LG Jakob
LG
Erich
Am 14.11.2016 5:17 nachm. schrieb "Erich N. Pekarek" <[email protected]
<mailto:[email protected]>>:
Hallo Liste!
Ich habe bei einer "mobilen Anwendung", die vielleicht auch einige
von Euch (etwa im Zusammenhang mit einem Funkfeuer-Tunnel)
interessieren könnte, ein Problem und suche dafür eine passende
Lösung.
Komponenten:
TP-Link TL-WR1043NDv1 (Chaos Calmer 15.05.1 Eigenkompilat mittels
Imagebuilder)
ZTE MF831 LTE-Stick (Hofer-Version)
Yesss-Simkarte mit LTE-Paket
versuchsweise: USB HUB extern gespeist
Anordnung:
Der ZTE-Sick ist mit der Yesss-Sim-Karte bestückt und arbeitet
werksseitig in einem HiLink-ähnlichen Ethernet Modus (19d2:1405).
Am TL-WR1043ND scheint er als emuliertes Ethernet-Interface "usb0"
mit der IP 192.168.0.1/24 <http://192.168.0.1/24> aufscheint. Die
Firmware des Sticks ist stark beschnitten, daher kann man nur das
Allernotwendigste einstellen. Der TL-WR1043ND bezieht seine IP,
Gateway und DNS-Server mittels DHCP und nattet dieses
NAT-Interface, das im A1-Netz (Yesss) ebenfalls genattet wird.
(Grundsätzlich funktioniert das unter diesen Rahmenbedingungen
soweit gut.)
Der TL-WR1043ND stellt über OpenVPN einen Tunnel zu einem Server
mit statischer IPv4-Adresse her. Alternativ wird Miredo genützt,
um über das Teredo-Protokoll (UDP) IPv6-Konnektivität zu erlangen.
Problem:
Der ZTE-Stick scheint fallweise abzustürzen. Bei näherer
Betrachtung steht dies anscheinend im Zusammenhang mit
"Paket(de-)aktivierungen" oder eventuell sonstiger SIM-Aktivität.
Steckt man den Stick ab und steckt ihn wieder an, ist der Router
mit darauf laufendem Watchdog-Cronscript binnen weniger
Augenblicke wieder online.
Lösungsansatz:
Der LTE-Stick ZTE MF831 wird grundsätzlich über sein Web-Interface
angesteuert. Über eine im Internet recherchierbare URL kann man
den Stick in einen Modem-Modus (19d2:0016) versetzen und mittels
usb-serial-Modul als /dev/ttyUSB2 über AT-Befehle ansprechen.
Darüber ließe er sich auch zurücksetzen (zumindest der Mobilteil
mit AT+CFUN=1,1); anschließend kann man ihn mittels AT+ZCDRUN
wieder in den Ethernet-Mode versetzen. Dazu gibt es Anleitungen im
Netz, die ich befolgt habe. Das funktioniert eine Weile recht gut,
aber manchmal hängt sich der Stick eben komplett auf, ohne, dass
ich das (aus der Ferne) nachvollziehen kann.
(Der Stick läuft auf Android und es gibt auch eine Möglichkeit adb
mit root-shell über eine weitere URL zu aktivieren, aber das ist
die von mir angestrebte Lösung. Auf diese Weise könnte man einen
zum auf dem Router hinterlegten ssh-private-key ssh-public-key
aufspielen und mittels ssh -lroot 192.168.0.1 'reboot' vorgehen.
Das will ich so nicht und es ist fraglich, ob man den Stick so
überhaupt noch erreicht, wenn er abzustürzen gedenkt.)
Fragen:
Hat jemand von Euch Erfahrung auf dem Gebiet? Welche Art
Software-Reset könnte man noch versuchen und wie führt man den aus?
Kann man in neueren Linux-Kerneln die Stromzufuhr zu einem
bestimmten USB-Port per Software steuern? (Der Trick mit
/sys/bus/usb/devices/usb1/authorized löst das Problem nicht.) Wenn
ja, wie?
Kennt jemand von Euch eine Art USB-Relay, mit dem man ein über
Software steuerbares Äquivalent zum Anstecken/Abstecken
durchführen kann (nein, kein Roboterarm, ;-)? Ich denke da an eine
Anordnung aus USB-Hub mit integriertem Device (ansprechbar etwa
über AT+Commands o.ä.) die ein Relay steuert, hinter dem eine
weiterer kaskadierter,integrierter USB-Hub liegt. (Also nach Art
eines 7-Port-Hubs nur mit Relay auf den Powerlines dazwischen).
Auf Amazon und Ebay finde ich nichts, was meiner Vorstellung
entspricht, dafür aber zahlreiche Einzelrelays.
Bitte um sachdienliche Hinweise!
Danke!
LG
Erich
--
Discuss mailing list
[email protected] <mailto:[email protected]>
https://lists.funkfeuer.at/mailman/listinfo/discuss
<https://lists.funkfeuer.at/mailman/listinfo/discuss>
--
Discuss mailing list
[email protected]
https://lists.funkfeuer.at/mailman/listinfo/discuss