logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·31.10.26
← Back to news

TailTalk: A modern async user space AppleTalk stack with Rust and Tokio

Original article
github.com|52 points|13 comments|by zdw|Sep 12, 2026

TailTalk: A Modern Async AppleTalk Stack

Crates.io docs.rs

TailTalk serves as a comprehensive toolkit designed to implement AppleTalk entirely within user space. It is compatible with Linux, Windows, and macOS, supporting both EtherTalk and LocalTalk network environments.

Project Philosophy: The goal is a "zero config" experience. Much like the original Macs, the software is designed to be "plug-and-play," allowing users to launch the stack and have it function immediately without tedious manual configuration.

🛠️ Technical Foundation

The project is written from the ground up using Rust and the Tokio async runtime. It maintains total independence from kernel drivers or Netatalk. The only requirements are a raw socket or a TashTalk-compatible hardware interface.

Architecture Overview

TailTalk can operate in two modes:

  1. In-Process: The AARP/DDP underlay runs directly within the application (default).
  2. Daemon Mode: A shared background process, tailtalkd, manages interfaces and routing. It communicates with clients (via Rust or C) using a protobuf protocol over UDP or Unix sockets.

🌟 Key Features & Capabilities

The TailTalk GUI

The primary user-facing application is optimized for use with TashTalk USB. Its capabilities include:

  • AFP Server: Compatible with nearly every LocalTalk-equipped vintage Mac.
  • Disk Imaging: Ability to import floppy images and Stuff-It archives into the share path while preserving resource forks.
  • Printer Bridging:
    • Share classic LaserWriters, ImageWriters, and StyleWriters as modern AirPrint/IPP printers.
    • Share modern printers back to classic Macintosh systems.

Supported Protocols

The stack provides async APIs and packet parsers for the following:

  • AARP (Address Resolution Protocol)
  • DDP (Datagram Delivery Protocol)
  • NBP (Name Binding Protocol)
  • ATP (Transaction Protocol)
  • PAP (Printer Access Protocol)
  • ASP (Session Protocol)
  • AFP (Filing Protocol)
  • Data Stream Protocol

Current Status

  • Basic async stack implementation
  • TashTalk USB support
  • AFP and Printing services
  • Router-based network joining (Currently in progress; not yet in mainline)

Note: This is a prototype. Expect some bugs and missing functionality.


🏗️ Building the Project

Prerequisites

  • Install Rust 1.90+ via rustup.rs.
  • Install cargo-packager (used for AppImage, App bundles, and Windows installers).

Windows Specifics:

  • Install MSVC prerequisites.
  • Download the npcap SDK.
  • Set the LIB environment variable to the SDK library path: C:\npcap-sdk-1.13\Lib\x64

Compilation Steps

To build the entire suite:

cargo build --release

To build only the GUI:

cargo build -p tailtalk-gui --release

Packaging by OS

Operating SystemCommandOutput Format
Linuxcargo packager --release -f appimage -p tailtalk-guiAppImage
macOScargo packager --release -p tailtalk-guiApp Bundle
Windowscargo packager --release -f nsis -p tailtalk-guiNSIS Installer

Binaries are located in target/release/ and bundles in dist/.


🔌 TashTalk USB Setup

The hardware utilizes a Silicon Labs CP210x USB-to-UART bridge. Hardware IDs: VID=10c4,PID=ea60\text{VID} = \text{10c4}, \text{PID} = \text{ea60}VID=10c4,PID=ea60

OS Configuration

Linux To avoid running as root, implement a udev rule:

echo ' SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", TAG+="uaccess" ' \
| sudo tee /etc/udev/rules.d/99-tashtalk-usb.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

Re-plug the device after running these commands.

Windows

  1. Install the CP210x VCP driver from Silicon Labs.
  2. Install npcap 1.88.

macOS

  • v11+: Native support for CP2102N.
  • v10.12 - v10.15: Requires the Silicon Labs VCP driver.

EtherTalk Configuration

EtherTalk is enabled by default on macOS. For other platforms, it is an opt-in feature requiring libpcap (or npcap on Windows):

cargo build -p tailtalk-gui --features ethertalk