• Hello MLAers! We've re-enabled auto-approval for accounts. If you are still waiting on account approval, please check this thread for more information.

Release of MacIPRpi 6.02

mactjaap

68000
Release of MacIPRpi 6.02

https://www.macip.net/

Finally the new stable release of MacIPRpi -> MacIPRpi 6.02

At the heart is now Netatalk 4.1.1 and of course running macipgw out of the box on the 172.16.2.0/24 network.

Designed to run on a Raspberry Pi, MacIPRpi 6.02 provides a complete MacIP gateway out of the box, allowing LocalTalk Macintosh computers to access the internet and share files effortlessly. Here’s everything you need to know about this release:
  • Internet for vintage Macs
    • Surf the modern web with a LocalTalk-only Mac or an emulator like Basilisk II using MacIP.
    • Built-in MacIP gateway for 172.16.2./24 network, hostname mapping included.
  • Web Rendering Proxy (WRP) on port 8080
  • WebOne Proxy on port 8081
    • HTTP 1.x proxy that translates HTTPS and complex pages for old clients.
  • HTTP 1.1 to 1.0 converter on port 8082
    • Enables very old browsers to load modern sites.
  • Full cross-platform file sharing
    • Works with System 6–9 Macs, macOS, Linux, Windows, iOS, Android.
    • Supports AFP via Netatalk 4.1.1 and SMB via Samba.
    • Login as guest or with macipgw, or use anonymous FTP.
    • Shared directory is always consistent across systems.
  • AFP tools and scripting
    • AFP-Perl for scripting interactions with AFP shares (afp-discover.pl, afp-mdns-test.pl, etc.)
    • and.... chooser.pl is an attempt to make a command line Chooser.

      Code:
      root@maciprpi:~# chooser.pl
      Found AppleTalk AFP Server: maciprpi at 65280.4 (Port: 132)
      
      Found AppleTalk AFP Server: BasiliskII at 65280.123 (Port: 249)
      
      Available AFP Servers:
      [1] maciprpi (65280.4:132)
      [2] BasiliskII (65280.123:249)
      
      Choose a server (1-2):
    • afpfs-ng for FUSE-based AFP mounting. Example:

      Code:
      mount_afpfs "afp://localhost/MacIPRpi DISK" /tmp/afp
  • Print support
    • Auto-discovers AppleTalk printers.
    • Test with papd-test.sh (add --print to send a test page) or with check-maciprpi.sh --all.
    • Compatible with many printers.
  • Timelord time server
    • Time sync via AppleTalk.
    • Appears in the Chooser on vintage Macs.
  • Fully usable Linux desktop
    • Raspbian Pi OS Lite with LXDE desktop, kernel 6.6.51 aarch64.
    • Remote desktop via X2Go or RDP (mstsc /v:maciprpi.local).
    • Optional local desktop with monitor/keyboard.
    • Set autologin options with raspi-config.
  • Useful tools included
    • nmap, aecho, nbplkup, tcpdump -i eth0 atalk
    • check-maciprpi.sh for testing services and modules

      Code:
      root@maciprpi:~# check-maciprpi.sh
      Usage: check-maciprpi.sh [options]
      Options:
        -a                Run all tests except --print-page
        --help            Display this help message
        --webone          Check WebOne Proxy
        --url             Test URLs
        --services        Check required services
        --packages        Installed packages
        --tftp            Test TFTP functionality
        --afpfs-ng        Test afpfs-ng mount
        --afp-perl        Check afp-discover.pl
        --httpd           Check if the HTTPD homepage is accessible
        --print           Test print status
        --print-page      Send a real print job
        --ports           Test ports
        --samba           Test Samba
        --tcpdump         Test tcpdump to tun0, the 172.16.2.0/24 network
        --all             Run all tests including --print-page
        --all-no-print    Run all tests except --print-page (same as -a)
      Example: check-maciprpi.sh --webone --tftp
      Example: check-maciprpi.sh -a
  • Network services
    • SSH and Telnet enabled (user: macipgw, pass: macipgw; root allowed).
    • Anonymous FTP uploads to /AppleShare/SHARED_DISK/FTP/incoming
    • AppleTalk service discovery via Bonjour/mDNS (Avahi).
    • Dynamic motd shows all detected Apple/Mac devices.
  • Built-in web servers
  • Disk and system utilities
    • GParted pre-installed for disk management.
    • RPi Monitor available at http://maciprpi.local:8888
    • Splash screen control and boot options in raspi-config.
  • Software management
    • Use apt install <package> to add more tools.
    • Lightweight image, resizes to full SD card on first boot.
    • Runs on a 16GB card.
  • Links, credits and many thanks to all maintainers of the used packages, like:

MacIPRpi is your Swiss Army knife for vintage Mac networking — a full-featured bridge to the modern world.
 
Last edited:
Didn’t test it on a Rpi 3. Probably will work fine.
But the basis idea is that you can use MacIP in a AppleTalk only setting. I use a LocalTalk bridge to do so. But give it a try with your AirTalk card and let me know.
 
Thank you so much for this! I have used the heck out of my MacIPRpi 5, it's essentially become the hub of all my retro computing activities on my home network since I set it up in 2021. Low power always on bridge machine/retro file server, print server, browser proxy, and even bench "PC" next to my soldering station as I have it hooked up to a small LCD and Raspberry Pi keyboard and mouse so I can pull up websites/references when working on a project.

I have a 2nd slightly newer Raspberry Pi 4 (this one with 1.8Ghz CPU, 4GB of RAM and a 128GB SD card instead of 1.5 Ghz, 2GB and 64GB on my older one) and want to set it up in parallel to the old one.

To change the name of the server I edited /etc/hostname to "maciprpi6"

which seem to work for most things (the netatalk shares/services reflected the new name) but sudo complained:
"sudo: unable to resolve host maciprpi6: Name or service not known"

Code:
macipgw@maciprpi6:~ $ cat /etc/hosts
# Ansible managed
127.0.0.1   localhost maciprpi
::1         localhost ip6-localhost ip6-loopback

# The following lines are desirable for IPv6 capable hosts.
fe00::0     ip6-localnet
ff00::0     ip6-mcastprefix
ff02::1     ip6-allnodes
ff02::2     ip6-allrouters

Edited /etc/hosts 127.0.0.1 localhost entry to "maciprpi6" fixed this.

Looking at the beta thread I think this jibes, but seeing /usr/local/bin/appletalk-test.sh might need an update too? ..only if I care about AppleTalk activity being reflected on the RPi LED?
 
I've never used this before and I'm having a wee issue that I'm not sure how to resolve. I've imaged it onto an SD card and set it up on a raspberry pi 4. It boots up, I can log in via SSH, but when it comes up with the scan of the AppleTalk network I get:

Scanning your network for Macintosh and AppleTalk devices. List what is found:

macipgw is up and running! Use a 172.16.2.0/24 address on your old Mac.

I'd expect it to see either a LC520 on a LocalTalk to ethernet bridge, or an AIO G3 running MacOS 9.2 on ethernet, both with AppleTalk and file sharing enabled. They both can see each other and are connected via a time capsule. The Pi is also plugged into the back of the Apple Timecapsule, and I've tried it with a different Raspberry Pi running Netatalk 2.x (whatever version is installed with the piSCSI setup) and it works fine, so I don't think it's anything blocking AppleTalk traffic on this segment of the network.

If I run check-maciprpi.sh --all I get mostly running but a few things that pop up that aren't:

Service atalkd is NOT running.
Service papd is NOT running.
Service a2boot is NOT running.
Service timelord is NOT running.
Service cups is running.

Then further down:
Testing Port 23 (Telnet): maciprpi.local
Failed: Port 23 (Telnet) is closed on maciprpi.local (I'm not sure is that supposed to be working?)

Then at the very end:

Testing macipgw on tun0
macipgw started at boot in rc.local:
/usr/local/bin/macipgw -n 8.8.8.8 172.16.2.0 255.255.255.0 and iptables loaded.
Interface tun0 does not exist. Please check your network configuration.

I'm not familiar with an interface called tun0 so I'm not entirely sure how to diagnose this one. Any help would be greatly appreciated.

Edit:

From the AIO G3 I can connect to the appleshare using IP. I've also tried reimaging the sd card and setting up again but no change.
 
Last edited:
/usr/local/bin/appletalk-test.sh
Thanks your your nice words! Very welcome. Not many users will need something like the MacIPRpi … so support for my work is always nice!

You are right! Change the appletalk-test.sh script too. If not you will be missing the red blinking light.
 
I've never used this before and I'm having a wee issue that I'm not sure how to resolve. I've imaged it onto an SD card and set it up on a raspberry pi 4. It boots up, I can log in via SSH, but when it comes up with the scan of the AppleTalk network I get:

Scanning your network for Macintosh and AppleTalk devices. List what is found:

macipgw is up and running! Use a 172.16.2.0/24 address on your old Mac.

I'd expect it to see either a LC520 on a LocalTalk to ethernet bridge, or an AIO G3 running MacOS 9.2 on ethernet, both with AppleTalk and file sharing enabled. They both can see each other and are connected via a time capsule. The Pi is also plugged into the back of the Apple Timecapsule, and I've tried it with a different Raspberry Pi running Netatalk 2.x (whatever version is installed with the piSCSI setup) and it works fine, so I don't think it's anything blocking AppleTalk traffic on this segment of the network.

If I run check-maciprpi.sh --all I get mostly running but a few things that pop up that aren't:

Service atalkd is NOT running.
Service papd is NOT running.
Service a2boot is NOT running.
Service timelord is NOT running.
Service cups is running.

Then further down:
Testing Port 23 (Telnet): maciprpi.local
Failed: Port 23 (Telnet) is closed on maciprpi.local (I'm not sure is that supposed to be working?)

Then at the very end:

Testing macipgw on tun0
macipgw started at boot in rc.local:
/usr/local/bin/macipgw -n 8.8.8.8 172.16.2.0 255.255.255.0 and iptables loaded.
Interface tun0 does not exist. Please check your network configuration.

I'm not familiar with an interface called tun0 so I'm not entirely sure how to diagnose this one. Any help would be greatly appreciated.

Edit:

From the AIO G3 I can connect to the appleshare using IP. I've also tried reimaging the sd card and setting up again but no change.
My first advice would be to connect the RPi to a switch or switch port on your modem. I’m afraid the Time Capsule is doing “something”. Could you test this?

Nice that you used the test script!
 
Could you test this?
I’ve now tried it with a dumb 8 port 10mbit Ethernet switch completely disconnected from the rest of my network, and same issue. I set the Pi to have a static IP of 10.0.1.21, and the rest on the same range with same subnet mask. I’ve also tried it directly connected to my main network route (Unifi UDMP) but no luck there either.. but then I wasn’t expecting it to like apple talk traffic either.

I’m a tad confused as I was sure that at the very least should have worked.. which makes me think there’s something wrong with the pi.. but then.. why does everything else work?
 
I’ve now tried it with a dumb 8 port 10mbit Ethernet switch completely disconnected from the rest of my network, and same issue. I set the Pi to have a static IP of 10.0.1.21, and the rest on the same range with same subnet mask. I’ve also tried it directly connected to my main network route (Unifi UDMP) but no luck there either.. but then I wasn’t expecting it to like apple talk traffic either.

I’m a tad confused as I was sure that at the very least should have worked.. which makes me think there’s something wrong with the pi.. but then.. why does everything else work?
Hmm. How frustrating! This should absolutely work. Well. If you want we could try to find out what is wrong. Did you look at the logs?
 
Hmm. How frustrating! This should absolutely work. Well. If you want we could try to find out what is wrong. Did you look at the logs?
One thing what sometimes is a problem .... a rotten / halve broken SD card. You could try to image a new one?
 
Apologies on the delay in replying, I managed to put my back out the other day so moving around to reconnect things is rather.. painful.

I've made some interesting discoveries. If I plug the pi directly into my unifi 48 port switch, set it to the appropriate VLAN (with IGMP snooping turned off), and then connect the dumb hub to another port and set it to the same VLAN.. it works. But only in this setup. As soon as I move it back it ceases to work... which has my mind boggled a bit. But regardless.. it does work and in a configuration that'll work for me.

One other wee question.. is there an easy way to disable the wrp? I want to combine this all into one system with my piSCSI. I've been able to install the software for that and seems to be working, and can configure it via the command line, but because wrp is using port 80 it's blocking access to the web interface which does make using it so much easier. I did try changing the port using the -l operator and whilst that's allowed me to change it from port 8080 to 8089, it hasn't stopped it from hijacking port 80 as well. Even stopping it doing that may well do what I need.
 
Last edited:
Apologies on the delay in replying, I managed to put my back out the other day so moving around to reconnect things is rather.. painful.

I've made some interesting discoveries. If I plug the pi directly into my unifi 48 port switch, set it to the appropriate VLAN (with IGMP snooping turned off), and then connect the dumb hub to another port and set it to the same VLAN.. it works. But only in this setup. As soon as I move it back it ceases to work... which has my mind boggled a bit. But regardless.. it does work and in a configuration that'll work for me.

One other wee question.. is there an easy way to disable the wrp? I want to combine this all into one system with my piSCSI. I've been able to install the software for that and seems to be working, and can configure it via the command line, but because wrp is using port 80 it's blocking access to the web interface which does make using it so much easier. I did try changing the port using the -l operator and whilst that's allowed me to change it from port 8080 to 8089, it hasn't stopped it from hijacking port 80 as well. Even stopping it doing that may well do what I need.
Fantastic that you found the problem! A setup with VLAN's can complicate the situation. But you now got it working.

About port 80 on the MacIPRpi. On this port is the small web server running: lighttpd
Code:
ss -ltnp | grep ':80 '
LISTEN 0      1024         0.0.0.0:80        0.0.0.0:*    users:(("lighttpd",pid=1006,fd=5))
LISTEN 0      1024            [::]:80           [::]:*    users:(("lighttpd",pid=1006,fd=4))

( This commando will show you all open ports and services:
Code:
ss -ltnp
)

If you want to stop lighttpd you can do this as root.
Code:
systemctl stop lighttpd.service
# stop from starting after a reboot
systemctl disable lighttpd.service
# just to check if it is disabled and stopped
systemctl status lighttpd.service

If you still would like to stop wrp altogether do the same for this service:

Code:
systemctl stop wrp.service
systemctl disable wrp.service
systemctl status wrp.service
 
A setup with VLAN's can complicate the situation
It certainly can, which is why I was so confused things weren't working even when it wasn't connected to a modern network at all.

( This commando will show you all open ports and services:
Code:
ss -ltnp
)

If you want to stop lighttpd you can do this as root.
Code:
systemctl stop lighttpd.service
# stop from starting after a reboot
systemctl disable lighttpd.service
# just to check if it is disabled and stopped
systemctl status lighttpd.service

AHA that was it. I'd tried disabling the wrp service but it still didn't work so thought I was missing something. Does lighttpd get used for anything else?
 
lighttpd is only use as web server. Just to test old browser which are not capable of making a secure https connection. No problem to disable it. You will only mis a "surfing the web" page of the first web site at CERN and some useful links.


basiliskII.png
 
Disk and system utilities
  • GParted pre-installed for disk management.
  • RPi Monitor available at http://maciprpi.local:8888
  • Splash screen control and boot options in raspi-config.

To enable the Ethernet port stats in the RPi Monitor homepage and statistics edit this file:

Code:
sudo pico /etc/rpimonitor/template/network.conf

Uncomment the config (remove the leading "#") from these lines:

Code:
dynamic.10.name=net_received
dynamic.10.source=/sys/class/net/eth0/statistics/rx_bytes
dynamic.10.regexp=(.*)
dynamic.10.postprocess=$1*-1
dynamic.10.rrd=DERIVE
dynamic.10.max=0

dynamic.11.name=net_send
dynamic.11.source=/sys/class/net/eth0/statistics/tx_bytes
dynamic.11.regexp=(.*)
dynamic.11.postprocess=
dynamic.11.rrd=DERIVE
dynamic.11.min=0

web.status.1.content.8.name=Network
web.status.1.content.8.icon=network.png
web.status.1.content.8.line.1="Ethernet Sent: <b>"+KMG(data.net_send)+"<i class='icon-arrow-up'></i></b> Received: <b>"+KMG(Math.abs(data.net_received)) + "<i class='icon-arrow-down'></i></b>"

web.statistics.1.content.2.name=Network
web.statistics.1.content.2.graph.1=net_send
web.statistics.1.content.2.graph.2=net_received
web.statistics.1.content.2.graph_options.yaxis={ tickFormatter: function (v) { if (Math.abs(v) > 1048576) return (Math.round(v*10/1024/1024)/10) + " MiB/s" ; if (Math.abs(v) > 1024) return (Math.round(v*10/1024)/10) + " KiB/s" ; else return v + " B/s" }, }
web.statistics.1.content.2.ds_graph_options.net_send.label=Upload bandwidth (bytes)
web.statistics.1.content.2.ds_graph_options.net_send.lines={ fill: true }
web.statistics.1.content.2.ds_graph_options.net_send.color="#FF7777"
web.statistics.1.content.2.ds_graph_options.net_received.label=Download bandwidth (bytes)
web.statistics.1.content.2.ds_graph_options.net_received.lines={ fill: true }
web.statistics.1.content.2.7ds_graph_options.net_received.color="#77FF77"

And add comment tags to these lines:

Code:
#web.status.1.content.8.line.1="To activate network monitoring, edit and customize <font color='#AA0000'><b>network.conf</b></font>"
#web.status.1.content.8.line.2="Help is available in man pages:"
#web.status.1.content.8.line.3="<font color='#AA0000'><b>man rpimonitord</b></font> or <font color='#AA0000'><b>man rpimonitord.conf</b></font>"

Then restart the service:

Code:
sudo service rpimonitor restart
 
I've been trying to get my ImageWriter LQ (with LocalTalk card) to work but I'm having some difficulty. When I run check-maciprpi.sh --all it runs through all the checks but when it gets to the ImageWriter it detects it but then gives the following error:

Checking for printers
Searching for available AppleTalk printers...
Found AppleTalk printers:
ImageWriter LQ
Checking status of "ImageWriter LQ"... Not responding
Sleep for 2 seconds.....
Sending Test Print to Available Printers
Searching for available AppleTalk printers...
Found AppleTalk printers:
ImageWriter LQ
Checking status of "ImageWriter LQ"... Printer "ImageWriter LQ" is not responding. Skipping...
Sleep for 2 seconds.....

The printer is working fine from other native macOS systems on the network (I tested from a LC520 directly on the LocalTalk network, and also on a G3 system connected via ethernet via a LocalTalk bridge). I've tried reading through the papd documentation on the Netatalk manual, but alas it hasn't really helped me understand where it's falling over.. any ideas why it's failing to recognise it?
 
Ah now.. I've just been looking at the documentation for Netatalk and it'd seem that that functionality was added in v4.2.0 and your build is v4.1.1 from what I can gather? If that's correct is it safe to upgrade to v4.2.1 using the instructions on https://netatalk.io/install or would the steps be different because it's a customised installation location?

Apologies for the n00b questions. I used to have a fair amount of linux experience 25 years ago but I've just not used it much at all since the end of the 90s and frankly I can't remember what the heck I'm doing.
 
Back
Top