Canon printer and TurboPrint

kristian.tenorio kristian.tenorio at
Mon May 25 19:01:52 UTC 2009

Nice, go on using Windows, Jerry.  I will use my FreeBSD Box.
But I'd like to point out that my earlier solution is not that good.
I'm going to fix it here, Jerry and I'm sure this'll be interesting for

Throughout this reply I will give two solutions: an improvement of tpr and

The tpr script has a major drawback: It has low performance and very low
printing quality.
Another drawback is that it'll not work in some (or all, I don't know) GNOME
I improved performance a little in this new version and this one has normal
printing quality.
So here are the steps:

0) Follow the steps 0-7 of my earlier document, if you have still not done
that stuff.
1) The step 8 is the same with the difference that the script is updated. 
Changes are in italic.

P=Canon_PIXMA_iP8500 ; D=/dev/ulpt0
if [ $1 ]; then S=$1 ; else S=- ; fi
gs -q -sDEVICE=pcx24b -dBATCH -dNOPAUSE -r200 \
-sOutputFile=$HOME/tpr.pcx -c 3000000 setvmthreshold -f $S
$F -d$P $HOME/tpr.pcx $HOME/tpr.job ; rm $HOME/tpr.pcx
cat $HOME/tpr.job >$D ; rm $HOME/tpr.job

2) Do step 9 found in the first part of my earlier document and print using
the same steps.

This solution will bring you less problems, no need of commands to print and

0) Follow the steps 0-7 of my earlier document, if you have still haven't.
1) Enable the lpd daemon if it isn't enabled in your system by adding this
line to /etc/rc.conf (as root)
2) Add the following lines to /etc/printcap as root (this is an example of
the Pixma iP8500 of Chandan).

ip8500|canon|lp|usb|pixma|Canon Pixma iP8500 USB Printer:\

The printer will be named ip8500. The other values in the first line are
called alias names.
Notice the lp alias (in bold).  This will set up your printer as the default
Delete that alias if you don't want that printer to be the default.
The lp variable in the next line will point to your printer's device.
The if variable will refer to an input filter that doesn't exist yet.
The sd variable will point to a directory for spooling that we don't have
created yet.

3) Now we will do a simple PostScript input filter.  This one will not
process plain text.
If you want to do a better one refer to the Printing section in the FreeBSD
Do it with your favourite text editor --I recommend using vi though.

/usr/local/bin/gs -q -dBATCH -dNOPAUSE -sDEVICE=pcx24b \
-r600 -sOutputFile=- -c 3000000 setvmthreshold -f - | \
/compat/linux/usr/bin/tpprint -dCanon_PIXMA_iP8500 - - && exit 0 || exit 2

If you want to print using only black ink, use pcxgray instead of pcx24b
If you want to change the resolution change the 600 to whatever you want.
I don't recommend using less than 200.  Notice the place where the driver is
Name the script if_ip8500, save it in your home dir. and make it executable
by typing in your shell.
chmod 755 if_ip8500

4) It is time to copy the input filter to the bin directory.  Enter as root
and type the following command:
cp /home/YOUR_USERNAME/if_ip8500 /usr/local/bin

5) Now we have to do the spooling directory for the Canon P. iP8500.  As
root type the following:

mkdir /var/spool/lpd/ip8500
chown daemon:daemon /var/spool/lpd/ip8500
chmod 770 /var/spool/lpd/ip8500

6) Restart your system and enjoy it.  You simply have to send your job from
your app. through lpr.
Remember, if you get a gray square, it is possibly that you haven't bought
TurboPrint, it's not my problem.

Jerry-107 wrote:
> On Sat, 23 May 2009 09:10:53 -0700 (PDT)
> "kristian.tenorio" <kristian.tenorio at> wrote:
>>Well, you have a Canon iP8500.  I guess I can really help you.
>>I have tried TurboPrint on FreeBSD and it works.  Here is what I did:
>>0) I installed the Fedora linux compat package from my FreeBSD discs
>>1) I enabled the linux compatibility by adding as root the following
>>line to /etc/rc.conf
>>2) I installed bash and symlinked it to /bin by running as root
>>cd /bin ; ln -s `which bash`
>>3) I installed ghostscript, you probably have it installed already
>>4) I mounted as root the linprocfs by running
>>mount -t linprocfs linprocfs /compat/linux/proc
>>5) I downloaded the .tgz Turboprint file, copied it to my home and
>>untarred it using
>>where MYTURBOPRINTFILE is the name of the file you downloaded ending
>>in .tgz 6) I changed to the new folder and ran as root this, following
>>the on-screen instructions
>>brandelf -t 'Linux' setup
>>cd /compat/linux/usr/bin
>>ls t*
>>7) With this last command you see some new programs installed from the
>>Turboprint setup like
>>tpprint, turboprint, etc.  You simply change its brand, as root of
>>course by running on each of them
>>brandelf -t 'Linux' TURBOPRINT-BINARY
>>where TURBOPRINT-BINARY is the name of each executable file you think
>>is Turboprint's.
>>8) Now is time to do the script.  Enter your text editor on your
>>session, copy the following
>>script AS IS and save it as tpr on your home directory. Notice the P=
>>and D= fields.
>>if [ $1 ]; then S=$1 ; else S=- ; fi
>>gs -sDEVICE=pcx24b -dBATCH -dNOPAUSE -dTextAlphaBits=4
>>-dGraphicsAlphaBits=2 \
>>-dMaxBitmap=10000000 -sOutputFile=$HOME/tpr.pcx $S
>>$F -d$P $HOME/tpr.pcx $HOME/tpr.job ; rm $HOME/tpr.pcx
>>cat $HOME/tpr.job >$D ; rm $HOME/tpr.job
>>9) Make it executable and copy it to /usr/local/bin as root, something
>>like cd /home/YOUR_USERNAME
>>chmod 555 tpr
>>cp tpr /usr/local/bin
>>Now, it is installed. When you want to print follow these steps.
>>Remember, you have to do this every time you turn your printer on.
>>1) Turn on your printer
>>2) Run the following command as root
>>chmod 666 /dev/ulpt0
>>This will allow every user in the system print.
>>3) Go to the File menu in your app and select Print as you'd always do
>>4) If it is KDE, click Advanced Options and select (generic) from the
>>menu. If it's not KDE look for printing through a command.  The idea
>>here is to print using a command.
>>5) Look for the command field and type tpr
>>6) Click OK or whatever else in your program and it will print your job
>>You can print also a PDF or PostScript file on your terminal (it all)
>>by running
>>It works on whatever printer.  If you have another printer simply
>>change the P= field in the script.
>>For instance, I have it P=Canon_i250 since I have a Canon i250 USB
>>printer installed at home.
>>If it doesn't work maybe the device is wrong.  If the /dev/ulpt0
>>doesn't work, try /dev/unlpt0 if USB,
>>or /dev/lpt0 for Parallel's.  That is set in the D= field.  /dev/ulpt0
>>should work for USB Printers.
>>Send me an email.  I really want to know whether it does work for you
>>or not.
>>Here it is, kristian.tenorio at
>>Chandan Haldar wrote:
>>> Couldn't fix it with the time I could spend... so still saving
>>> printouts for
>>> Windoz.  :-(  I know, I know, it's a shame...
>>> On 12/8/06, a at <a at> wrote:
>>>> On Thu, Jun 29, 2006 at 08:59:51PM +0530, Chandan Haldar wrote:
>>>> > I'm searching for ways to print on a Canon PIXMA IP8500
>>>> > from FreeBSD 6.0 Release.
>>>> >
>>>> > Has anyone tried to make the linux driver for PIXUS IP 8600
>>>> > from work for the PIXMA IP 8500 on FreeBSD?
>>>> >
>>>> > Has anyone tried the TurboPrint linux driver on FreeBSD?
>>>> > I need it bad enough to even buy this Euro 30 driver if
>>>> > it works on FreeBSD.
>>>> >
>>>> > It's incredibly annoying to have to boot Win just to print
>>>> > :-(.
>>>> >
>>>> > Chandan
>>>> How do you print on your Canon PIXMA?
>>>> I have a Canon PIXMA iP 2000 and the same problem.
>>>> Elisej Babenko
> Seriously, before I spent all that time and trouble, I would just use a
> Windows PC. Then again, that is just my 2¢.
> -- 
> Jerry
> gesbbb at
> A friend of mine won't get a divorce, because he hates
> lawyers more than he hates his wife.

View this message in context:
Sent from the freebsd-questions mailing list archive at

More information about the freebsd-questions mailing list