T
tecci
Grünschnabel
Hallo.
Ich habe eine USB Netzwerkkarte an einem Linux Router System. (LogiLink mit MosChio MCS 7830).
OS ist Debian 6.
System ist ein MSI Wind PC, den ich mit SSD ausgestattet habe, und als Server laufen lasse. Das Board hat leider nur eine NIC, und keinen PCI/PCIe Slot, so dass ich oben genannte USB NIC als WAN Port verwende.
Leider ist es nun so, dass diese USB NIC einige Probleme hat. Sie hängt sich im Betrieb öfters mal auf.
Selbst eine Neukonfiguration per ifconfig bringt nichts. Es kommen keine brauchbaren Daten mehr raus. Die Activity LED am Switch blinkt zwar, aber es kommt eben nichts mehr durch.
Abhilfe kann nur geschaffen werden, indem ich entweder neu starte, oder die USB NIC vom USB abstecke und wieder anstecke, und dann per IFCONFIG neu konfiguriere.
Eine Autoconfig per etc/network/interfaces ist ebenfalls nicht möglich. Da hängt es sich sofort auf. Bei Handkonfiguration im laufenden Betrieb klappt es eine Zeit, bis es irgendwann zu dem Fehler kommt.
Einen Software-Reset bekomme ich derzeit nur wie folgt hin:
Aber das resettet mir dann gleich den USB komplett.
Es fliegt dann auch der USB Stick mit /etc und /home aus dem System, und auch der UMTS Internetstick (der als Fallback Internetverbindung da ist)
Tastatur, SD-Cardreader etc "fliegt auch kurz raus"
/etc und /home habe ich mittlerweile schon so eingerichtet, dass es nur noch mit dem USB Stick synchronisiert wird, um das Problem zu entschärfen.
Aber gibt es denn eine (sinnvolle) Möglichkeit, gezielt einzelne USB Geräte auf Shellebene zu resetten?
In einem Beispiel, was ich sah, wurde es mit C relaisiert, das ist aber schon fast zu viel des guten.
Ich will es eigentlich nur in mein Network Watchdog Bash Script einbauen (das macht z.B. automatisch Internet Reconnects), welches alle Minute per Cron aufgerufen wird.
Viele Grüße
Edit: Hier ist übrigens das C-Beispiel, habs nochmal gefunden.
Ob es funktioniert, habe ich nicht probiert.
Ist die USB.h eigentlich eine Standardbibliothek?
Wenn es keine Möglichkeit gibt, einen Reset einzelner USB Ports/Geräte über ein BashScript zu realisieren, werde ich wohl oder übel C nehmen müssen.
P.P.S.
Ich habe irgendwo gelesen, man könnte die Spannungsversurgung einzelner USB Ports per Software abschalten und einschalten.
Das kurze Unterbrechen der Spannungsversorgung wäre in meinem Fall auch Zielführend, wäre ja fast wie aus und wiedereinstecken.
Grüße
Ich habe eine USB Netzwerkkarte an einem Linux Router System. (LogiLink mit MosChio MCS 7830).
OS ist Debian 6.
System ist ein MSI Wind PC, den ich mit SSD ausgestattet habe, und als Server laufen lasse. Das Board hat leider nur eine NIC, und keinen PCI/PCIe Slot, so dass ich oben genannte USB NIC als WAN Port verwende.
Leider ist es nun so, dass diese USB NIC einige Probleme hat. Sie hängt sich im Betrieb öfters mal auf.
Selbst eine Neukonfiguration per ifconfig bringt nichts. Es kommen keine brauchbaren Daten mehr raus. Die Activity LED am Switch blinkt zwar, aber es kommt eben nichts mehr durch.
Abhilfe kann nur geschaffen werden, indem ich entweder neu starte, oder die USB NIC vom USB abstecke und wieder anstecke, und dann per IFCONFIG neu konfiguriere.
Eine Autoconfig per etc/network/interfaces ist ebenfalls nicht möglich. Da hängt es sich sofort auf. Bei Handkonfiguration im laufenden Betrieb klappt es eine Zeit, bis es irgendwann zu dem Fehler kommt.
Einen Software-Reset bekomme ich derzeit nur wie folgt hin:
Code:
Modprobe -vr ehci_hcd
modprobe -v ehci_hcd
Aber das resettet mir dann gleich den USB komplett.
Es fliegt dann auch der USB Stick mit /etc und /home aus dem System, und auch der UMTS Internetstick (der als Fallback Internetverbindung da ist)
Tastatur, SD-Cardreader etc "fliegt auch kurz raus"
/etc und /home habe ich mittlerweile schon so eingerichtet, dass es nur noch mit dem USB Stick synchronisiert wird, um das Problem zu entschärfen.
Aber gibt es denn eine (sinnvolle) Möglichkeit, gezielt einzelne USB Geräte auf Shellebene zu resetten?
In einem Beispiel, was ich sah, wurde es mit C relaisiert, das ist aber schon fast zu viel des guten.
Ich will es eigentlich nur in mein Network Watchdog Bash Script einbauen (das macht z.B. automatisch Internet Reconnects), welches alle Minute per Cron aufgerufen wird.
Viele Grüße
Edit: Hier ist übrigens das C-Beispiel, habs nochmal gefunden.
Ob es funktioniert, habe ich nicht probiert.
Ist die USB.h eigentlich eine Standardbibliothek?
Wenn es keine Möglichkeit gibt, einen Reset einzelner USB Ports/Geräte über ein BashScript zu realisieren, werde ich wohl oder übel C nehmen müssen.
Code:
#include <stdio.h>
#include <usb.h>
int main(void)
{
struct usb_bus *busses;
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
struct usb_bus *bus;
int c, i, a;
/* ... */
for (bus = busses; bus; bus = bus->next) {
struct usb_device *dev;
int val;
usb_dev_handle *junk;
for (dev = bus->devices; dev; dev = dev->next) {
char buf[1024];
junk = usb_open ( dev );
usb_get_string_simple(junk,2,buf,1023);
if ( junk == NULL ){
printf("Can't open %p (%s)\n", dev, buf );
} else {
val = usb_reset(junk);
printf( "reset %p %d (%s)\n", dev, val, buf );
}
usb_close(junk);
}
}
}
P.P.S.
Ich habe irgendwo gelesen, man könnte die Spannungsversurgung einzelner USB Ports per Software abschalten und einschalten.
Das kurze Unterbrechen der Spannungsversorgung wäre in meinem Fall auch Zielführend, wäre ja fast wie aus und wiedereinstecken.
Grüße
Zuletzt bearbeitet: