AppleTalk Kernel Module
AppleTalk Kernel Module
Netatalk 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 with the following message 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. Many distros, notably Alpine, Debian, and Ubuntu, all ship with the AppleTalk module enabled out of the box.
Other distros, such as Fedora, may have an active blacklisting in the default configuration that needs to be disabled first. See the Installing Netatalk on Fedora Linux guide for more info.
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:
- Building the Kernel Locally
- Apply the Default Configuration
- Preparing to Configure
- Using menuconfig
- Networking support —> Networking options —> Appletalk protocol support
- Press M to select this
- Select Appletalk interfaces support and press M again
- Save and exit menuconfig
- Building the Kernel
- Reboot the system once the process is completed (compilation may take an hour or longer on slower systems)
- Check that the
appletalk
kernel module has been loaded, as per the above - If the module isn’t automatically loaded, add a line to /etc/modules
- appletalk
Broadcast packets handling issue
The module in Linux kernel v6.8 and earlier 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 included as of v6.9.
NetBSD
The NetBSD 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 NetBSD’s default configuration, and should work with atalkd
out of the box.
Solaris
Older versions of Netatalk (final: 2.3) 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-12-09