netatalk.io

AppleTalk Kernel Module


AppleTalk Kernel Module

Netatalk 2 relies on AppleTalk support in the kernel to make use of the DDP transport layer. The atalkd daemon will attempt to dynamically load the kernel module if not detected, and errors out if all attempts fail:

Address family not supported by protocol

You can still use Netatalk’s DSI transport layer (TCP/IP) without AppleTalk support in the kernel.

At the time of writing, Linux and NetBSD are known to have actively maintained AppleTalk kernel modules. At least Debian Linux (as of Bookworm) comes with the kernel module compiled in by default.

Linux

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 may have to compile support into the kernel. This section describes the modular approach, but it should also be possible to compile the AppleTalk module directly into the kernel for a slight performance boost.

Compiling from source

This section will not describe the entire process, but rather follow the steps in the Raspberry Pi documentation. Do the steps in the documentation in this order:

Broadcast packets handling issue

At the time of writing, the Linux kernel module has a known bug with multi-interface routing. In short, the bug will cause atalkd to send responses on the first socket listening on port 6 that it finds, regardless of which interface packets originated from. This may lead to devices on the network not consistently showing up in the Chooser on Mac clients on the same network. E.g. appearing and then disappearing.

There is a patch for this bug available that you can apply if this affects you. The patch has been accepted into the Linux kernel and is expected to be included in a version after 6.8 or 6.9.

FreeBSD

As of FreeBSD 9.3, the kernel comes with an AppleTalk kernel module, confusingly named “netatalk”, located under sys/netatalk in the kernel source tree.

The AppleTalk kernel module is available in FreeBSD’s default configuration, and should work with netatalk out of the box.

Solaris

Older versions of Netatalk distributed code for an AppleTalk module for Solaris (SPARC architecture), located under sys/solaris in the netatalk source tree. It has not been confirmed working with contemporary Solaris releases.


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-05-09