Netatalk 2

AppleTalk Kernel Module

Netatalk relies on AppleTalk support in the kernel to make use of the DDP layer. The atalkd daemon will attempt to dynamically load the kernel module if not detected, and error out if all attempts fail. You can still use the DSI layer (TCP/IP) without an AppleTalk kernel module.

At the time of writing, Linux and NetBSD are known to have officially maintained AppleTalk kernel modules. At least Debian Linux (as of Bullseye) comes with the kernel module compiled in by default. There is code for a Solaris kernel module in the Netatalk source tree.


To check if your kernel has AppleTalk support, first start the atalkd daemon, then issue this command and inspect the output:

$ lsmod | grep appletalk

If no appletalk module is detected, you will have to compile support into the kernel.


Netatalk distributes code for an AppleTalk module for Solaris / Illumos, located under sys/solaris. It is presently configured for the SPARC architecture only.

Sharing a modern printer over AppleTalk

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 piping some text to lp. First, list the printers that CUPS can see, then configure the default printer (HP Tango in the following example), 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
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:


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:

  1. Pick the LaserWriter driver in the Chooser. Your printer should appear in the list of PostScript printers.
    1. If using LaserWriter 7 or earlier, just selecting the printer should be enough.
    2. If using LaserWriter 8, click Setup.
  2. When given the option to pick PPD (printer description file) choose plain LaserWriter from the list.
  3. Print!

If printing doesn’t immediately work, try experiment with other stock PPD files in the Chooser, or track down 3rd party ones that may be compatible, and see it that makes a difference.

This is a mirror of the Netatalk GitHub Wiki. Please visit the original page if you want to correct an error or contribute new contents.

Last updated 2024-04-13