ubuntuusers.de

Brother HL 3040CN druckt nicht Ubuntu 22

Status: Ungelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1229

Oops... Das liest sich ja fast so, als ob der Drucker ein GDI Gerät ist. Diese Drucker können keine Protokolle wie PCL und PS sondern erwarten, dass der PC dies macht und die proprietären Binärdaten an den Drucker liefert.

Wenn diese meine Vermutung stimmt, kann ich mir allerdings das Listing der "<Active services>" aus dem obigen 3. Ausdruck von lukasus nicht ganz erklären. Es würde aber bedeuten, dass der proprietäre Treiber für diesen von Brother zwingend erforderlich ist. Wenn der verwendete Treiber nicht die korrekten Binärdaten liefert, würde es erklären, dass eine leere Seite ausgegeben wird.

Aus diesem Grund wäre tatsächlich interessant, ob der Windows Treiber ein besseres Ergebnis liefert. Wenn dies der Fall ist, könnte man die Ausgabe des jetzigen 32-bit Treibers im CUPS Workflow mal abfangen und auswerten. Hierzu muss ich mir aber mal den von Brother zu ladenden Treiber mal näher anschauen.

@lukasus: Kannst du mir die URL des von dir geladenen Brother Treibers mal mitteilen?

Ubunux

Avatar von Ubunux

Anmeldungsdatum:
12. Juni 2006

Beiträge: 17272

Stellvertretend für lukasus bin ich mal so frei: https://www.brother.de/support/hl3040cn/downloads

Nachtrag: Gemäß der Spezifikationen ist das ein Host basierter Drucker: https://support.brother.com/g/b/spec.aspx?c=de&lang=de&prod=hl3040cn_all

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1229

Ubunux schrieb:

Vielleicht hilft es, dass ich das eben auch mit einem Brother HL-2035 versucht habe, der korrekt funktioniert. Ich bekomme auch nur ein leeres Blatt "ausgedruckt".

Danke für die Info. Ich habe mich schon gefreut, als auf der Webseite den Source-Code angeboten wurde. Das war aber nichts Wesentliches (nur cupswrapper, ppd und brcupsconfig). Dann habe ich mir das .deb Paket geladen, mit "ar" entpackt und ein wenig in den Binaries geschnüffelt. Wenn ich das richtig interpretiert habe, schreiben die Filter PJL Text. Das wiederum würde mit der Aussage der "<Active services>" konvenieren.

Sorry, wenn ich daher vorschlage noch den folgenden Test einzuschieben, der eine Testseite über PJL Befehle auf dem Drucker ausgeben lässt:

$ # hole eine pjl Datei aus dem Netz
$ wget https://tosiek.pl/wp-content/uploads/2017/01/test-pjl.zip
$ # und zeige den Inhalt an
$ unzip -c test-pjl.zip | od -c
0000000   A   r   c   h   i   v   e   :           t   e   s   t   -   p
0000020   j   l   .   z   i   p  \n           i   n   f   l   a   t   i
0000040   n   g   :       t   e   s   t   .   p   j   l                
0000060                                                  \n 033   %   -
0000100   1   2   3   4   5   X   @   P   J   L  \r  \n   @   P   J   L
0000120       E   X   E   C   U   T   E       M   A   I   N   T   E   N
0000140   A   N   C   E   P   R   I   N   T      \r  \n   @   P   J   L
0000160       E   X   E   C   U   T   E       T   E   S   T   P   R   I
0000200   N   T  \r  \n   @   P   J   L       E   X   E   C   U   T   E
0000220       D   E   M   O   P   A   G   E      \r  \n   @   P   J   L
0000240       E   X   E   C   U   T   E       R   E   S   I   F   O   N
0000260   T      \r  \n   @   P   J   L       E   X   E   C   U   T   E
0000300       P   E   R   M   F   O   N   T      \r  \n   @   P   J   L
0000320       E   X   E   C   U   T   E       P   R   T   C   O   N   F
0000340   I   G      \r  \n 033   %   -   1   2   3   4   5   X  \n
0000357
$ # Wieder root Rechte erhalten und über das lp2 Device an den Drucker schicken. (Zur Not noch ein FF hinterher.)
$ sudo -E -s
[sudo] Passwort für shiro: 
root# unzip -c test-pjl.zip | sed 1,2d >/dev/usb/lp2
root# echo -e "\014" >/dev/usb/lp2
root# exit
$ 

Ich hätte halt gern gewusst, wie die "<Active services>" Ausgabe zu interpretieren ist. Eventuell benötigt der HL3040 zwingend eine Escape-Sequenz um ihn in den richtigen Service-Mode zu setzen.

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1229

Hallo Ubunux,
hallo lukasus

Schade, dass ihr keine Zeit gefunden habt, meinen im vorherigen Post beschriebenen Test durchzuführen. Ich habe daher angenommen, dass der vorgeschlagene Test erfolgreich verlaufen ist und versucht, eine GDI Datei für den HL3040 manuell zu erzeugen.

Um die potentielle Fehlerquelle "CUPS" auszuschließen, habe ich den "lpr" Ansatz näher verfolgt. Unter Nutzung der "lpr" Binaries habe ich die GDI Datei wie folgt erstellt:

$ cd ~/Downloads
$ mkdir hl3040
$ cd hl3040
$ # lade das lpr-Treiberpaket von Brother und entpacke es
$ wget -o /dev/null https://download.brother.com/welcome/dlf005905/hl3040cnlpr-1.1.2-1.i386.deb
$ ar -xv hl3040cnlpr-1.1.2-1.i386.deb 
x - debian-binary
x - control.tar.gz
x - data.tar.gz
$ # entpacke die gz Archive
$ find -name "*.tar.gz" -exec tar xf '{}' \;
$ # ---------------------------------------------------------------------------
$ # Es wird eine Postscript-Datei aus einer manuell erzeugten svg Grafik-Datei erzeugt
$ echo '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="210mm" height="297mm" viewBox="0 0 210 297" version="1.1" xmlns="http://www.w3.org/2000/svg">
<text><tspan x="0" y="100">
Dieser Text wird gedruckt
</tspan></text></svg>' > x.svg
$ convert x.svg x.ps
$ # Definition der Symbole (aufgerufene Programme/Filter)
$ PSCONV="opt/brother/Printers/hl3040cn/lpd/psconvertij2"
$ BRCONV="opt/brother/Printers/hl3040cn/lpd/brhl3040cnfilter"
$ # (Parameter/Konfiguration für o.g. Programme)
$ PAPER_INF="opt/brother/Printers/hl3040cn/inf/paperinfij2"
$ RCFILE="opt/brother/Printers/hl3040cn/inf/brhl3040cnrc"
$ IMAGINGAREA_FILE="opt/brother/Printers/hl3040cn/inf/ImagingArea"
$ # ---------------------------------------------------------------------------
$ # Erzeugen der GDI Datei x.gdi
$ cat x.ps | $PSCONV $PAPER_INF $RCFILE $IMAGINGAREA_FILE | $BRCONV -pi $PAPER_INF -rc $RCFILE >x.gdi
INFO: Open LUT file /opt/brother/Printers/hl3040cn/inf/lut/0600-k_cache08.bin failed!
INFO: The printer is ready to print.
$ # ---------------------------------------------------------------------------
$ # Nun die gdi Datei auf den Drucker kopieren
$ sudo -E -s
[sudo] Passwort für shiro: 
root# cat x.gdi >/dev/usb/lp2
root# exit
$ 

Es sollte nun der in der svg Datei eingetragenen Text "Dieser Text wird gedruckt" auf einer Seite gedruckt werden.

Wenn die Seite gedruckt wird, funktioniert der Drucker auf der Basis der "lpr" Treiber. Wenn über "cups" nichts gedruckt wird, liegt der Fehler bei "cups".

Wie ist der Status bei euren Druckern?

Ubunux

Avatar von Ubunux

Anmeldungsdatum:
12. Juni 2006

Beiträge: 17272

Oh sorry, ich wollte mich nicht weiter beteiligen und stören, weil du dir diese sehr gute Arbeit ja für lukasus machst, ich habe ja kein Problem mit meinem Drucker und wollte nur unterstützend berichten. Natürlich habe ich schon aus Neugierde deinen zweiten Test durchgeführt und es war erfolgreich, mir ist nur aufgefallen, dass 2 Seiten gedruckt wurden und dann noch eine leere Seite, ich verstehe aber zu wenig, was genau du da machst.

Ich möchte hier aber ausdrücklich ein großes Lob aussprechen, es ist toll, was du hier unternimmst um lukasus zu helfen, das ist nicht selbstverständlich und ich hoffe, dass dein Einsatz mit Erfolg gekrönt sein wird. 👍

lukasus

(Themenstarter)

Anmeldungsdatum:
10. März 2024

Beiträge: Zähle...

Hallo shiro und den ganzen Rest, irgendwie habe ich gar keine Meldung bekommen das in diesem Thread neue Posts gemacht wurden, wobei ich die letzte Woche sowieso wirklich kaum Zeit hatte.

So nun der aktuelle Stand der Dinge.

Ich habe heute, wie bei dem letzten Post den ich von dir shiro gelesen habe, eine VM mit Windows installiert. Nach etwas hin und her habe ich auch geschafft die USB Geräte durchzuschleusen und siehe da, auf anhieb funktioniert der Drucker ohne Probleme.

Ein riesen Erfolg 😇

ABER, ich habe, ohne großes Wissen was diese genau machen, Befehle im Terminal ausgeführt, die dazu führten das mein eigentlicher Rootbenutzer, nicht mehr im Sudoers Verzeichnis ist 🤣

der Befehl war entweder

sudo adduser $USER vboxusers

oder

sudo usermod -G vboxusers lukas

(ich tippe auf letzteren)

Nun wollte ich in den Benutzereinstellungen schauen was sich da machen lässt, aber Ubuntu fordert jetzt das Passwort von einem Systemverwalter, das nicht das meinige ist.

Mein einziger Ansatz hier ist es Ubuntu neu zu installieren (was an sich kein riesen Aufwand wäre), aber es gibt sicherlich bessere und klügere Möglichkeiten dafür, bei der ich noch etwas lernen kann.

Entschuldigt bitte diesen Anfängerfehler.

Ich kann mich Ubunux nur anschliessen, das ist wirklich eine klasse Arbeit shiro, und absolut nicht selbstverständlich. Ich tue natürlich sehr gerne alles was dir hilft das Problem zu verstehen.

Ein ganz großes Dankeschön dafür und wenn ich mich irgendwie bei dir erkenntlich zeigen kann, tue ich das gerne soweit es mir möglich ist.

Ganz herzliche Grüße Lukas

Lidux

Anmeldungsdatum:
18. April 2007

Beiträge: 16675

Hallo lukasus,

Du kannst auch die Weboberfläche von CUPS in deinem Browser z.B. Firefox aufrufen .... Wiki Ubuntuusers Cups befragen und dort Einstellungen vornehmen.

Vielleicht hilft es auch mal in Virtual Box ein Ubuntu zu installieren. Den Drucker wie bei Windows durchreichen. Dort testen ohne die Treibermodule von Brother zu nutzen.

Gruss Lidux

von.wert

Anmeldungsdatum:
23. Dezember 2020

Beiträge: 11826

lukasus schrieb:

sudo usermod -G vboxusers lukas

Du hast die Option -a (für append = anhängen oder hier besser hinzufügen) vergessen, siehe

1
usermod --help

und VirtualBox: Repository in Ubuntu hinzufügen!

Sprich Du hast den User lukas der Gruppe vboxusers hinzugefügt, aber aus sämtlichen anderen hinausgeworfen. Wenn Du jetzt keinen weiteren User mit root-Rechten hast, hast Du ein Problem.

Antworten |