Printing on an OS/2 Printer with an Apple iBook
This is the first OS/2 eZine article
I've written using my new Apple iBook. Although I bought the iBook mainly to develop
and test some cross-platform software I'm working on, the more I use it, the better
I like it. The six hour battery life is especially nice.
While the iBook comes with lots of
great bundled software, it is definitely lacking in one area, built-in PC connectivity.
I had originally planned to use both server hard disk space and my existing printer
rather than purchasing extra Apple hardware. Imagine my surprise when I discovered
the iBook doesn't do NetBIOS and OS/2 doesn't talk Appletalk.
Fortunately, I have discovered that
it is possible to print to a printer attached to an OS/2 server, all you need is
LPD, Ghostscript, and a handy little utility called printmon by Kai Uwe Rommel.
Software You'll Need
The first program you'll need is
printmon.zip, available on Hobbes at ftp://hobbes.nmsu.edu/pub/os2/util/printer/printmon.zip
. This little utility allows you to redirect data sent to a printer port to somewhere
else.
If you don't have the latest version
of the EMX Runtime Library, you'll need to obtain emxrt.zip from Hobbes.
You'll also need Ghostscript. This
is a remarkable package at a spectacular price. It is a complete postscript interpreter
capable of reading postscript and PDF files and printing them to a wide variety
of non-postscript printers, or for viewing the files onscreen. You can download
the latest 6.01 version from http://www.cs.wisc.edu/~ghost/aladdin/
Lastly, you'll need a .CMD file to
run everything, modified with your configuration of course. This is the one I use:
c:
cd \gs6.01\bin
set gs_lib=c:\gs6.01\fonts;c:\gs6.01\lib;c:\psfonts
set gs_load=10
\apps\printmon lpt2 "gsos2 -sDEVICE=bjc600 -sOUTPUTFILE=lpt1 -q -dBATCH -"
Setting up your OS/2 Server
The first thing to do is to set up
the Line Printer Daemon (LPD) on your OS/2 server. LPD is the TCP/IP line printer
daemon which provides a service that allows any workstation that can reach it via
TCP/IP to print on its attached printers. Note that LPD is a TCP/IP <B>SERVICE</B>,
so if your server is connected to the internet via a permanent connection, you should
configure your firewall to prevent anyone outside your lan from abusing your print
facilities.
To set up LPD to start automatically
each time your server starts, go to the OS/2 System Setup and choose TCP/IP Configuration.
Go to the Autostart tab and click on LPD. I personally prefer to run it as a detached
session so that it doesn't show up in the task list, but you can run it however
you prefer. There are optional switches you might find useful, see the TCP/IP Command
Reference for more information.
Restart your OS/2 server then create
a new printer object. Select a postscript printer driver for the new printer object.
I called my printer "Ghostscript" and used the Apple Laserwriter II NTX
driver. Set it to output to a non-existent LPT port, I selected LPT2 -- this is
the port that you will have printmon intercept later. While you're there, have a
look at the View tab and write down the physical name of the printer, you'll need
that when you set up your iBook to print.
Installing Ghostscript is a matter
of unzipping the GS601OS2.ZIP file, making sure to recreate the internal directory
structure. It will create two directories, one for Ghostscript and one for fonts.
Then you need to modify the GS.CMD file with your paths. The SET GS_LIB= line above
tells Ghostscript where to find fonts, setup files, and the OS/2 Adobe fonts respectively.
I'm not sure the SET GS_LOAD= line does anything in this case, but it can't hurt
anything and it is supposed to keep Ghostscript in memory to reduce load times when
you are printing multiple print jobs.
Figuring out the command line you
need for printmon is also pretty straightforward. Its parameters are the port to
intercept, and the command to pipe the intercepted data to surrounded by double
quotes.
The command line for GSOS2.EXE is
a little more involved so I'll go through each of the options I'm using:
gsos2 -sDEVICE=bjc600 -sOUTPUTFILE=lpt1
-q -dBATCH -
The -sDEVICE=bjc600 option specifies
the driver that will be used to print to the printer attached to your OS/2 server,
I have a Canon Bubblejet BJC-600. If you want to see a list of the available drivers
and all the switches, run GSOS2 with the -h help switch or see the Ghostscript documentation.
The -sOUTPUTFILE=lpt1 should be set
to the name of the port that the server's printer prints to.
-q silences a lot of messages.
-dBATCH makes sure that even if Ghostscript
has an error while printing, it exits cleanly to allow everything to keep working.
The last - tells Ghostscript to accept
input from stdin and is needed when the data is routed to it by printmon.
For testing, I ran the GS.CMD file
from an OS/2 command prompt so I could see the messages it produced. Once you have
everything working and reliable, you can add the line
DETACH C:\GS6.01\GS.CMD
to your STARTUP.CMD file so that
it starts automatically each time your server starts.
Setting up the iBook
All you need to do on the iBook is
create a new LPR printer using the Desktop Printer Utility. If you can't find it
on your iBook, you can start it from the help if you look in the printer section.
In New Desktop Printer, select Printer (LPR) and click on OK.
For Postscript Printer Description
(PPD) File, Generic works well. For LPR Printer Selection, click on Change, then
enter the IP address of your OS/2 print server and enter the physical name of the
server printer you noted before into the Queue entry, for me this was GHOSTSCR.
You can click on the Verify button to confirm that the connection is working. Click
on OK, and lastly click on Create and name your printer. In a moment it will appear
on your Mac's desktop.
Testing Everything
If all has gone well, you should
now be able to print from any Macintosh application to the printer you have created.
You will see the print job travel over the lan, appear in the Ghostscript printer
queue, go through Ghostscript in your OS/2 command window, move to your real printer's
queue, and finally out of the printer. If you have a color printer, it will even
print color correctly. I have to admit, the first time I saw it work, I just about
fell over with surprise. It all seems a little too complicated doesn't it?
Postscript Printing from OS/2
One nice side benefit of all this
is that now I can use the Ghostscript printer driver for printing from my OS/2 workstations.
This is nice because the Omni Bubblejet driver sets the printer to its highest quality
mode with no option to set to regular quality for faster printing and less ink use.
The Ghostscript driver allows you to adjust many printing settings manually including
the print quality.
Wrap Up
I have really come to enjoy my iBook.
It is reliable, the software is slick, and it has the great feature that attractive
women seem to want to talk to me about it whenever I'm out in public with it (this
is obviously not my wife's favourite feature.) The iBook has already reduced my
use of my Thinkpad to email and a few other indispensible OS/2 applications. If
you have the opportunity, I recommend you give one a spin.
A Request for Help
If you have had success finding an
affordable option for getting OS/2 to share files with a Macintosh, or happen to
have a copy of Lan Server for the Macintosh you want to give away, I'd be very interested
in hearing from you. At this point I'm using FTP for file sharing which isn't a
great solution.
|