Skip to content
Daniel Markstedt edited this page Mar 18, 2025 · 10 revisions

AppleTalk Troubleshooting

Getting the AppleTalk (DDP) transport layer working in modern environments can often be a steep hill to climb. This guide provides a few pointers for resolving common pitfalls.

AppleTalk Kernel Module

Netatalk relies on AppleTalk support in the kernel to make use of the DDP layer. The atalkd daemon, which is part of the Netatalk package when built with AppleTalk support, 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. Most major Linux distributions provide the AppleTalk kernel module by default, but others may need user intervention to enable.

For further discussion on how to work with the kernel module, see AppleTalk Kernel Module.

AppleTalk networking

Once you've confirmed that the OS kernel can speak AppleTalk, the next step is to get AppleTalk routing up and running.

The most simple scenario is when no other AppleTalk router exists on the local network, and a host computer with only one network interface. See the atalkd.conf manual page for an overview to how atalkd behaves when starting up.

If AppleTalk networking doesn't work out of the box (not visible in the Chooser), try the following steps.

First off, you want to make sure that atalkd starts up fully before the other Netatalk daemons. The atalkd daemon can take a minute or longer to be fully available to register AppleTalk services.

When in doubt, run the nbplkup command and validate that the default workstation services are registered.

Next up, you want to make sure that routing is working between the two machines you're trying to network. Obviously, you first need an Ethernet to LocalTalk bridge of some sort for the Netatalk host and classic Mac to communicate. This is out of scope for this guide. A Classic Mac OS machine will also register a default workstation name (usually the model name for that Mac) that will be visible on the AppleTalk network.

Therefore, if you run nbplkup on the Netatalk host machine, you should see both the Netatalk workstation and the classic Mac workstation. This is proof that routing is functioning correctly.

If this doesn't work, you want to make sure that the configuration in atalkd.conf matches the correct network interface (especially when you have many interfaces and/or bridges available.) And if you have other AppleTalk routers on the network, you may have to disable routing on your local atalkd instance.

You want to make sure that AppleTalk traffic is not routed over WiFi, unless you know for a fact that your WiFi router explicitly handles AppleTalk packages (e.g. Apple AirPort or other early 2000s routers marketed as AppleTalk compatible.)

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
$ echo "NETATALK IS AWESOME" | 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:

  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.

Clone this wiki locally