Last Updated: Monday January 22 2001
The Apple LaserWriter IIf was introduced on October 1, 1991 with a suggested retail price of $3,599, according to Apple's web site. Nowadays you can get a refurbished unit anywhere from $25 ($1 initial bid) on eBay, all the way up to $495 from The Printer Works. As of this writing, three other sample prices from different places on the Internet are in the $250 range. Maconline has some information.
It makes a good laser printer for home use. The printing "engine" that makes up the heart of the printer is the Canon SX engine. The Printer Works has a thorough description of the SX engine along with a catalog of parts at http://www.printerworks.com/Catalogs/SX-Catalog/SX-AppLW-IIf-IIg.html. Because they're all based around the Canon SX engine, parts from the IIf are compatible with other SX-based printers. Here's a list of other SX-based printers (from The Printer Works):
Knowing that SX engine parts are interchangeable is especially helpful when you're trying to replace a busted fuser unit (ERROR 50 on HP printers), one of the common errors I've seen with these printers while I was working for Silicon Valley Connections in Hayward, CA. My LaserWriter hasn't suffered that fate yet, although I have the number of a refurbisher that does carry the parts in my pocket for when it does happen.
Of course, the toner cartridges are interchangable as well. The toner manufacturers don't hide the fact that the parts are interchangable like the repair people do, so you can find toner cartridges marked "for SX engine" at most places on the Internet. As of this writing, you can find 4000-page rated cartridges for about $60-70. 8000-page rated cartridges are somewhat more expensive. You can search the search engines for "SX engine toner" if you're looking for one.
Apple's official specification page for the IIf is at http://support.info.apple.com/info.apple.com/applespec/applespec.taf?cat=printer&RID=19. You can get the manual by searching for "LaserWriter IIf" on Apple's manual site here.
The one that I have seems to be an aftermarket upgraded unit because the info plate says it's a Apple LaserWriter II, and gives a manufacturing date of 1988, which is impossible unless it was an upgrade (or Apple's spec page is wrong). After poking around the net, I see there is a mature market for II->IIf boards, which provide all the memory and speed benefits of the IIf for the II series. It seems that the previous owner of my IIf has bought one.
This is an interesting postscript fragment which should print out interesting details about the LaserWriter.
%!
%% Laser Doctor, Version 1.0.0
%% Written by Jim Sullivan, January, 1989.
%% This was written out of a need to display as much information
%% about various Postscript Laserprinters onto one page. More
%% can be added and anyone is free to modify it for their own
%% needs.
gsave
%% Beginning of definitions ********************************
/HB {/Helvetica-Bold} def
/CBO {/Courier-BoldOblique} def
/C {/Courier} def
/FF {findfont} def
/SS {scalefont setfont} def
/mt {moveto} def
/s {show} def
/fontname 30 string def
/getfont {pop fntnm cvs /fontname exch def} def
/fntnm 30 string def
/str 32 string def
/BOLD {CBO FF 10 SS} def
/NORMAL {C FF 10 SS} def
/cnt 0 def
/btime 0 def
/circleofbench
{ 15 15 345
{gsave
rotate 0 0 mt
(Benchmark) oshow
grestore
} for
} def
/oshow {true charpath stroke} def
%% End of definitions *****************************************
BOLD
200 756 mt
(Analysis by Doctor Laser, Version 1.0.0) s %Print title
20 720 mt
NORMAL (This printer is a ) s
BOLD statusdict/product get str cvs s %Gets the name of the
NORMAL ( running version ) s %printer from
BOLD version str cvs s %statusdict/product
NORMAL ( of Postscript.) s %and the version number
20 700 translate %of Postscript from the
%'version' command
0 0 mt
(Available Fonts : (PaintType)FontName:Example of font) s %Heading
0 -10 mt
(PaintType = 0\(filled\), 1\(stroked\), 2\(outlined\),) s
0 -20 mt
( 3\(mixed\), ?\(unknown\)) s
0 -30 translate
BOLD
FontDirectory {BOLD 0 0 mt %Push directory of fonts and
getfont %get the fonts one at a time.
(\() s
{fontname cvn FF /PaintType get str cvs s} stopped {%ifelse
(?) s } {} ifelse %Get the font's PaintType and print its value,
(\)) s %or if it is not supplied, print a '?'.
fontname s %Print the name of the font.
mark
fontname length 1 30 {(-) s} for %Print dashes out to the font sample
column.
(:) s %Print a colon.
{fontname cvn FF 10 SS ( ABCDEFGH abcdefgh) s } stopped {%ifelse
NORMAL (Error implementing font) s } {} ifelse %Show a sample of each
cleartomark %font. If an error is
cnt 10 add %trapped, print message
/cnt exch def %indicating an error
0 -10 translate} forall %occurred. Use the
NORMAL %variable 'cnt' to count
cnt 30 add /cnt exch def %the number of fonts.
350 cnt mt %Move back up the page 'cnt' points.
(Virtual Memory Status:) s %Print the Virtual Memory Status
0 0 translate %using 'vmstatus'.
370 cnt 20 sub mt
(Maximum Available Bytes = ) s BOLD vmstatus str cvs s NORMAL
370 cnt 30 sub mt
(Bytes currently in use = ) s BOLD str cvs s NORMAL
370 cnt 40 sub mt
(Level of Save Nesting = ) s BOLD str cvs s NORMAL
350 cnt 60 sub mt
(Cache status \(Red book p126\):) s %Print out the cache status.
cachestatus
370 cnt 80 sub mt NORMAL (blimit = ) s BOLD str cvs s
370 cnt 90 sub mt NORMAL ( cmax = ) s BOLD str cvs s
370 cnt 100 sub mt NORMAL ( csize = ) s BOLD str cvs s
370 cnt 110 sub mt NORMAL ( mmax = ) s BOLD str cvs s
370 cnt 120 sub mt NORMAL ( msize = ) s BOLD str cvs s
370 cnt 130 sub mt NORMAL ( bmax = ) s BOLD str cvs s
370 cnt 140 sub mt NORMAL ( bsize = ) s BOLD str cvs s
usertime /btime exch def %Print a graphic (circleofbench)
HB FF 12 SS %and time how long it takes for
430 cnt 230 sub translate %the printer to interpret it.
.5 setlinewidth
circleofbench
0 0 moveto
(Benchmark Testing) true charpath
gsave 1 setgray fill grestore
stroke
-40 -80 mt
NORMAL
(Time to print) s
-40 -90 mt
(the above graphic) s
-40 -100 mt
(was ) s
BOLD
usertime btime sub 0.001 mul str cvs s %Print out the time in seconds.
NORMAL
( seconds.) s
grestore
showpage
There is a big 50-pin SCSI port on the back of my LaserWriter. Apple's site says that it's possible to plug a hard drive into the IIf model, but I'll bet that it wasn't a very popular method of getting extra storage with the prices of memory today. Apple's site does say that other LaserWriters with SCSI ports could connect to Macintoshes that way, but doesn't actually say that you can do so with the IIf. The manual also does not say that it is possible to print through the SCSI port, only that you can attach a hard drive to the printer and store things on it. A quick test with a pile of adapters to plug it into an Adaptec card on a Linux machine was unsuccessful, and I couldn't get the printer to show up in /proc/scsi/scsi.
Here is a note at http://www.umich.edu/~rsug/netatalk/archive/admins/1997/0493.html about the serial port on the LaserWriter:
The default comms settings should be 9600, no parity, 8-bits, 1 stop bit. Try using tip/cu/whatever to talk to the printer. If you type control-T, the printer should respond with a status. You can also put the printer into interactive mode by typing executive (carefully since it doesn't echo). Then you can send any Postscript command to the printer. Eg, the following: statusdict begin 25 sccbatch pstack end should print the comms settings of the 25-pin port (9600, 0 according to the manual) Once you get this far, the rest should be straight forward (my /etc/printcap came with sample entries for the LW). You can change the comms settings on the printer by executing the following bit of PS: serverdict begin 0 exitserver statusdict begin 25 57600 0 setsccbatch to change the 25-pin port to 57600 baud, no parity. It's best to send this from one of the Macs using PAP. Good luck! Sak Wathanasin Network Analysis Limited 178 Wainbody Ave South, Coventry CV3 6BX, UK Internet: sw@nan.co.uk Phone: (+44) 1203 419996 Fax: (+44) 1203 690690
I've tried using the serial port directly to print (the printer is DTE, so you need a cross-over cable if you're connecting to another DTE device like your compuer). It works, but it's darn slow. As a simple benchmark, printing out the Mandrake 7.1 PostScript test page takes over 90 seconds even with the 57600 speed hack. At 19200, printing complex web pages becomes an exercise in patience. The black communications switch on the interface panel (the one with the numbers) has its settings documented at http://til.info.apple.com/tilarchive.nsf/artnum/n15066. Settings for all LaserWriter printers can be found at http://til.info.apple.com/techinfo.nsf/artnum/n24318. As you can see from the table, the maximum base communication speed is the slow 19200 kbps.
There is a Tech Info Library (TIL) note for the AppleTalk bridge at http://asu.info.apple.com/swupdates.nsf/artnum/n11358. The AppleTalk bridge allows a Mac to maintain LocalTalk connectivity, yet still do EtherTalk. Absolutely necessary if the Mac is going to serve LocalTalk devices to UNIX clients over Ethernet.
The software itself is located at ftp://ftphqx.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Macintosh/Networking-Communications/Other_N-C/LocalTalk_Bridge_2.1.smi.hqx (BinHex self-mounting image)
A much better solution than the RS-232 serial port is to use the LocalTalk bridge on a Macintosh and connect to the printer using the full 460,800 kbps speed of the RS-422 LocalTalk ports on the Mac. Yes, RS-422. Most people don't realize that the "modem" and "printer" 8-pin DIN ports on your Macintosh are really RS-422 ports. Printing speeds with the 422 interface are much more reasonable, and you get a little print server to boot. If you are the owner of a IIf and you want to serve it on your LAN, you probably want to invest in a cheapo Macintosh, which you can get for under $100 at auction sites or at your local flea market. Note that you will probably need an AAUI dongle for some Macs with onboard Ethernet, so make sure to get one at the same time you're looking for a Mac.
Of course, if you are the proud owner of a IIg model, then your printer already has an Ethernet port built in, and you don't need to mess with this stuff. I haven't played with the IIg, so I can't help you if you want to network your IIg (although I'll happily post your results here if you send them to me).
The papd program in the Netatalk package is for printing from Apple clients to your UNIX box, but these notes are for talking to a LocalTalk printer from other systems, so I won't talk about papd. The way you print to the LaserWriter from those other systems is by using the pap and psf programs. "psf" stands for PostScript Filter, I guess, and it's responsible for performing the usual translations you'd want to do to a spooled page before you feed it to the printer. pap is a program to establish the AppleTalk Phase II network socket between the UNIX print server (or desktop) and the Ethernet interface on the Macintosh. Here's my printcap entry:
lw2f:\
:sd=/var/spool/lpd/lw2f:\
:lp=/dev/null:\
:of=/usr/lib/atalk/filters/ofpap:\
:if=/usr/lib/atalk/filters/ifpaprev:\
:tf=/usr/lib/atalk/filters/tfpaprev:\
:df=/usr/lib/atalk/filters/dfpaprev:
To tell the pap program the name of the AppleTalk host (the LaserWriter), add a file called ".paprc" in your /var/spool/lpd/lw2f directory (or whatever you named the print spool). In my case, it is "LaserWriter IIf:LaserWriter".
You can find the AppleTalk name of your printer by using the "nbplkup" command. The nbplkup command looks up all the NBP names on the current AppleTalk network. Of course, if you want to see the LocalTalk LaserWriter, you'll have to connect it to a Macintosh on you LAN with the LocalTalk bridge installed. NBP is Apple's name resolution protocol, which was used before they switched to SLP in more recent versions of their operating system. You can think of NBP as the Apple equivilent of NMB if you're a windows person. Here is the full output of that command for me: (emacs note: M-C-\ to indent)
Nexus:AFPServer 65280.8:128 nexus:netatalk 65280.8:4 nexus:Workstation 65280.8:4 PowerMac:AFPServer 65414.1:250 PowerMac:PPCToolBox 65414.1:251 PowerMac: Power Macintosh 65414.1:253 PowerMac:Workstation 65414.1:4 LaserWriter IIf:LaserWriter 65414.83:191
After installing the printcap entries, links to the psf file need to be created in the /usr/lib/atalk/filters/ directory. Here are the full list of links:
lrwxrwxrwx 1 root root 27 Jun 8 01:59 ifmpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ifmpaprev -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ifpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ifpaprev -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ifwmpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ifwmpaprev -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ifwpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ifwpaprev -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ofmpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ofpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ofwmpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 ofwpap -> ../../../../../usr/sbin/psf* drwxr-xr-x 2 root root 4096 Jun 8 01:58 poo/ lrwxrwxrwx 1 root root 27 Jun 8 01:59 tfmpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 tfmpaprev -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 tfpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 tfpaprev -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 tfwmpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 tfwmpaprev -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 tfwpap -> ../../../../../usr/sbin/psf* lrwxrwxrwx 1 root root 27 Jun 8 01:59 tfwpaprev -> ../../../../../usr/sbin/psf*
Here is a diff to get the RHS printfilter to filter existing printtool printers to pap for printing. After applying this diff to the master-filter file in /usr/lib/rhs/rhs-printfilters, edit your /var/spool/lpd/[PRINTERNAME]/general.cfg file. Mandrake 7.2 now uses CUPS, so you're on your own in figuring that one out.
On FreeBSD machines you can skip this step, because FreeBSD routes everything through the usual printer mechanism, and doesn't have this fancy configuration mechanism.
--- master-filter Fri Jul 9 21:41:25 1999
+++ my-master-filter Thu Jun 8 03:02:58 2000
@@ -383,6 +383,8 @@
bestpath="$bestpath | ${FPIDIR}/smbprint ${SPOOLDIR}/acct"
elif [ "$PRINTER_TYPE" = "NCP" ]; then
bestpath="$bestpath | ${FPIDIR}/ncpprint ${SPOOLDIR}/acct"
+ elif [ "$PRINTER_TYPE" = "NETATALK" ]; then
+ bestpath="$bestpath | pap"
fi
if [ "$DEBUG_FILTER" != "" ]; then