Here are the results of my March 2006 purchase of a Netgear PS121 USB print server (a box the size of a deck of cards which will connect a wide variety of USB printers to your Ethernet) so I could share my Epson Stylus Color 880.
Request
Since I spent two days debugging this, including fighting with the OS X print system, which works great when it works but gives you essentially no feedback when it doesn't, plus hacking smbspool to the point where I know what's wrong with it, which included reading horrible CIFS protocol documentation, and then I spent a morning carefully writing this up for you: if you find this information useful, please make a donation (code, documentation, support, or cash) to the open source project of your choice and/or the charity of your choice and/or send me a postcard.
Printing from OS X 10.2 (Jaguar)
Here are the results of my attempt to print from an OS X (10.2, Jaguar) machine to an Epson Stylus Color 880 connected to a Netgear PS121 USB print server.
The bottom line is, "you can't get there from here". There are two problems:
-
The smbspool component of the version of samba which shipped with 10.2 can't talk to the PS121. The issue is that "modern" SMB print servers operate by printing any file you store into the printer's directory on the server (e.g., if you create a file called \\server\printer1\foo.txt the printer will print it). However, the PS121 requires the primeval SMB print protocol, which uses different RPC operations to create, write to, and close print files as opposed to all other files (you must issue OPEN_PRINT_FILE, WRITE_PRINT_FILE, and CLOSE_PRINT_FILE instead of CREATE_NEW, WRITE, and CLOSE). If you try to use the regular-file operations, the PS121 will respond with ERRnoresource which will probably be rendered to you as No resources currently available for request. By the way, before you can get to the point where you can observe this failure, you need to modify the PS121's configuration to change its server name from the factory default (something like PS0B18AB) to its IP address (something like 192.168.1.125), or else any attempt to connect to it will fail (after more than a minute!) with called name not present. To paraphrase Zippy the Pinhead, SMB is fun! Anyway, it keeps me busy.
The solution to this problem is to contact the PS121 with the LPD/LPR (Berkeley network line-printer) protocol instead. If you were going to do this, you would need a magic incantation (which begins "Launch Print Center", hold down the Option key, click "Add", and select "Advanced"). But don't waste your time fiddling with that, because of the next problem.
-
The version of CUPS, the Common Unix Printing System, which shipped with 10.2 can't rasterize your file properly for the Stylus Color 880. I read this online somewhere and it's true--even though 10.2 came with Epson software which will print to the 880 just fine if you connect it directly to your Mac's USB port. The Epson software will rasterize only for USB-connected printers, so since the CUPS rasterizer is broken network printing isn't going to work.
One solution to this problem would be upgrading 10.2 to something newer. Since I haven't done this yet (yes, it's 2006, but the Mac in question is an original 1998 Bondi Blue iMac without enough RAM for 10.4, so I'm in no hurry), I can't say which version of OS X you'd need. Luckily I happened to have a machine running Debian Sarge on my home network. That has a newer version of CUPS which is easily configurable to print to the 880 through the PS121 (see below), at which point it's easy enough to have the Mac send print jobs to the Sarge box, which will rasterize them just fine and forward the bits along to the PS121.
- From some application, choose File and then Print....
- From "Printer", choose Edit Printer List....
- If the printer doesn't appear in the printer list (probably with a pink background), make sure that the Show printers connected to other computers box is checked in Print Center's preferences.
The downside to cheap ink-jet printers is that it takes quite some time for printing to actually begin. For example, if I print something from iPhoto on the Mac, it takes around a minute for the Mac to start transferring the print job to the CUPS server, which then takes another minute or two to start sending data to the PS121 (somewhat confusingly, the CUPS server's printer status page starts off by saying "Printing..."--which actually means rasterizing--before it switches to "Spooling", which is when the printer will start to get excited).
Printing from Debian Sarge via CUPS
The smbspool that ships with Sarge is newer than 10.2's, but equally unable to print to the PS121, so you'll need to use the LPD protocol.
- Attach your PS121 to your LAN. Somehow figure out its IP address (the MAC address is on a label on the back of the PS121, and/or consult your DHCP server). Point a web browser at it and assign it a static IP address--I used 192.168.1.125.
- apt-get install gs-esp - this is a secret dependency of CUPS if you want to print to the 880 with the GIMP-print driver.
- apt-get install cupsys cupsys-bsd cups-pdf cupsys-driver-gimpprint
- Edit your /etc/cups/cupsd.conf to un-comment-out the line that says
BrowseAddress @LOCAL
(so other computers can discover that you're exporting the printer). Also edit your main authorization block so it looks like this (assuming your LAN uses addresses in 192.168, which is true of many home LANs behind NAT routers--the other likely address block would be 10/8):<Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From 192.168/16 </Location>
- Launch a web browser on the Sarge box and point it at
http://127.0.0.1:631.
Click on Manage Printers and Add Printer.
- Name
- Netgear_SC880 (or whatever you want)
- Location
- (I left it blank)
- Description
- Stylus Color 880 via Netgear(or whatever you want)
- Device
- LPD/LPR Host or Printer
- Device URI
- lpd://192.168.1.125/P1 (the "P1" part is important; you figure it out by sacrificing a goat to smbclient -L, though Netgear could have documented it in their 41-page user manual)
- Make
- EPSON
- Model
- Epson Stylus Color 880 - CUPS+Gimp-Print v4.2.7 (en)
Disclaimer
Apparently these directions aren't enough to let you print PDF files with Asian fonts. I suspect fixing this would require a trip through /etc/cups/pdftops.conf which I haven't taken yet. If, Gentle Reader, you know what needs to happen to make this work, let me know.
Printing from Windows XP
Well, other people in the family use Windows, which is half the reason I went out and bought the PS121. Anyway, the "Add Printer wizard" will do the trick, though you have to pretend at the beginning it's a "local" printer (I guess that makes sense in the minds of the folks in Redmond). If you see the CUPS configuration info above it should be obvious what to do, with the exception that XP didn't have a driver for the 880 so I lied and said it was an 860. That worked at least well enough to print a test page, which is plenty of Windows usage for me for today.