Some people using AppleTalk printers or running Mac OS 9 still want to use AppleTalk. While the AppleTalk protocol suite is considered deprecated by Apple these days, the large number of legacy devices makes discarding the protocol unfeasible.

Installing AppleTalk Daemons

Installation is easy, just use apt-get to install Netatalk.

sudo apt-get install netatalk

And wait for netatalk to run. If you get an error similar to:

Starting Netatalk services (this will take a while): nbp_rgstr: Förbindelsen dog ut (timeout)
Can't register laptop:Workstation@*
invoke-rc.d: initscript netatalk, action "start" failed.
dpkg: fel vid hantering av netatalk (--configure):
 underprocess post-installation script gav felkod 1
Fel uppstod vid hantering:
E: Sub-process /usr/bin/dpkg returned an error code (1)

Then try adding your AppleTalk connected interface (eth0, eth1, wlan0 etc) to the end of /etc/netatalk/atalkd.conf

sudo gedit /etc/netatalk/atalkd.conf

by typing the appropriate interface at the end of the file and try starting the services:

sudo /etc/init.d/netatalk start


AppleTalk Printing

Getting your Ubuntu installation to print to an AppleTalk printer is relatively easy.

First, provide CUPS with a working PAP (the Netatalk printing methodology) backend. You may download one from here. Once you have that file, cd to where that file is stored and:

sudo chmod +x pap

sudo mv pap /usr/lib/cups/backend

Now all you need to do is restart CUPS. You can do this with

sudo /etc/init.d/cups restart

This should provide you with AppleTalk printing.

Now, set up the printer by opening the Printing admin tool (System>Administration>Printing) and clicking the "New" button.

Before we go any farther we need to find the device URI, this can be accomplished by calling the backend without any arguments


This should return something like

network pap "HP LaserJet 4050 Series " "LaserWriter"

We want to take the device name and convert it into a pap address to use as the device URI. This is done by using the prefix "pap://" and converting any spaces into "%20". So in this case it would be


Note that in this case there was a space after the word "Series". This is important!

Now, under Devices select "Other" and enter the device URI we just found. Screenshot-New Printer.png

Click forward. Select your printer Make and Model and whatever options it may have. Once completed, print a test page to see if it works.

There you go. AppleTalk printing from Ubuntu! Enjoy.

Finding Your Printer URI

If you are having trouble finding the correct URI for your printer first call the backend without argument :


if this doesn't work, try using nbplkup


AppleTalk Names

An Ubuntu node will show up on the AppleTalk network as 'localhost'. This is due to 'hostname -s' returning localhost instead of using the real name (in /etc/init.d/netatalk).

To remedy this, change the appropriate line in /etc/hosts and move the real hostname in front of 'localhost.localdomain', for example:  realname localhost.localdomain localhost

There's an open bug report documenting the problem with said order in /etc/hosts that is causing trouble with other programs, too.


If nothing is coming out of your printer, debug the pap backend and view the log to see where problems may be coming from.

sudo gedit /usr/lib/cups/backend/pap

and uncomment out the lines that write out to the log file. (Delete the ##'s on lines that contain "echo")

restart cups and try to print another file

sudo /etc/init.d/cups restart

Now check the logs for any problems

sudo cat /tmp/pap.log

a sample log file should look like this

Sat Feb   7 16:34:05 EST 2009 new job in pap backend
uri pap://HP%20LaserJet%204050%20Series%20
new file    /var/tmp/22205.prn
copies  1
nbpname HP LaserJet 4050 Series
%%[ status: busy; source: EIO 2 (ATALK) ]%%
Normal exit

NOTE: if you see a line that says "NBP Lookup failed"

HP LaserJet 4050 Series :LaserWriter@*: NBP Lookup failed

You must restart netatalk and your printer should work again

sudo /etc/init.d/netatalk restart

Other Info

The following may be needed if you have more than one AppleTalk Zone or are having general problems.

With netatalk installed, run nbplkup to find the names of the AppleTalk printers on your network. Make a note of these names.

Edit /etc/cups/printers.conf (as root) to add the printer. Here's an example for a printer named "Laser Writer Select 360". The "LW360" you see is the name you'd like to see in Ubuntu. It can be almost anything. The "Laser Writer Select 360" name you see in the URL must be exactly the name that nbplkup gave you for the printer.

# Printer configuration file for CUPS v1.1.23
# Written by cupsd on Mon 25 Apr 2005 02:02:39 PM PDT
<Printer LW360>
Info LW360
Location Local zone
DeviceURI pap://Laser%20Writer%20Select%20360
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0

This example assumes a single, default AppleTalk zone. If you have more than one zone, the printer URL should end with %40 followed by the zone name.

# Printer configuration file for CUPS v1.1.23
# Written by cupsd on Mon 25 Apr 2005 02:02:39 PM PDT
<Printer LW360>
Info LW360
Location Local zone
DeviceURI pap://Laser%20Writer%20Select%20360%40zonefour
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0

Mozilla uses a newer Ghostscript engine than most Apple printers will support. If an error page stating this comes from the printer when you try to print from Firefox/Mozilla, change the default print string in Firefox/Mozilla's printing prefs to

gs -q -sDEVICE=pswrite -sOutputFile=- -dNOPAUSE -dBATCH -dMozConvertedToLevel2=true - | lpr ${MOZ_PRINTER_NAME:+'-P'}${MOZ_PRINTER_NAME}"


AppleTalk (last edited 2011-04-07 21:08:44 by k.dejong)