hl7x0
http://www.ghostscript.com/
Ghostscript
GPL
OpenPrinting forum for Brother printers
Driver for Brother's proprietary printer language (works also on the PCL/PS models)
2400
600
95
95
65
35
100
RES=%E; gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=hl7x0%A%Z -r$RES -sOutputFile=-%C -f - | perl -e 'my $u = "%U"; my $j = "%T"; my $p = "%F"; my $r = "'$RES'"; my $e = "%G"; my $m = "%H"; my $d = "%I"; my $t = "%J"; my $pcmd = ""; if ($p =~ /^\d\d\d\d$/) {$u =~ s/\%U//; $u ||= "Unknown"; $j =~ s/\%T//; $j ||= "Unknown"; $u = chr(length($u) + 1) . $u . "\x00"; $j = chr(length($j) + 1) . $j . "\x00"; $p = chr(length($p) + 1) . $p . "\x00"; $pcmd = "\@U1$u$j$p"}; my $rcode = "\x00"; if ($r =~ /^150(|x150)$/) {$rcode = "\x0a"} elsif ($r =~ /^300(|x300)$/) {$rcode = "\x05"} elsif ($r =~ /^600(|x600)$/) {$rcode = "\x00"} elsif ($r =~ /^1200(|x1200)$/) {$rcode = "\x0f"}; my $rcmd = "\@L$rcode"; my $ecmd = ($e =~ /^[0123]$/ ? "\@E" . chr($e) : ""); my $mcmd = ($m =~ /^[012345678]$/ ? "\@J\x00" . chr($m) : ""); my $dcmd = ($d =~ /^[12]$/ ? "\@O$d" : ""); my $tcmd = ($t =~ /^[12MOo]$/ ? "\@S$t" : ""); my $did = 0; while (<>) {if (!$did) {s/\@L./$pcmd$rcmd$ecmd$mcmd$dcmd$tcmd/s && $did ++}; print}'
RES=%E; gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=hl7x0%A%Z -r$RES -sOutputFile=-%C -f - | perl -e 'my $u = "%U"; my $j = "%T"; my $p = "%F"; my $r = "'$RES'"; my $e = "%G"; my $m = "%H"; my $d = "%I"; my $t = "%J"; my $pcmd = ""; if ($p =~ /^\d\d\d\d$/) {$u =~ s/\%U//; $u ||= "Unknown"; $j =~ s/\%T//; $j ||= "Unknown"; $u = chr(length($u) + 1) . $u . "\x00"; $j = chr(length($j) + 1) . $j . "\x00"; $p = chr(length($p) + 1) . $p . "\x00"; $pcmd = "\@U1$u$j$p"}; my $rcode = "\x00"; if ($r =~ /^150(|x150)$/) {$rcode = "\x0a"} elsif ($r =~ /^300(|x300)$/) {$rcode = "\x05"} elsif ($r =~ /^600(|x600)$/) {$rcode = "\x00"} elsif ($r =~ /^1200(|x1200)$/) {$rcode = "\x0f"}; my $rcmd = "\@L$rcode"; my $ecmd = ($e =~ /^[0123]$/ ? "\@E" . chr($e) : ""); my $mcmd = ($m =~ /^[012345678]$/ ? "\@J\x00" . chr($m) : ""); my $dcmd = ($d =~ /^[12]$/ ? "\@O$d" : ""); my $tcmd = ($t =~ /^[12MOo]$/ ? "\@S$t" : ""); my $did = 0; while (<>) {if (!$did) {s/\@L./$pcmd$rcmd$ecmd$mcmd$dcmd$tcmd/s && $did ++}; print}'
Fortunately, Brother uses the same protocol for their host-based
printers for many years and an appropriate driver is embedded in
Ghostscript, named "hl7x0". Unfortunately the driver was not
updated for the additional options and resolutions of newer
Brother printers, so that simply using the driver does only give
very basic support for the current models (only 600 dpi, no
Duplex, no tray selection, ...).<p>
Recently <a
href="http://sourceforge.net/projects/hbp-for-brother">the
Windows driver output of the newer models was
investigated</a> and it turned out that for the additional
options only the appropriate commands need to be inserted at the
beginning of the data stream.<p>
On the mentioned site you find a PDF file with documentation about
the options and a filter for inserting them into the output data
stream of Ghostscript. As probably many distributions will not
include this filter, the Foomatic data and the resulting PPD files
here fo all this work without needing the filter. So you only need
the PPD from here and the Ghostscript which comes with your
distribution and you will have access to all resolutions including
HQ1200 (2400x600 dpi), economy mode, media types, duplex, tray
selection, and even password-protected printing (aka "Locked
Print" or "Secured Print").<p>
Note that not all settings are available on all printers,
especially on older models. On some printers you will get a
shifted page if you use a low resolution. Use 600 dpi in such a
case. Please report everything on our Brother forum, so that we
can exclude unsuitable settings from the PPDs.<p>
With the "HQ1200" resolution setting the economy mode and duplex
settings are ignored. You will always get one-sided printouts with
standard toner density.<p>
Try this driver also with PostScript and PCL printers from Brother
(use simply a PPD file for a printer which is listed as supported
by this driver). Do you get better/faster results or more
functionality? Please report on the Brother forum.<p>
If you have a monchrome laser from Brother which is not listed at
all on the OpenPrinting site, start trying with this driver and
report on the Brother forum.<p>
printer/Brother-DCP-8045D
printer/Brother-HL-1020
printer/Brother-HL-1040
Works for 300 or 600dpi; faster than PCL.
printer/Brother-HL-720
printer/Brother-HL-730
printer/Brother-HL-820
printer/Brother-MFC-8300
printer/Brother-MFC-9050
Prints at 600dpi.