How to get UNIX to speak AppleTalk

Wanna know how I did it, eh? (As for why, I always answer "ChopLifter", "Rescue Raiders", and "Karateka".)

Well, I'll preface this by saying that it was not easy. The two packages that are out there for getting UNIX to speak AppleTalk are far from polished, due to (I think) a lack of interest.

NOTE: Windows NT 4.0 also comes with an AppleTalk module. Unfortunately, I had the same problem with NT that I had with Netatalk: I could only log in as guest. Not as big a deal with NT, and it sure is easy to configure, but who wants NT on their network. :)

Netatalk - Current version is 1.4b2, and has been there for about two years. It has a kernel module that must be installed, plus a few daemons to configure. This one has a built in AppleTalk router, which you need to seed the network number. I built it and installed it, but the Apple could never communicate very well with the software, and when it did, I had to login as guest, with no privledges on the filesystem that I was accessing. If there were any problems reading the file, I had to fix the permissions on the file in UNIX land.

CAP - Current version is 6.0, patchlevel 198. CAP is the package I use, and it works flawlessly once configured. When you do download this package, you will need to get the version patched to 100, and the 98 suceeding patches, and apply them. Be sure to configure CAP at compile time to use EtherTalk. I'm not sure in what instance you would configure it for LocalTalk, since EtherTalk runs over Ethernet, where as LocalTalk runs over Apple's cabling system or PhoneNet, neither of which a UNIX machine has.

CAP comes with UAB, the UNIX AppleTalk Bridge. UAB has been superseded by another package called UAR, the UNIX AppleTalk Router. UAR supports phase II AppleTalk, which will allow you to have multiple zones. Get UAR and build it. Configure it to be the seed router, and pick a zone and a network number.

On the Apple II, configure slot 7 as the LocalTalk interface. If you have an Apple //e, you will need the Apple Workstation card, which you install into the machine. With an Apple IIgs, you go into the Control Panel and configure one of the two serial ports at the rear of the machine as the AppleTalk port. AppleTalk runs at 115200 baud, which is a serial baud rate, so I guess that's how they make the hardware do both. Note that you will give up one serial port, either the modem or the printer port to do this. Once configured, plug in the gateway to the sacrificial port.

Once I got UAR running, the Dayna Mini-Etherprint picked up the default zone, etc. CAP comes with a utility called atlook that will allow you to see the devices that are attached to your AppleTalk network. It's output looks something like this:

neutron$ ./atlook
abInit: [ddp:   0.06, 252] starting
Looking for =:=@morena ...
  1 - neutron:AFPServer@morena                 [Net:  0.6   Node:252 Skt:133]
  2 - LaserWriter:LaserWriter@morena           [Net:  0.6   Node:252 Skt:134]
  3 - neutron-hme0:UAR@morena                  [Net:  0.6   Node:253 Skt:  4]
  4 - neutron:UNIX/CAP@morena                  [Net:  0.6   Node:252 Skt:130]
  5 - appleIIgs:appleIIgs@morena               [Net:  0.6   Node:251 Skt:131]

In this list, you see the AFPServer (CAP's file service), the LaserWriter (which is CAP's AppleTalk to LP service), the UAR seed service bound to the Ethernet interface, and CAP itself. The last entry is the Apple IIgs. Note that the Dayna box does not show up, since it is a LocalTalk-EtherTalk gateway.

For a while, I used PhoneNet to connect my DEClaser 1152's LocalTalk interface to the gateway as well (the Dayna can handle two devices), but the 1152 didn't like something about the PostScript from the IIgs, and it would always print garbage. Even though CAP will do printing, I have yet to get a good printout from either connection method.

Here are a few configs for CAP:

# afpvols
/home/creek/apple2:apple2

I defined the path that is available to all users (my apple2 archive dir). You can also use a .afpvols file in your home directory to define individual ones.

# etalk.local
interface       "hme0"
netRangeStart     0.6  
netRangeEnd       0.6  
thisNet           0.6  
thisNode        252
thisZone        "morena"
bridgeNet         0.6  
bridgeNode      253
bridgeIP        127.0.0.1
nisNet            0.6  
nisNode         252

Note that all I did in the etalk.local file was enter the interface name. The other stuff is pulled from the seed router (UAR).

# uar.conf
interface hme0
        node 253
        network 6
        networklo 0
        networkhi 65534
        zone morena
        zonelist morena
        phase 2
        cap on
Here, I entered all of the information, but selected mostly at random. The node number was selected at the top of the range on purpose. Some implementations of AppleTalk protocol stacks won't talk to a gateway that is not at the top of the node range.

The information on this page may not be totally accurate. I did this more than a year ago, and have not touched it since.


Back to Toby's Apple ][ page