Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Feb 2012 23:17:29 +0100
From:      Polytropon <>
To:        Ouyang Xueyu <>
Cc:        FreeBSD <>
Subject:   Re: MFC 7840W under CUPS
Message-ID:  <>
In-Reply-To: <>
References:  <>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
On Sun, 05 Feb 2012 21:21:59 +0100, Ouyang Xueyu wrote:
> Hello,
> I have Freebsd 8.2 and CUPS installed and try to print on my Brother 
> MFC 7840W printer. The printer is accessible by a static IP address, is 
> configured in CUPS but everytime I only get blank pages when I'm trying 
> to print.
> Does anybody know a solution for this behaviour?

The technical specification of the printer at

indicates that it does understand PCL. Just for testing,
you could try to _not_ use CUPS and send PCL to the printer
directly, either by the system's spooling mechanism (which
seems to be considered "depricated" now as the big desktop
environments and some "stand-alonge" applications consider
CUPS the only printing interface, which they seem to hardcode
into the programs) or by the direct way, using its network
connection (which is a good thing, better than USB in my

Really - if the specifications say the printer can do PCL
and has some kind of PS, why should it be complicated to get
that "excellent" capabilities working with CUPS?

Here is a simple test that you can use:

First print something from an application (web browser,
text processing program, image manipulator etc.), but send
the output to a file. Most print dialogs offer a "print to
file" choice. Save the result to /tmp/ - I'll use
this name for demonstration, you can use any other name.

Then verify what you've printed to be a PostScript file.

	% file /tmp/
	/tmp/ PostScript document text conforming DSC level 3.

You can verify the content to be printed using any PS viewer,
e. g. gv or gs, or whatever comes with your desktop environment.

If it is a valid PS file, you can do two things:

a) Test if the printer's BR-Script3 is PS-compatible:

	% nc 9100 < /tmp/

Let's assume that is the IP of the printer. :-)

Let's also assume that port 9100 is the port where the printer
accepts jobs. Some printers use different ports for their
different "personalities". See the documentation which port
to use. If unsure, leave it blank.

b) Test if the printer does understand PCL.

Same assumptions apply.

	% printf "\033&k2G" | nc 9100
		-sDEVICE=ljet4 -sPAPERSIZE=a4 -r600x600 \
		-sOutputFile=- /tmp/ | nc 9100

You can see that this test specifies a "ljet4" printer driver.
This refers to the HP Laserjet 4 and 4000 families, but it does
produce PCL, so it should be fine.

Report back if this works (i. e. _which_ of them, and if not,
with which unexpected results). If it does work, my suggestion
would be to dump CUPS and use the system's default mechanism
with a "man made" printer filter. It's very easy. Easier than
dealing with the CUPS "blackbox" in my opinion...

Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...

Want to link to this message? Use this URL: <>