Mehrere Drucker, printserv-Prozesse und semaphore-Problem

Ich war letzte Woche beruflich unterwegs. Dabei habe ich unter anderem eine Lösung für mehrere USB Drucker an einem Linux System eingerichtet, allerdings auf PC Hardware mit hoffentlich funktionierendem USB. Die läuft bisher problemlos.

Für Dein Problem mit den USB Druckern gibt es mehrere Möglichkeiten. Fehler in der USB Implementierung von AVM, Fehler im relativ alten Kernel, den AVM verwendet, oder irgend etwas in den AVM printserv Prozessen bringt das System durcheinander.

Wenn sich ein Prozess nicht mehr killen lässt, hat das meistens den Grund, dass er irgendwo im Kernel hängt, was nicht passieren sollte. Eine andere Möglichkeit ist, dass der Prozess bereits beendet ist, das sieht man am Status Z.

Was heißt dass /dev/sda1 nicht da ist? Fehlt die Partition, oder fehlt die Gerätedatei? Die Partition existiert laut Kernel Log, und die Gerätedatei sollte auch vorhanden sein.
 
Dabei habe ich unter anderem eine Lösung für mehrere USB Drucker an einem Linux System eingerichtet, allerdings auf PC Hardware mit hoffentlich funktionierendem USB. Die läuft bisher problemlos.
Ich verstehe auch nicht, warum immer nur der Anschluss mit dem Parallel-Adapter abstürzt. Ich dachte ja schon, es hinge evtl. mit dem Adapter zusammen, aber am PC läuft er tagelang anstandslos im Dauerbetrieb.

Ich werde mal schauen, ob ich mit einem Hardware USB-Printserver mehr Erfolg habe. Bei aller Liebe zur Fehlersuche. Inzwischen glaube ich, dass es ein sinnloses Unterfangen bei der Fritzbox ist.

Wenn sich ein Prozess nicht mehr killen lässt, hat das meistens den Grund, dass er irgendwo im Kernel hängt, was nicht passieren sollte. Eine andere Möglichkeit ist, dass der Prozess bereits beendet ist, das sieht man am Status Z.
Auf den Status hatte ich nicht geachtet, aber es kann durchaus sein, dass da Z stand. Mir waren in der Status-Spalte ungewöhnliche Buchstaben aufgefallen, ohne aber zu wissen, was sie bedeuten. Aber wenn ein Prozess beendet ist, warum taucht er dann noch unter ps auf?

Was heißt dass /dev/sda1 nicht da ist? Fehlt die Partition, oder fehlt die Gerätedatei?
Die Gerätedatei /dev/sda1 ist da, aber das "device" offenbar nicht, das sich hinter der Gerätedatei verbirgt. Was das Linux der Fritzbox auch immer darunter versteht. Wie ist denn diese Meldung zu interpretieren?:

Code:
mount: mounting /dev/sda1 on /var/media/ftp/uStor01 failed: No such device
 
Zuletzt bearbeitet:
Ich verstehe auch nicht, warum immer nur der Anschluss mit dem Parallel-Adapter abstürzt. Ich dachte ja schon, es hinge evtl. mit dem Adapter zusammen, aber am PC läuft er tagelang anstandslos im Dauerbetrieb.
Wie schon geschrieben ist die USB Implementierung von AVM nicht immer optimal. Eine 7170 zum Beispiel erkennt ein Low Speed Gerät überhaupt nicht.
Ich werde mal schauen, ob ich mit einem Hardware USB-Printserver mehr Erfolg habe. Bei aller Liebe zur Fehlersuche. Inzwischen glaube ich, dass es ein sinnloses Unterfangen bei der Fritzbox ist.
Ein "Hardware" USB-Printserver ist im Prinzip genau so ein Embedded Gerät wie die Fritz Box auch. Hoffentlich aber mit mehr Augenmerk auf die USB Implementierung und die Drucker Ansteuerung.

Aber wenn ein Prozess beendet ist, warum taucht er dann noch unter ps auf?
Dann achte beim nächsten Mal auf den Status. Ein beendeter Prozess hat Status Z, er bleibt so lange in der Liste, bis der Parent Prozess den Exit Status abgefragt hat. Das sollte normalerweise sehr zeitnah sein, wenn es nicht ein Programmfehler ist, kann es ein Hinweis auf ein anderweitiges Problem sein.

Die Gerätedatei /dev/sda1 ist da, aber das "device" offenbar nicht, das sich hinter der Gerätedatei verbirgt. Was das Linux der Fritzbox auch immer darunter versteht. Wie ist denn diese Meldung zu interpretieren?:
Mit "cat /proc/partitions" kannst Du anzeigen lassen, welche Partitionen der Kernel im Moment kennt.

Wenn Du es reproduzieren kannst, lasse das genaue Mount Kommando mit strace laufen, dann sollte sich zeigen, welcher Aufruf diesen Fehler zurück gibt. Mögliche Ursachen sind, dass /dev/sda1 tatsächlich nicht verfügbar ist, oder dass das vfat Modul noch nicht geladen ist, aber vermutlich auch viele andere.
 
Ein "Hardware" USB-Printserver ist im Prinzip genau so ein Embedded Gerät wie die Fritz Box auch.
Aber das Teil läuft mit Sicherheit nicht unter Linux! Da wird schlichtweg ein Microcontroller drin sein, der in Assembler oder C programmiert ist und die USB- und Centronics-Seite bedient. Also deutlich mehr ein Stück Hardware, als ein Linux-System.


Mit "cat /proc/partitions" kannst Du anzeigen lassen, welche Partitionen der Kernel im Moment kennt.
Werde ich mal machen...

Was aber ziemlich lustig ist: Ich habe jetzt mal nicht das Gerät abgestöpselt, das immer abgestürzt ist (USB/Centronics-Adapter), sondern den BJC-3000, der stets problemlos lief. Und siehe da: Seitdem nur noch ein USB-Drucker (also der USB/Centronics-Adapter) an der Fritzbox hängt, ist er nicht mehr abgestürzt! Also das ist für mich ein mehr als eindeutiges Zeichen, dass der Kernel schlichtweg nicht in der Lage ist, zwei Drucker gleichzeitig zuverlässig zu bedienen!
 
Aber das Teil läuft mit Sicherheit nicht unter Linux! Da wird schlichtweg ein Microcontroller drin sein, der in Assembler oder C programmiert ist und die USB- und Centronics-Seite bedient. Also deutlich mehr ein Stück Hardware, als ein Linux-System.
Bei USB-Printserver denke ich an ein Teil, das einen Netzwerk Anschluß hat, auf dem TCP/IP läuft, DHCP, LPD, Port 9100, ein Web-Server für Konfiguration und Status Abfrage, vielleicht noch SNMP oder Apple Talk. Das auf einem Microcontroller und in Assembler zu machen, ist mühsam. Mit Linux dagegen hat man die notwendigen Funktionen schnell beisammen. Solange man darauf achtet, dass eine zuverlässige USB Implementierung dabei ist, sollte es keine Probleme damit geben.

Was aber ziemlich lustig ist: Ich habe jetzt mal nicht das Gerät abgestöpselt, das immer abgestürzt ist (USB/Centronics-Adapter), sondern den BJC-3000, der stets problemlos lief. Und siehe da: Seitdem nur noch ein USB-Drucker (also der USB/Centronics-Adapter) an der Fritzbox hängt, ist er nicht mehr abgestürzt! Also das ist für mich ein mehr als eindeutiges Zeichen, dass der Kernel schlichtweg nicht in der Lage ist, zwei Drucker gleichzeitig zuverlässig zu bedienen!
Der Kernel ist mit Sicherheit in der Lage, zwei Drucker gleichzeitig anzusteuern. Ich habe ein System im Einsatz, wo fünf USB Drucker dran hängen, das funktioniert über usblp ohne Probleme, einschließlich gleichzeitiger Ausgabe an mehrere Drucker.
 
Das auf einem Microcontroller und in Assembler zu machen, ist mühsam.
In Assembler vielleicht, aber in C völlig unproblematisch. Und für viele Mikrocontroller-Systeme gibt es C (z.B. AVR-GCC für die Atmel AVR-Reihe). Da gibt es fertige Bibliotheken für Protokolle und auch Webserver. Ich habe damit auch schonmal in einigen Tagen einen USB<->Seriell Adapter zusammengebaut, der prima funktioniert. Das war nötig, weil ich einen brauchte, der ohne Administratorrechte und Installation auf jedem Windows-System läuft. Leider gibts sowas nicht zu kaufen. Die Printserver für 18 Euro bieten ein Webinterface zur Konfiguration und vermutlich nur TCP/IP Support auf einem beliebig einstellbaren Port. Mehr ist i.d.R. auch nicht nötig. Und das ist mit einem Mikrocontroller in einigen Tagen für wenige Euro entwickelt. Andere Lösungen (Linux) wären teurer als 18 Euro. Die lägen so im Bereich eines Raspberry.

Der Kernel ist mit Sicherheit in der Lage, zwei Drucker gleichzeitig anzusteuern. Ich habe ein System im Einsatz, wo fünf USB Drucker dran hängen, das funktioniert über usblp ohne Probleme, einschließlich gleichzeitiger Ausgabe an mehrere Drucker.
Das ist dann aber keine Fritzbox! Dass ein Linux-Kernel natürlich dazu in der Lage ist, steht außer Frage. Aber eben nicht der Kernel der Fritzbox. :-(

Mein USB-Parallel-Adapter läuft nun seit fast einer Woche sauber im Dauerbetrieb. Aber eben nur als einziger Drucker an der Box. Jetzt habe ich mal spaßeshalber den BJC-3000 dazu gesteckt und bin gespannt, wann der Adapter nun abstürzt. Damit wäre dann nämlich endgültig bewiesen, dass die Fritzbox in dieser Form keine zwei Drucker gleichzeitig bedienen kann. Zumindest nicht dauerhaft und zuverlässig.
 
Zuletzt bearbeitet:
Eine korrekte TCP/IP Implementierung ist nicht so einfach. Ich hatte mal das Vergnügen mit "Hardware" Printserver (damals noch Parallel Port), die im Zusammenspiel mit einem modernen TCP/IP gelegentlich Druckdaten zwar angenommen und bestätigt haben, aber nicht an den Drucker weitergeleitet haben. Das ging erst weg, nachdem ich auf der Gegenseite alle modernen TCP/IP Features ausgeschaltet hatte. Ich gehe davon aus, dass der Hardware Printserver auch DHCP, LPD IPP und Port 9100, außerdem vielleicht noch Appletalk oder was auch immer. Auf einem kleinen TL-Link Router für ca. 20 Euro läuft auch Linux, und er hat LAN, WLAN und USB Anschlüsse.

Der Kernel der Fritz Box ist auch ein Linux Kernel. Er ist nur etwas älter, was an AVM liegt, und die Hardware ist etwas anders. Zumindest in der 7170 war die USB Implementierung ein Xilinx FPGA.
 
Eine korrekte TCP/IP Implementierung ist nicht so einfach.
Ich würde auch nicht anfangen, das von Hand selbst zu programmieren. ;-) Es ist sicher wahr, dass es viele Möglichkeiten des Zusammenspiels gibt, die u.U. auch mal nicht funktionieren. Weshalb ich mich bei Implementationen auch immer auf fertige Module verlassen habe, was bisher tadellos funktioniert hat.

Auf einem kleinen TL-Link Router für ca. 20 Euro läuft auch Linux, und er hat LAN, WLAN und USB Anschlüsse.
Stimmt auch wieder. Wobei ich mich immer frage, wie die solche Preise zustande bringen, ohne dass die Mitarbeiter täglich aus dem Fenster springen...
 
Es gibt einen Grund, warum AVM, TL-Link und die meisten anderen Linux verwenden, und der ist, dass es nicht teurer ist, sondern man kann auf ein fertiges System zurück greifen. Die fertigen TCP/IP Module kosten vermutlich Geld, und sind sicher bei weitem nicht so gut getestet wie die von Linux.
 
Ja, aber man braucht in vielen Fällen auch deutlich mehr Hardware, als es rein technisch für die jeweilige Anwendung überhaupt nötig wäre. Ein µC bedeutet weniger Hardware, erheblich weniger Software und meist auch weniger Fehleranfälligkeit. Und ein entscheidender Vorteil ist der sehr geringe Stromverbrauch. Für batteriebetriebene Geräte, die nicht regelmäßig geladen werden können, ist eine Linux-Lösung daher inakzeptabel. Auch im Automotive-Bereich ist der µC daher weit verbreitet, weil er nur einige Milliampere benötigt. Und die Module sind auch alle Freeware oder unter GPL und mehr als gut getestet. Daher ist das für viele Bereiche die beste Lösung. Und es gibt ebenfalls eine große Community.
 
Zuletzt bearbeitet:
Das ist nun echt spooky: Ob der Drucker am USB/Parallel-Adapter nach einiger Zeit abstürzt, hängt damit zusammen, an welchen USB-Ports vom Hub die Drucker angestöpselt sind. Folgende (Un)logik habe ich bisher rausbekommen können (Drucker A: USB/Parallel-Adapter, Drucker B: BJC-3000):

Code:
[B]Drucker A                 Drucker B              funktioniert[/B]
USB0                      -                      ja
USB0                      USB1                   ja
USB0                      USB2                   nein
USB0                      USB3                   nein
USB1                      USB2                   ja
USB2                      -                      ja
USB2                      USB3                   nein

Ich werde die Liste in den nächsten Tagen mal vervollständigen. Da soll einer schlau draus werden!
 
Zuletzt bearbeitet:
Das hatte ich auch schon gedacht, aber dann ist es eher ein Fehler im Zusammenwirken zwischen Hub und Fritzbox. Denn der Hub funktionierte sonst an anderen Geräten immer einwandfrei. Egal, ich werde mal einen anderen Hub testen...
 
Da die Kombination USB1/USB2 wider erwarten funktioniert hatte, habe ich die Drucker nun nochmal, wie ganz zu Anfang, testhalber in USB2/USB3 gesteckt. Das völlig beknackte ist, dass es nun seit 4 Tagen ohne Absturz funktioniert. Obwohl seitdem an der Hardware nichts verändert wurde. Auch die Fritzbox wurde nicht neu gestartet. Es ist also mehr als müßig, da eine Ursache finden zu wollen. Es ist reiner Zufall, ob es funktioniert oder nicht und hat wenig Nutzen, sich weiter damit zu beschäftigen. Unter dem Strich bleibt die Erkenntnis, dass das Printer-Skript nur mit größter Vorsicht anzuwenden ist. Einerseits wegen der unklaren Reihenfolge bei der Zuordnung der Druckerports (es sei denn, man nimmt Ralfs Lösung - nochmal Danke dafür!) und auch wegen der möglichen Absturzproblematik, die nicht geklärt werden konnte.
 
Ich wollte mich nochmal zu der Sache melden, weil ich jetzt den USB-Hub gewechselt habe. Das Problem war ja, dass die Fritzbox den über einen USB<->Parallel Adapter angeschlossenen Drucker regelmäßig "vergessen" hat, so dass man das USB-Kabel einmal vom Hub abziehen und wieder anstecken musste, damit der Druckauftrag gedruckt wurde. Mit dem neuen USB Hub (von Logilink) tritt genau das selbe Problem auf, wie mit dem alten "No-Name"-Hub. Es ist ein Ärgernis ohne Ende...

Es ist mit dem neuen Hub sogar noch ganz erheblich schlimmer: Der Fehler tritt grundsätzlich schon nach 1-2 Stunden auf. Konnte man beim "alten" Hub durch Abziehen des Druckerkabels und neu Einstecken den Druckauftrag wenigstens noch manuell starten, so geht dies beim neuen Hub nicht mehr. Hier kann man den Drucker nur reaktivieren, indem man beide Drucker ausstöpselt und dann nur noch den Drucker wieder einstöpselt, auf dem man auch drucken will. Beide Drucker parallel zu betreiben geht nach einem solchen Absturz grundsätzlich nicht mehr bis zum Neustart der Box. Ehrlichgesagt ist das wirklich ein megamäßiger Murks! Diese Multiprinter-Geschichte mag vielleicht funktionieren - aber nur mit ganz bestimmten Hubs. Mit den meisten Standard-Hubs tut sie das definitiv nicht. Deshalb sollten diejenigen, die es zuverlässig zum Laufen gekriegt haben, vielleicht mal sagen, welchen Hub sie dafür benutzt haben.
 
Zuletzt bearbeitet:

Statistik des Forums

Themen
246,308
Beiträge
2,249,809
Mitglieder
373,915
Neuestes Mitglied
sunburstc
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.