Netatalk: AFP over Appletalk and TCP/IP

Sharing files with retro computers can sometimes be problematic. Nowadays with Samba and ssh it’s easy. But back then such sharing protocols were nowhere near as ubiquitious as we find them now.

AppleTalk Filing Protocol (AFP) was a fairly ubiquitous sharing protocol in the Mac world until Apple deprecated it in favour of SMB (SAMBA). AFP was still around until Apple finally removed it with the release of macOS Big Sur. I’d used a mixture of AFP, NFS and Samba up to that point for sharing files and music/video. But then I got rid of both NFS and AFP and switched to SAMBA. Since then I’d also setup a new NAS and retired the old one for just backup. I never bothered with configuring AFP on the new NAS.

Anyway with my new found interest in Mac OS9 I found myself regretting getting rid of AFP. It’s been around in the Mac world for an age and even before Mac moved to only TCPIP and had AppleTalk as the network protocol.

Netatalk is a project to keep AFP alive. It’s actively developed and packages are available for Debian (which my new NAS runs!). However, when I went to install it it wanted to install a LOT of other packages too. My NAS is headless but runs a plain vanilla Debian. Netatalk wanted to pull in a lof of zeroconf stuff and even some audio libraries. Forget that I want to keep my minimal NAS!

So I switched to Docker of which there are official images available for the Netatalk project. After a bit of messing that runs fine. The image builds your afp.conf file from a series of environment variables that you can set in the Docker Compose file. I will post this in a few weeks when I’ve added a few other cool stuff for Mac OS9. For example Web Rendering Proxy (WRP) which allows you to access HTTPS sites by serving a image with clickable areas to the retro browser on the retro mac!

Netatalk3 is mainly aimed at OSX/macOS. It uses Appletalk but for AFP it shares this over TCP/IP. This works fine for Mac OS9 as long as you manually connect using the IP address, but hey we want the simplicity of auto discovery! I struggled for some time with this before realising that I need to use Netatalk2 which still supports sharing AFP over Appletalk. This will share AFP over Appletalk via TCPIP, rather than AFP over TCPIP. All quite confusing. I was further confused by finding out if I used the standard Docker image of Netatalk3 then Mac OS9 failed to mount the share. Whereas if I built the image myself (from the same Git repository that the developers build their Docker image) then it worked fine! This red herring made me waste quite a bit of time until I actually read the Netatalk documentation!

Anyway once I realised this I switched my Docker compose file to use the netatalk2 image and Mac OS9 immediately saw the share (with netatalk3 I had to manually enter the IP address). Now it even allowed me to save the login details into the Keychain.

Chooser on an old retro Mac OS9 desktop.
Here’s my NAS (U2) in Chooser. Note all my machines are called after whatever music is playing. I used to love U2 but not since the eighties! But it was playing on the radio so….
an AFP login dialog on a old retro Mac OS9 desktop.
The user/password is still the default one for Netatalk! But it’s added to the Keychain.

The NAS share is also served by SAMBA so I can connect from it from my main Mac and Linux workstation. Both protocols give read access to guests but only RW to a logged in user.

a network share on a old retro Mac OS9 desktop.
The afpshare folder.
The Network Browser

Retro Again – G4 Mac Mini Running Mac OS9

I’ve just got a G4 Mac Mini up and running Mac OS9. About six months ago I gave away a MDD (Mirror Disk Door) Mac, that I’d been keeping around in order to install Mac OS9. I got fed up of it hanging around and since it would not boot onto Facebook Marketplace it went But about a month ago I spotted a post in the r/vintageMacs subreddit, where somebody had started buying old G4 Mac Minis, upgrading them with SSD, then installing a hacked version of Mac OS9 that installed on them.

The G4 Mac Mini was only ever shipped with OS X. It ran Classic, but would not boot Mac OS9. Turns out [a few clever people on the macos9lives forum had swapped out the rom for the G4 Cube and messed about with it to boot Mac OS9. There’s an ISO of an installer for the unsupported G4 Mac Mini on that forum.

This is now the fastest G4 that will run Mac OS9. I guess there’s the G5 Mac Pro, but as of yet nobody has done this one, and I guess it will never happen as that would require a new kernel?. However, there are plenty of G4 Mac Minis out there for next to nothing.
These have IDE discs (the Intel Mac Mini moved to SATA). These clever people have also searched mSATA/IDE adaptors. There are so many of these available for next to nothing. I guess meant for somebody to plug into their old laptop they want to keep going.

So on eBay I went and got an Integral 128GB mSATA Internal SSD together with a Chenyang SA-106 CY mSATA Mini PCI-E SATA SSD to 2.5 inch IDE 44pin Hard Disk Case Enclosure. I removed the plastic case to increase air flow though.


I initially struggled as I could not get the optical drive to work. At first I thought it was because a few posts said the drive on the G4 Mac Minis would not recognise a 700mb cdr. So I found a pack of (expensive!) 650mb CDrs. But these failed too. However, I remembered that I had a cheap IDE-USB adaptor that I bought (for reasons I do not remember). I used OSX and Super Duper to create a bootable partition on a USB connected drive (for some reason two old Firewire drives I had would just not work). I then booted from these and used a tool called iBored to image the install ISO to the original drive still in the Mac. I then booted from the installer on the original disk, installed (using the Apple Restore IMG on that ISO) to the adaptor connected mSATA drive, swapped the drives over and fairly soon I was running Mac OS9 on that G4 Mac Mini.

Of course it was not as simple as that. Turns out my Mac Mini was the 1.5Ghz one. This has extra difficulties that the earlier Macs did not. Graphics was a pain. VGA allowed me to run my Dell 1920×1200 at fill res. But under DVI the screen was corrupted. But I found an extra driver on the macos9lives forum that solved that for me. Well nearly as I cannot go above 1900×1080.

The optical drive still did not work. I bought a new one that also failed as it was a generic rather than an Apple device. I thought only the OldWorld Macs needed those. I even dug a drive out of an old Macbook Pro. Which also failed. But I then found out that Mac OS9 will boot from a IDE drive connected via this USB/IDE device. I guess as it presents itself to the Mac as an IDE device (in the Mac OS9 System Profiler it is listed as an ATA device). I eventually had to install a second time and this made swapping the drives redundant and so I had no need of an optical drive.


Configuration on install

Mac OS9 is fine with DHCP, although the fairly dumb “registration” process asks you all sorts of daft questions that perhaps were relevant then, but are fairly archaic and annoying now. e.g. POP server, “do you want to connect via modem” etc..

Sharing files

For sharing Netatalk is an AFP server (remember Apple have deprecated this in favour of SMB3) that runs fine on Debian. Rather than install it using APT, which then pulls in all sorts of stuff to get zerofconfig network discovery working Avahi, mDNSResponder etc.) I used a Docker image. I could not get authentication working, so I had to change the afp.conf to allow anonymous discovery. Then creating an SMB share of the same folder I can easily share files.