Wednesday, January 18th, 2006
Hooking up a new printer to the server was the first real work that it has done and it was ridiculously easy to get cups working, local printing working, samba printer shares working, and windows clients printing to it. I think it took a total of 5 minutes to get that far. But then OSX clients… it took another 6 hours to figure out the following secret sauce:
- OSX asks for host and queue. It says, just leave the queue blank and I’ll figure out the default. Balderdash.
- If you foolishly enter the host and queue, like say host: 10.0.0.10 and queue: laserjet THE JOKE’S ON YOU! It really wants you to enter host: 10.0.0.10 and queue: printers/laserjet
- If you somehow figure out what it really wants at the user interface, you still are out of luck. You must now edit /etc/cups/printers.conf on the client to make sure the DeviceURI line looks like this:
DeviceURI ipp://10.0.0.10/printers/laserjet My OSX client was adding html entities and “ipp/” in the middle there.
But after you figure that out, it was EASY!
I guess Macs work fine if they are just talking to Macs and what business do I have trying to make them talk to anything else? I suppose I could chill a little about my frustration since Apple is developing cups for me and it is better than nothing.
linux cups client to a cups server
I have a hard time remembering what the URI should be when setting up printing on a cups client. It shouldn't be a such an odd question that there is nothing in the documentation that gives me a clue about it. To save myself a lot of trial and error again:
root@muno:/var/log/cups# lpstat -v device for color-laser: socket://10.0.0.58 device for mono-laser: ipp://10.0.0.3:631/printers/mono-laser
another working client
root@ferret:/etc/cups# lpstat -v device for HP_LaserJet_200_color_M251nw_weasel: dnssd://HP%20LaserJet%20200%20color%20M251nw%20%40%20weasel._ipp._tcp.local/cups device for mono-laser: ipp://10.0.0.3:631/printers/mono-laser
root@weasel:/etc/cups# lpstat -v device for color-laser: ipp://10.0.0.58/ipp/ device for inkjet: hp:/usb/OfficeJet_6100_Series?serial=MY3ABH62X12R device for mono-laser: hp:/usb/hp_LaserJet_1160_series?serial=00CNG1P08986
server with a different set of printers
rday@weasel:~$ lpstat -v device for color-laser: socket://10.0.0.58 device for mono-laser: usb://HP/LaserJet%201160%20series?serial=00CNG1P08986
The question I keep running into is: after I have printing working on the cups server, how do I figure out what the published URI is that the clients should use when connecting? And for some reason, I can never find an answer to that in the cups documentation.
There is a wiki here (https://wiki.archlinux.org/index.php/CUPS_printer_sharing) that indicates the proper form of the url, ie. ipp://server:631/printers/printername. I suppose that should be enough for me, but I keep thinking there must be a utility on the cups server that gives me a literal list of the published urls. Much like showmount does for nfs mounts.
Another question that I would love to have answered is how to manage cups via files ala puppet. I don't want to have to keep making these changes manually through the cups web console. But when I tell puppet to enforce printers.conf, I find that cups wants to write to it and thus a battle between puppet and cups that results in the config file flipping between two states every 30 minutes.
This might be a good answer to the second question: http://serverfault.com/questions/141711/puppet-causes-endless-restarts-of-cups-how-does-one-prevent-this
problems after a cups upgrade
Still the ongoing battle over who is admin of my printers: a cups setup wizard or me.
After a cups upgrade on the server and clients, each client now is trying to talk directly to the printers instead of going through the server. It works for the monochrome laser, but fails for the color laser.
I see that the printer is configured to stop on errors, which is what happens when I try to print.
The error that shows up in the cups web admin gui is this:
Idle - "Error importing HPLIP modules:19702 No module named base.g"
Deleted the broken printer config on the client. Setup the client to point to the server instead of the printer.
The same problem exists.
I found that hplip was not installed on the client. Installed it, restarted cups on client and server and it works.
After the upgrade to trusty, printing from ubuntu client to ubuntu server was broken, but it gave me a clear error. The PPD version on the client did not match the PPD version on the server. After upgrading the client, I was back in sync and printing worked.
fedora vs ubuntu version mismatch
I need the PPD on the server and client to match, but at the moment, that doesn't seem possible with fedora20 and ubuntu14.10.
[root@servo ppd]# rpm -qa | grep gutenprint gutenprint-5.2.9-14.fc20.x86_64 gutenprint-cups-5.2.9-14.fc20.x86_64 root@weasel:/etc/cups/ppd# dpkg -l printer-driver-gutenprint Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-================================-=====================-=====================-====================================================================== ii printer-driver-gutenprint 5.2.10~pre2-0ubuntu2 amd64 printer drivers for CUPS
Most of my clients are ubuntu, but one is fedora. The PPD for my model of printer in fedora20 is this:
HP LaserJet 1160 - CUPS+Gutenprint v5.2.9
On the ubuntu14.10 printer server, I have this:
HP LaserJet 1160 - CUPS+Gutenprint v5.2.10-pre2
I tried copying the PPD from the server to the client and I get "the PPD is incompatible with gutenprint"
mystery printer showing up
The printer chooser page that shows up after selecting print in a PDF shows a mystery printer. Cups doesn't know anything about this printer and neither do I:
This printer name shows up on the admin page of one of the HP printers.
HP LaserJet 200 color M251nw NPIE767A1 10.0.0.58