Since my previous ip1700 died after 6 months (!) with a mechanical problem, I got it replaced with an ip1800. And fortunately canon is distributing a full featured CUPS driver for it, and even monitoring tools - alike the drivers on windows (thanks to them!).
Here is how I installed the drivers and the monitoring tools on debian/sid. Please note that this method will apply to all the printers supported by the 2.70 version of their driver, namely: ip1800 series, ip2500 series, ip3300, ip4300, ip90, mp160, mp510 and mp600 (and more?). Licensing issue, I guessed, prevent me to post the regenerated packages and put them in a private repository.
Go to the australian canon web site, with one of the printers mentioned, for example
http://www.canon.com.au/products/printers/colour_bj_printers/ip1800_support.aspx. Click on "Driver downloads". Click on the button near "iP1800 series Printer Driver Ver. 2.70 (Linux) 2007-03". A new page is shown. Go to its bottom and download the file "cnijfilter-common-2.70-1.i386.rpm".
We could have used alien right now but few things will not be ok:
- it installs in /usr/local and CUPS does not like it (and I did not dare to play with links by hand)
- rebuild with latest autoconf will not work, since autoconf
again broke things after adding the --datarootdir option (well, for me, at least).
- Not necessary, but I removed an extra backslash
You install at least the following packages: rpm, libgtk1.2-dev, libxml-dev. Others are perhaps needed, I let you correct this.
You install the source rpm:
% rpm -ivh cnijfilter-common-2.70-1.src.rpm
1:cnijfilter-common warning: user admin does not exist - using root
########################################### [100%]
warning: user admin does not exist - using root
You apply the following patch
cnijfilter-common.spec.patch that will
- change prefix from /usr to /usr/local
- add --datadir option to autoconf stuff
- fix
hardcoded references to /usr/local
- remove an internal unnecessary backslash
i.e.
% cd /usr/src/rpm/SPECS
% cat cnijfilter-common.spec.patch | patch -p0 cnijfilter-common.spec
You rebuild the packages:
% rpmbuild -ba /usr/src/rpm/SPECS/cnijfilter-common.spec
Be patient. After rpmbuild, you should see something like:
Wrote: /usr/src/rpm/SRPMS/cnijfilter-common-2.70-1.src.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-common-2.70-1.i386.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-mp160-2.70-1.i386.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-ip3300-2.70-1.i386.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-mp510-2.70-1.i386.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-ip4300-2.70-1.i386.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-mp600-2.70-1.i386.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-ip2500series-2.70-1.i386.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-ip1800series-2.70-1.i386.rpm
Wrote: /usr/src/rpm/RPMS/i386/cnijfilter-ip90-2.70-1.i386.rpm
This mean the build was ok. You do alien and installation, on the common package and the package for your printer, for example with my ip1800 printer:
% cd /usr/src/rpm/RPMS/i386/
% alien --to-deb --keep-version --scripts cnijfilter-common-2.70-1.i386.rpm
cnijfilter-common_2.70-1_i386.deb generated
% alien --to-deb --keep-version --scripts cnijfilter-ip1800series-2.70-1.i386.rpm
cnijfilter-ip1800series_2.70-1_i386.deb generated
% invoke-rc.d cupsys stop
% dpkg -i cnijfilter-common_2.70-1_i386.deb cnijfilter-ip1800series_2.70-1_i386.deb
Selecting previously deselected package cnijfilter-common.
(Reading database ... 277261 files and directories currently installed.)
Unpacking cnijfilter-common (from cnijfilter-common_2.70-1_i386.deb) ...
Selecting previously deselected package cnijfilter-ip1800series.
Unpacking cnijfilter-ip1800series (from cnijfilter-ip1800series_2.70-1_i386.deb) ...
Setting up cnijfilter-common (2.70-1) ...
Setting up cnijfilter-ip1800series (2.70-1) ...
% invoke-rc.d cupsys start
I used the --scripts option for alien because their post-installation is safe enough, nothing else but an ldconfig.
This is almost finished! You open the CUPS configuration at
http://localhost:631/, click on Administration (you should already hear CUPS that managed to contact your printer), click on the "Add This Printer" that is near the line "USB Printer #1
with status readback for Canon IJ", provide explicitely the ppd file for your printer, click on "Add printer". and you are done. You can set printer options if you want. I did not.
Click on the "Printers" main tab. You should see a printer named something like e.g. "USB_Printer_1_with_status_readback_for_Canon_IJ".
To see the status of your printer in a X window, do:
% cngpijmonip1800
(replace ip1800 by your printer, remind the name of the package you installed if you are not sure).
Let's copy/paste some of the restrictions of the status monitor:
1. The status is not displayed until printing starts.
If printing has not been started when the Status Monitor is started, only the "Ready" message is displayed because status information cannot be obtained.
2. The Status Monitor does not detect whether the printer power is off. If the printer power is turned off, the Status Monitor does not display a message that indicates the printer status.
3. If a non-root user who is not already logged in tries to start cngpij or the Status Monitor but does not execute xhost, the "cannot open display" message is displayed, and cngpij or the Status Monitor will not start. Therefore be sure to execute the "xhost [hostname]" command.
4. If the Status Monitor is started with a user privilege that differs from that of the user who executed the print job, the monitor can be started, but the status information related to that job cannot be obtained (the status remains "Ready").
5. The status is not displayed in the Status Monitor if printing is performed using the cif command.
Indeed, as root I see the pixmaps when it is printing. Up to know, it seems I never saw them when I execute the monitor as the one that started the print. Privileges or username/group (lp?) issues I do not know yet the answer.