
u/Ct_cruncher

For #Appril (Because i missed #Marchintosh) I got my Mac SE/30 printing to a current HP DeskJet. Here's the full setup in case anyone wants to do the same.
The hardware:
Mac SE/30, System 7.1, with an Ethernet card (EtherTalk Phase 2)
Raspberry Pi 3
Standard Ethernet cable between them
HP DeskJet 2855e (any modern IPP Everywhere printer should work)
How it works:
The SE/30's Ethernet card runs AppleTalk natively over Ethernet (EtherTalk Phase 2). The Raspberry Pi runs Netatalk, which speaks the same protocol — so from the Mac's perspective, the Pi looks like an old-school AppleTalk print server. The SE/30 opens the Chooser, clicks LaserWriter, and sees the printer. It sends PostScript over PAP (Printer Access Protocol), Netatalk hands it to CUPS, and CUPS delivers it to the HP.
Thirty-five year old protocol, modern inkjet, Raspberry Pi in the middle making it all work.
Software stack on the Pi (Raspberry Pi OS):
CUPS — handles the actual print queue and talks to the HP via IPP Everywhere (no driver needed for modern HP printers, just add it through the CUPS web interface at localhost:631)
Netatalk 4.2.3 — provides the AppleTalk layer. Two daemons matter here:
atalkd — the AppleTalk network daemon, binds to the Ethernet interface
papd — the PAP print server, registers the printer on the AppleTalk network and bridges to CUPS
Config files:
/etc/netatalk/atalkd.conf:
eth0 -phase 2 -zone "LocalNet"
/etc/netatalk/papd.conf:
RetroPrinter:\
:pr=retroprinter:\
:pd=/etc/cups/ppd/retroprinter.ppd:\
:op=lp:
One non-obvious thing: the op=lp line is required on Linux. Without it, Netatalk tries to use a system user called "operator" that doesn't exist on Debian/Raspberry Pi OS, and print jobs silently fail.
The PPD file at that path is auto-generated by CUPS when you add the printer — just copy it from /etc/cups/ppd/ after setup.
Result: Open Chooser → click LaserWriter → select RetroPrinter → print. Works exactly as it would have in 1991, except the printer on the other end costs $80 and prints in color.