-
Notifications
You must be signed in to change notification settings - Fork 89
Print Server
Netatalk (all versions except v3) provides an AppleTalk compatible printer server daemon called papd
. It can leverage the CUPS backend to share modern printers with vintage Macs.
Shared printers can be accessed through the Apple LaserWriter Chooser extension.
Install the CUPS backend on your system before configuring Netatalk.
F.e. on Debian or Ubuntu:
$ sudo apt install cups
This guide will not cover all scenarios for setting up CUPS, since CUPS's own documentation should serve this purpose. However, we will cover some key steps and caveats that are specific to the Netatalk setup.
Once you have installed CUPS packages and started the daemons, or enabled the systemd services for CUPS (including the cups-browser web interface, for convenience), you will want to add yourself to the CUPS admin group, and set a few options to make remote administration possible. Skip these steps if you want a more secure setup.
$ sudo usermod -a -G lpadmin $USER
$ cupsctl --remote-admin WebInterface=yes
You may want to tweak the settings in /etc/cups/cupsd.conf
to suite your environment, and tastes. Two recommended tweaks are to enable log rotation, and to disable the indefinite storing of print jobs, to avoid continuous increase in disk space taken up.
MaxLogSize 1000
PreserveJobHistory No
Note: In the author's environment TCP port 631 (CUPS Web Interface default) was not open, so you may have to either edit /etc/cups/cupsd.conf
or open the port in your firewall if you want to use the CUPS Web Interface.
Once you have configured everything to your satisfaction, just start or restart the cups service. If the package installer didn't enable the services for you, you may need to use systemctl to reload daemons and enable new services first.
Note that for this to work, your printer must be CUPS (Apple AirPrint) compatible. At the time of writing, the majority of modern printers are compatible. You can test this by after going through the steps above pipe some text to lp. First, list the printers that CUPS can see, then configure the default printer (HP Tango in my case), finally pipe a stream to lp for printing.
$ lpstat -p -d
printer HP_Tango_333AB4_ is idle. enabled since Fri 07 Jan 2022 06:47:09 PST
system default destination: HP_Tango_333AB4_
$ lpoptions -d HP_Tango_333AB4_
device-uri=ipps://HP%20Tango%20%5B333AB4%5D._ipps._tcp.local/ printer-info='HP Tango [333AB4]' printer-location printer-make-and-model='HP Tango' printer-type=16781324
$ echo "TESTING" | lp
request id is HP_Tango_333AB4_-3 (0 file(s))
The next step is to configure papd. Edit /etc/netatalk/papd.conf
and add the following line to the bottom of the file:
cupsautoadd:op=root:
Save, exit, and restart papd.
At this stage, you want to test that the CUPS printer is shared over AppleTalk. This can be done using this command:
$ nbplkup
The output should look something like this:
rascsi3b:ProDOS16 Image 65280.205:3
HP Tango 333AB4 :LaserWriter 65280.205:130
rascsi3b:Apple //e Boot 65280.205:3
rascsi3b:AFPServer 65280.205:131
rascsi3b:TimeLord 65280.205:129
rascsi3b:Apple //gs 65280.205:3
If you see your printer here, the only thing left is to configure the printer on your vintage Mac in the Chooser. This part may vary depending on AppleTalk version, printer drivers on your system, and model and make of printer. The author has tested their HP Tango printer with LaserWriter 7 on System 7.1.1, and LaserWriter 8 on Mac OS 8.6:
- Pick the LaserWriter driver in the Chooser. Your printer should appear in the list of PostScript printers.
- If using LaserWriter 7 or earlier, just selecting the printer should be enough.
- If using LaserWriter 8, click Setup.
- If given the option to pick PPD (printer description file) choose Generic or plain LaserWriter. (As of v2.3,
papd
doesn’t use the PPD info.) - Print!
If the LaserWriter driver fails to properly spool the print job to the printer, you may want to try to configure is differently through CUPS. Here it is helpful to have the web interface ready. Go to the Administration page, Add Printer, then pick the printer you want to share from the list of detected ones. Note that one printer may expose several interfaces, so choose the one that seems the most likely to work with LaserWriter spool queues. Afterwards, check with the nbplkup
command which printers are available over AppleTalk, and have a look in the Chooser if a different printer has been detected now.
Resources
OS Specific Guides
- Installing Netatalk on Alpine Linux
- Installing Netatalk on Debian Linux
- Installing Netatalk on Fedora Linux
- Installing Netatalk on FreeBSD
- Installing Netatalk on macOS
- Installing Netatalk on NetBSD
- Installing Netatalk on OmniOS
- Installing Netatalk on OpenBSD
- Installing Netatalk on OpenIndiana
- Installing Netatalk on openSUSE
- Installing Netatalk on Solaris
- Installing Netatalk on Ubuntu
Technical Docs
- CatalogSearch
- Kerberos
- Special Files and Folders
- Spotlight
- AppleTalk Kernel Module
- Print Server
- MacIP Gateway
Development