[This thread is somewhat related to another thread in this forum, "Cups 1.4.2 and common problems", http://www.linuxquestions.org/questi...oblems-793787/
. I open a new thread because the following is concerned with the newer CUPS 1.4.3 only. I haven' t made any tests with earlier versions of CUPS in Slackware64 -current.]
I have spent some time with my Epson ink-jet printer (Stylus C46) and CUPS 1.4.3
and want to share my experiences.
(1) The first problem occurs when trying to configure the printer: Adding my printer and the corresponding gutenprint driver worked, but changing the default printer options to my needs (e.g. 360 dpi, four color standard mode) with the CUPS http-interface using Konqueror 4.4.3 (default) does not. Then employing Seamonkey 2.0.4 for this task (http://localhost:631/
) was successful, Konqueror only shows the links to the 'advanced' printer options, e.g. "Printer Options Extra 2, Output Control Extra 1,...", but the links doesn't work.
(2) When trying to check the printer nozzles ("Print Self Test Page" in Cups' Maintenance menu), which is the cheapest form to test printer functions because it wastes less ink, I first had to generate an ordinary print-job or print a (perhaps more costly) test page ("Print Test Page" in Cups' Maintenance menu), else the nozzle check would not work.
(3) After finishing the printer configuration I shut down my machine (power off) and the printer (power off). I wait about 20 seconds and then again switched on the printer (power on) and, after that, my machine (power on). The following (cold) reboot leads to non-recognization of the printer by Cups. Only switching off the printer (power off) and then switching on (power on) again, while the machine is constantly running, would convince Cups to recognize the printer.
(4) Retrieving the ink-level from the printer using Cups' http-interface is obviously NOT provided. No option found in maintenance menu. KDE' s 'system-cofig printer 1.2.1' applet ("Printing" in KDE' s menu) offers such a function, but it does not work. ("Marker levels are not reported for this printer").
I agree to gargamel (posting #8 in the thread cited above), Cups' http-interface is confusing. More, it is also inconsistent, e.g. clicking the button "Jobs" leads to a page displaying "No jobs", and above that you'll find a button "Show all jobs". Activating this, one gets a list of all completed jobs. This is not an Apple' s highlight.
The problem of retrieving the ink-level from an USB-connected printer on a newer Linux OS is concerned with the usage of kernel-space or user-space methods (please correct me if I am wrong). In Slackware 13.0 (CUPS 1.3.11) the USB-connection of the printer is made through a , udev-provided, device file, e.g. /dev/usb/lp0 for the first USB printer (kernel-space method). This implies loading of a kernel module 'usblp' (feature not compiled-in).
In Slackware 13.1 RC1 (CUPS 1.4.3) the USB-printer-connection is made also through a device file, /dev/usbdev5.2 on my machine, but no kernel module is required (user-space method). It is even forbidden to load the module 'usblp', Cups does NOT work when the module is loaded. Instead of using a kernel module, 'libusb' is employed. (I don't fully understand this new user-space method for now, and would be grateful to get a hint to an introduction to this topic.)
For ink-level retrieval from the printer, the command-line tools 'escputil' (comes with gutenprint, see 'man escputil') and 'ink' ('ink' requires 'libinklevel') could be used. Both tools need a loaded kernel module 'usblp'. Sources and SlackBuilds for ink and libinklevel can be downloaded for Slackware 13.0 from SBo. Building and using ink and libinklevel on my machine with Slackware 13.0 (32-bit) was without problems. escputil works also and provides additional options for nozzle check and nozzle (head) cleaning, which work flawlessly (the head-align function does NOT work for my printer).
But what to do on Slackware 13.1 RC1 (or 13.1 in the future)? Cups itself doesn't provide retrieval of the ink-level, it's nozzle-check function works only unreliably. Perhaps nozzle-cleaning can be performed. Loading of the kernel module 'usblp' is forbidden. CUPS 1.4.3 don't like this and refuses to work. As a workaround one can load usblp ('modprobe -v usblp') , start escputil to perform some functions ('escputil -r /dev/usblp0 -i' to retrieve ink-level (/dev/usblp0 is a link to /dev/usb/lp0)) and, after that, unload the kernel module ('rmmod -v usblp'). Don't forget this, or the printer wouldn't work anymore. In practice, after loading 'usblp' you have to wait a second before starting escputil or perhaps you get wasted output.
I think this is a much to complicated procedure. You need to be 'root' to load and unload the kernel module. You can make a small script for simplifying, but you have to login as 'root'. Such an effort is NOT acceptable, especially on a 'production'-machine. On a Ms-Windows system all this tasks can be perormed with one (or few) mouseclick(s).
As far as I know, there are no open source tools, working from user-space (wihout a loaded kernel module) to perform printer maintenance fuctions (ink-level retrieval, nozzle check, nozzle cleaning). Considering the todays' cost of ink, ink-level retrieval is strictly necessary. Besides that, you risk overheating of the nozzles - which means damaging of the print head, when they run out of ink.
Patching CUPS 1.4.3
To solve the above problem (not only this, but also the problems with multi-function devices, mentioned in the thread cited above), Till Kamppeter has written a patch, http://www.cups.org/str.php?L3357
. The patch targets to use both access methods: 'libusb' and the 'usblp' kernel module. "The patch is already in use in the Debian and Ubuntu distributions for several months and there are no user complaints about it."
I tried to apply this patch to the original Slackware64 -current sources for cups-1.4.3, but had no success and got the following message:
root@m2:~/cups-1.4.3-with-usb-backend-patch/cups-1.4.3# patch -p0 < ../usb-backend-both-usblp-and-libusb.patch
patching file backend/Makefile
patching file backend/ieee1284.c
Hunk #1 succeeded at 255 (offset -20 lines).
patching file backend/usb-hybrid.c
patching file backend/usb-libusb.c
patching file backend/usb-unix.c
Hunk #6 FAILED at 195.
Hunk #12 FAILED at 599.
2 out of 12 hunks FAILED -- saving rejects to file backend/usb-unix.c.rej
patching file backend/usb.c
Starting Pat' s original unmodified SlackBuild after (incompletely) patching, leads to a compiling error. I don't have the knowledge to investigate the problem further, but I think there are others which have.
It is desirable to integrate this patch into Cups 1.4.3 used in the forthcoming Slackware 13.1. It would be a great benefit of the forthcoming release to provide the option to use open source tools for printer maintenance functions. I think it is not only a benefit, but a necessity, regarding the costs of ink and the risk of print-head damaging.