How can I get a IIgs to print to a modern printer? The IIgs is running Appleworks GS under System 6.0.3 with 2 MB of RAM and a hard disk. Ethernet is an option as I have a LocalTalk to Ethernet adaptor, specifically a Farallon EtherWave Printer Adapter. The printer is a HP Deskjet 2655, which is on the wireless network with my Macbook Pro. The background is that due to the current emergency I've designated the IIgs for my third grader's word processing. The ideal printing solution can be complicated to setup, as I'm a programmer, but should be seamless to use.

  • Which specific LocalTalk bridge? Which specific modern Ethernet-capable printer? – Brian H Apr 14 '20 at 18:21
  • I suspect HP Deskjet 2655 is one of those modern printers that lets the computer doing the big part of the job. That means it will be difficult to find or make a working driver for the IIgs. I'd try to find an (older) printer that understand PostScript or an even simpler interface. – UncleBod Apr 14 '20 at 20:44
  • Deskjet 2655 according to HP:s DeskJet all-in-one is PCL3 GUI .... if the Macbook pro can be equipped with something which emulates a postscript printer via TCP and uses its printer drivers to speak to the deskjet. – Stefan Skoglund Apr 15 '20 at 0:00
  • Not an answer as I did this semi-manually: Macs can still (maybe) create an AppleTalk location that a IIgs can believe is a printer (if not, a2server or tcpser on a Raspberry Pi + some serial magic may work). GSOS supports a LaserWriter, and your Mac can automate (old, ropey) LW PostScript to PDF. Your Deskjet knows how to print PDF 'cos it's one of the required formats that CUPS (Apple/Linux printing system) knows. – scruss Apr 15 '20 at 13:58

Les Barrows posted this comment in a thread on the Apple IIGS Enthusiasts Facebook group:

I've been able to make my HP OfficeJet Pro 8730 printer work in GS/OS using Harmonie PCL drivers and Treehugger via an Uthernet II card.

And "bhtooefr" posted this comment in a thread on the applefritter forum:

Usually, if I'm on the IIGS, and I need to print, I'm probably in a GS/OS program. And, if that's the case, I've got the Uther, I've got Treehugger, and I've got Independence, a third-party printer driver package, with the LaserJet III driver installed.

And, that LaserJet III driver will work with any modern PCL5 or PCL5e printer, and will print in monochrome on any PCL5c or PCL 6 Standard printer (mainly because PCL5 has no concept of color, and that's what the LJ3 supports.)

My printer is a Brother HL-2070N, which natively speaks PCL5e, and also does Epson FX-850 and IBM ProPrinter XL protocols, as a bonus - basically, if you can get the data into it, anything can print to it.

So it seems that Harmonie and Independence are third-party printer driver packages supporting PCL, and treehugger is "a GS/OS Printer Port driver which supports the AppSocket/JetDirect protocol." (Cool!)

That applefritter thead also mentions that "Pointless is a useful program that removes jaggies in early postscript implementations", so that might (or might not) come in handy. Read the whole thread.

EDIT: Ok, so I chatted with Les Barrows and he had some further advice.

TreeHugger requires TCP/IP support in GS/OS. That means a working Marinetti stack with a means of connecting to the printer. Uthernet II is probably the easiest/most available approach at the moment.

[Michael Shopsin's] bridge is for Appletalk, and for that you need to set up an Appletalk zone for it to connect to. Then you need a PAP print server. Netatalk can do both of these things. a2server has them already set up.

However, configuring PAP is interesting. The papd needs to be able to communicate with the printer, and I always found it flaky.

AppleTalk/LocalTalk is its own networking system based on an RS422 serial link. At least it was originally, and EtherTalk was the original implementation that bridged to Ethernet. Since he has the bridge, he could use that. If he has an old Mac he could probably host a print server on that too, assuming the Mac could print to his new printer.

At that point it's questionable whether he'd want his daughter using the IIgs over the Mac.

As you can see, Les is the expert, not me, but I've tried to quote verbatim or summarize everything from him and the other sources. Of course, I always encourage people to submit their own answers or at least comment on StackExchange. It's an uphill battle. ; - )


I don't know if I can say this for 100% certainty for every HP printer ever, but in general Hewlett Packard printers that support HP's own Page Control Language (PCL), which as far as I know is every one of them, has built-in fallback support for monospaced lineprinter mode when the device is first turned on.

Generally all you need to do is spew raw text at the printer engine, and it will spit out a monospaced page when the internal page buffer is full. The final page will not come out until you issue a form feed to print what remains in the page buffer.

HP inkjet or laser/LED printer models ending at about the year 2000 included a special dedicated button to manually issue a form feed, and also usually an indicator that the buffer was filling with data but won't be printed until the page buffer is full.

HP LaserJet 4 control panel from 1992, with a Form Feed button and indicator light: Cite: Image is in the public domain from Wikimedia Commons.

For the modern printers with only one button, either this is not possible, or some combination of pressing or holding that one button sends the form feed.

All modern PCL drivers are sending escape sequences and commands that switch the printer out of its default lineprinter mode and into the modern PCL world of scalable outline fonts, bitmapped graphics, color, job control like duplex and stapling, etc.

The main problem is getting the data to the printer, which now usually only have USB or ethernet in the basic cheap models.


You have Ethernet but there some more fiddling to do, because typically there is a micro-controller computer that sits on the Ethernet connection and communicates back to the originating device, which was previously known as HP JetDirect and was a plug-in upgrade module, but now is just included by default as part of the printer logic.

Creative Commons Attribution-Share Alike 3.0 Germany, by https://commons.wikimedia.org/wiki/User:Starwhooper -- Image URL: https://commons.wikimedia.org/wiki/File:HP_jetdirect_610n.jpg

You need to open communications with JetDirect and then pass the data through it to the printer's data buffer.

Fortunately, the most common form of this is port 9100 TCP raw printing, which is what Windows uses if no specific manufacturer's driver is available.


Quoting a randomly Googled Xerox help page: http://www.office.xerox.com/userdoc/WC4265/phlink/raw_tcpip_printing.html

Raw TCP/IP is used to open a TCP socket-level connection over Port 9100, and stream a print-ready file to the printer input buffer. It then closes the connection either after sensing an End Of Job character in the PDL or after expiration of a preset timeout value.

Port 9100 does not require an LPR request from the computer or the use of an LPD running on the printer. Raw TCP/IP printing is selected in Windows as the Standard TCP/IP port.


See also: http://danieru.com/2013/06/06/what-is-port-9100-how-to-print-to-it/

The genius of port 9100 is in the pure reality that no other network printing protocol can be simpler. Even printing over UDP would complicate the process by requiring a END_OF_PRINT_JOB instruction. Instead port 9100 treats the TCP’s closure as the submit command.

You can try printing over port 9100 yourself by running from the command line:

$ netcat PRINTER_IP 9100
$ Hello World
$ <Ctrl+c>

For an inkjet or laser printer, I don't know if this example will eject the monospaced line printer page automatically. You may need to manually issue a form feed via the printer control panel to get it to print the page, or issue the form feed as a control character included at the end of your print job.


Also typically there are settings in the printer that define the width of the page, the number of lines per page, the built-in printer font to be used for printing, and so forth. Once again, for the older printers, there is a menu typically labeled PCL that lets you set these defaults.

These settings ONLY apply for the line printer mode. Once a modern computer switches into the advanced PCL language capabilities it ignores these settings. I do not know how you can directly access it for a modern printer with a minimalist 1 or 2 button user interface on the printer itself.

You may possibly be able to open the network address of the printer as a web page and then review / adjust these settings in there. You may also be able to telnet or SSH to the printer network address to configure it through a command line.

  • I look at the photo of the printer status and the only thing I can think is, "'PC LOAD LETTER'? What [...] does that mean?!" – Wildcat Matt May 14 '20 at 16:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.