68kMLA Classic Interface
This is a version of the 68kMLA forums for viewing on your favorite old mac. Visitors on modern platforms may prefer the main site.
| Click here to select a new forum. | | MacIPRpi beta release 6.02 | Posted by: mactjaap on 2025-01-08 02:16:23 I'm very happy to announce the beta release of MacIPRpi 6.02!
Made a complete update of system and packages and spend a lot of time to make it more easy to upgrade. At the heart is now Netatalk 2.4.10 and macipgw.
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:
- What is a MacIPRpi?
- MacIPRpi transforms a Raspberry Pi into a MacIP gateway, enabling TCP/IP communication for LocalTalk-only Macs.
- Perfect for vintage Macintosh enthusiasts and modern users alike, it supports seamless file sharing and internet access even with LocalTalk-only.
- Key Features in MacIPRpi 6.02:
- MacIP Gateway Functionality
- Provides internet access for LocalTalk-only Macs by macipgw.
- Works with hardware LocalTalk bridges (e.g., AsantéTalk) or emulators like BasiliskII.
- File Sharing Across Platforms
- Full file-sharing support for classic Macintosh systems (System <6, 7, 8, 9), Mac OS X, Windows, Linux, iOS, and Android.
- Access for guest user and local users.
- Web Rendering Proxy
- Browse modern internet pages with vintage web browsers using the Web Rendering Proxy on port 8080.
- HTTP Proxies for Old Browsers
- HTTP 1.1 to HTTP 1.0 proxy (port 8082) for older web browsers with only http 1.0 support.
- WebOne proxy (port 8081) handles HTTPS and makes modern web sites accessible for vintage browsers.
- TimeLord
- Revived AppleTalk Time Server, accessible via Chooser for vintage systems.
- Diagnostics and Network Tools
- Tools like nbplkup, tcpdump, nmap, and aecho pre-installed for testing and troubleshooting.
- Updated dynamic MOTD showing AppleTalk devices and network details.
- Web Server
- Hosts a historical replica of the first CERN website on port 80 for testing vintage browsers.
- Command-Line Utilities and Desktop Environment
- LXDE for graphical use via X2Go, RDP, or directly with monitor/keyboard/mouse.
- Utilities like Avahi, GParted, and more.
- Ease of Use and Setup
- Automatic SD card resize on first boot (minimum 8GB recommended).
- SSH and Telnet access enabled by default.
- Supported Platforms
- Tested on Raspberry Pi 4, with potential support for other models like Raspberry Pi 5 (feedback welcome).
- How to Get Started:
- Download the image from: https://www.macip.net/beta.html
- Write the image to an SD card using dd or Raspberry Pi Imager.
- Connect the Raspberry Pi to your network via Ethernet (no WiFi support).
- Default login credentials:
- Username: macipgw
- Password: macipgw
- Credits for all the software and thanks to:
Your feedback is appreciated!
Reach out to me at info (at) macip.net or here at the 68kmla forum.
https://68kmla.org/bb/index.php?members/mactjaap.895/ | Posted by: Fizzbinn on 2025-01-10 19:54:56 Very cool! Downloaded, going to play with it this weekend! | Posted by: Fizzbinn on 2025-01-12 20:00:26 So, I have it up and running on a spare RPi 4, connected to file sharing okay, but haven't done much else testing yet. One thing I noticed it I can't get Chromium to launch from the desktop, Firefox works though.
I have my current MacIPRpi 5 Pi configured as a CUPS print server for my AppleTalk only LaserWriter 4/600 PS and looks like I'll need to work on getting that setup again. I was hoping that Netatalk 2.4.10 would come with the pap stuff needed for CUPS.
I had to change the hostname (picked "maciprpi6") as the default conflicted with my current v5 MacIPRpi but it seems that name might need to be changed in more than one place ...or might jsut be confusing my self. | Posted by: mactjaap on 2025-01-13 14:19:15 Thanks for testing!
I can launch Chromium in a remote session like XRDP (rdesktop) or X2Go. I will test with monitor and keyboard too. Maybe that is the problem?
However.... There is a setting which prevents a normal screen!! I can solve it and will do in the final version.
You can read about this problem here and also how to solve it for now:
I have a Raspberry Pi 4 (4GB) that works fine graphically when I remote desktop into it, as soon below However, when I open Firefox or Chromium, I get distorted graphics. Additionally, when I use...
raspberrypi.stackexchange.com
About printing. I have to be honest... I never have printed from / or with help of the MacIPRpi! So... would be nice to know how to do this, so I can add it.
papd.service is always started at boot.
● papd.service - AppleTalk PAP printer server daemon
Loaded: loaded (/lib/systemd/system/papd.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-01-13 23:00:25 CET; 13min ago
Docs: man:papd(8)
man:papd.conf(5)
https://netatalk.io/
Process: 1644 ExecStart=/usr/local/sbin/papd (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 1575)
CPU: 17ms
CGroup: /system.slice/papd.service
└─1650 /usr/local/sbin/papd
Jan 13 23:00:25 maciprpi systemd[1]: Starting papd.service - AppleTalk PAP printer server daemon...
Jan 13 23:00:25 maciprpi systemd[1]: Started papd.service - AppleTalk PAP printer server daemon.
The hostname... Hmmm yes you are right. Never thought about two MacIPRpi in a network. Maybe I can make this configurable.
With migration from 5 to 6 this can be handy. I will think about it, because not only the hostname has to change, also some values of AFPD and SAMBA, etc.
Again ... thank you very much for your feedback.
BTW ....... It would be great if anybody with a Raspberry Pi 5 could test too. | Posted by: slipperygrey on 2025-01-13 22:22:34 Good to see a refresh of maciprpi! I'm curious what base OS you're using now?
It's also encouraging to see that you're on a supported and secure release version of netatalk now.
May I ask what it would take for you to migrate to the netatalk 4.x release series? Is there some technical reason holding you back? Please note that the 2.4 release series will receive security patches until September 2025, but after that we plan to EOL it.
A few benefits of netatalk 4.x over 2.4:
- Coexistence with Samba (avoid risk of filesystem metadata corruption)
- AFP 3.4 compliance
- Extended Attributes metadata (more reliable than AppleDouble)
- Bundled and improved macipgw (such as a macipgw.conf configuration file)
- Tons of bug fixes
Ultimately it's your call. But I'm invested in setting you up for success in adopting the latest and best supported version. | Posted by: slipperygrey on 2025-01-14 10:32:03 @mactjaap Regarding Fizzbin's problem, do you remember if you had all CUPS dependencies installed when you built netatalk?
It is possible to build papd without CUPS, at which time you get a traditional BSD line printer daemon interface instead. | Posted by: mactjaap on 2025-01-14 12:49:27
Good to see a refresh of maciprpi! I'm curious what base OS you're using now?
It's also encouraging to see that you're on a supported and secure release version of netatalk now.
May I ask what it would take for you to migrate to the netatalk 4.x release series? Is there some technical reason holding you back? Please note that the 2.4 release series will receive security patches until September 2025, but after that we plan to EOL it.
A few benefits of netatalk 4.x over 2.4:
- Coexistence with Samba (avoid risk of filesystem metadata corruption)
- AFP 3.4 compliance
- Extended Attributes metadata (more reliable than AppleDouble)
- Bundled and improved macipgw (such as a macipgw.conf configuration file)
- Tons of bug fixes
Ultimately it's your call. But I'm invested in setting you up for success in adopting the latest and best supported version. Absolutely! MacIPRpi will be updated to Netatalk 4.*
I was in a hurry to release.. so I used 2.4.10. I had all the configuration, Ansible playbooks, macipgw configuration ready.
Now I have been reading about Netatalk 4. What a fantastic project!! I think I understand how it works with the new configuration files. More Samba style. Maybe I need a little bit help....
__ __ ___ ____ ____ ____ _
| \/ | __ _ ___|_ _| _ \| _ \| _ \(_)
| |\/| |/ _` |/ __|| || |_) | |_) | |_) | |
| | | | (_| | (__ | || __/| _ <| __/| |
|_| |_|\__,_|\___|___|_| |_| \_\_| |_|
Welcome to this MacIPRPi running on Raspberry Pi OS
Debian GNU/Linux 12 (bookworm) 6.6.51+rpt-rpi-v8
On a Raspberry Pi 4 Model B Rev 1.5
MacIPRPi Stable Release 6.02
atalkd (version 2.4.10)
afpd 2.4.10 - Apple Filing Protocol (AFP) daemon of Netatalk
Linux maciprpi 6.6.51+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64
Host: maciprpi OS: Debian GNU/Linux 12 (bookworm)
System load: 0.38 0.35 0.33 Up time: 22 hours, 32 minutes Local users: 3
CPU usage: 31.2% CPU temp: 43.3°C
Memory usage: 47% of 1846MB IP: 192.168.178.6 172.16.2.1 2001:1c04:2b05:8100:72cf:6e61:8b34:f850
Usage of /: 48% of 14G | Posted by: Fizzbinn on 2025-01-14 19:05:15
I can launch Chromium in a remote session like XRDP (rdesktop) or X2Go. I will test with monitor and keyboard too. Maybe that is the problem?
I just enabled the VNC service via "RPi Menu/Prefences/Raspberry Pi Configuration". I then used Real VNC on my Mac to connect, but still can't launch Chromium via the menu bar Web browser icon or "RPi Menu/Internet/Chromium Web Browser". Just tried it from the command line and got:
macipgw@maciprpi6:~ $ chromium-browser
[5757:5757:0114/213725.720439:ERROR:process_singleton_posix.cc(358)] The profile appears to be in use by another Chromium process (5244) on another computer (maciprpi). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.
[5757:5757:0114/213725.720683:ERROR:message_box_dialog.cc(190)] Unable to show message box: Chromium - The profile appears to be in use by another Chromium process (5244) on another computer (maciprpi). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.
So this looks like an issue with me changing the hostname to maciprpi6 which seem weird... At first I thought it might be talking about my v5 MacIPRpi "another computer (maciprpi)" but that does not match the hostname on my v5 which is "macippi" (I left that as the default).
About printing. I have to be honest... I never have printed from / or with help of the MacIPRpi! So... would be nice to know how to do this, so I can add it.
papd.service is always started at boot.
/usr/lib/cups/backend/pap is what I had to get setup on my v5 to get CUPS working with AppleTalk Printing, the file I'm using is something I found on the Internet and hacked on until it surprisingly worked, at least for what I wanted to do (print to an AppleTalk only LaserWriter from modern machines using the Rpi as a print server). I was hoping the newer Netatalk build would come with that file fixed up.
@mactjaap Regarding Fizzbin's problem, do you remember if you had all CUPS dependencies installed when you built netatalk?
It is possible to build papd without CUPS, at which time you get a traditional BSD line printer daemon interface instead.
Would that put a /usr/lib/cups/backend/pap file in place?
FYI another change I made (when first looking at printing on the v6 beta) was to enable the CUPS web interface, I *think* it was enabled by default in your v5 image? I did this by adding " Allow @local" to these three stanzas in "/etc/cups/cupsd.conf", not sure if that's the best way or not...
# Restrict access to the server...
<Location />
Order allow,deny
Allow @local
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow @local
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @local
</Location>
That let me open: http://maciprpi6.local:631/
Which can at least see the modern printers on my network if not the AppleTalk one at present.
Not sure its of any use but this is what my v5 server sees on my network AppleTalk wise:
UTC:TimeLord 65280.242:133
LocalTime:TimeLord 65280.242:131
MacIPpi:AFPServer 65280.242:129
172.16.2.1:IPGATEWAY 65280.242:72
MacIPiRpi:netatalk 65280.242:4
MacIPiRpi:Workstation 65280.242:4
Performa 6360:Workstation 65308.76:4
maciprpi6:ProDOS16 Image 65280.91:3
maciprpi6:Apple //e Boot 65280.91:3
MacIPRPi:AFPServer 65280.91:132
maciprpi6:TimeLord 65280.91:130
maciprpi6:Apple //gs 65280.91:3
maciprpi6:Workstation 65280.91:4
4/600 PS:LaserWriter 3072.249:128
iBook G4:Darwin 65454.176:128
iBook G4:AFPServer 65454.176:129
I should learn more about AppleTalk addressing, is it okay that the v5 and v6 servers start with the same "65280"? | Posted by: Fizzbinn on 2025-01-14 19:52:28 FYI - To get chromium to launch I deleted this file: /home/macipgw/.config/chromium/SingletonLock | Posted by: Mk.558 on 2025-01-14 20:49:59 65280 is a common network number. Since all that stuff is dynamically allocated, there's no reason to worry about it. You can read about network IDs, sockets and that kind of stuff here: https://developer.apple.com/library.../pdf/Networking/Introduction_to_AppleTalk.pdf | Posted by: slipperygrey on 2025-01-14 21:55:00
/usr/lib/cups/backend/pap is what I had to get setup on my v5 to get CUPS working with AppleTalk Printing, the file I'm using is something I found on the Internet and hacked on until it surprisingly worked, at least for what I wanted to do (print to an AppleTalk only LaserWriter from modern machines using the Rpi as a print server). I was hoping the newer Netatalk build would come with that file fixed up. I'm not familiar with a /usr/lib/cups/backend/pap file. Is it a plain text or binary file? This is not something that Netatalk creates or touches directly. | Posted by: Fizzbinn on 2025-01-14 22:02:04
I'm not familiar with a /usr/lib/cups/backend/pap file. Is it a plain text or binary file? This is not something that Netatalk creates or touches directly.
macipgw@macippi:/usr/lib/cups/backend $ cat /usr/lib/cups/backend/pap
#!/bin/bash
#
# Usage: pap job user title copies options [filename]
# pap
#
# Important: This backend supports device discovery -- just call it without
# parameters to see whether it works correctly on your system.
#
# Main use: CUPS backend to drive AppleTalk printers. Tested with CUPS
# 1.1.14/1.1.15/1.1.19 (version 0.1.4 tested with CUPS 1.7.5)
#
# Notes: Device URIs have to have the following format (special chars
# in URL encoding): pap://zone/printername/printertype
# Normally you shouldn't care about that since the backend lists
# all available devices correctly formatted when asked by the
# CUPS scheduler.
# Don't forget to adjust $devicetypes and $formfeed to your needs!
# When used with Darwin 7.0 (MacOS X 10.3.x) you might want to
# change the shell to /bin/bash in the first line due to problems
# with the encoding routines for the device uri (perl -e call)
#
#############################################################################
#
# author: Thomas Kaiser <mailto:Thomas.Kaiser@phg-online.de>
# url: http://kaiser-edv.de/en/CUPS/pap-backend
# license: http://www.opensource.org/licenses/bsd-license.php
# date: 08 Jan 2004 (v0.1.3)
#
#############################################################################
#
# Changes
#
# 0.1.4 (11 Apr 2017):
# Changes by M. Amolsch as per forum discussion with Thomas Kaiser:
# - changed shebang line to /bin/bash
# - updated NetatalkBinDir to correspond with the Netatalk path in
# recent versions of Ubuntu and Debian
# - specified separate TimeoutDir and corresponding call to use with
# coreutils in recent versions of Ubuntu and Debian
# - added line end to printer name query
#
# 0.1.3: - query AppleTalk devices by default for their "Product name" to
# let CUPS assign the correct PPD automatically (this is achieved
# by setting FullDeviceDiscovery=TRUE)
# - set the default netatalk installation path back to /usr/bin
# - set a timeout value of 15 seconds when querying printers for
# their "Product name"
# - massive performance improvement in larger networks with many
# zones when doing device discovery while $FullDeviceDiscovery
# set to TRUE (due to parallelizing the queries)
#
# 0.1.2: - fix the inability to deal with printers with slashes in their
# names
# - report wrong netatalk installation dir --> ${NetatalkBinDir}
# - minor documentation improvements
#
# 0.1.1: - fix some documentation errors and default values
#
# 0.1.0: - first official release (22 Mar 2003)
#
#############################################################################
#
# To Do:
#
# - optionally send pagecount queries to get exakt accounting info
#
#############################################################################
#
# Non-Warranty:
# This script comes with absolutely no warranty.
#
# Use at your own risk!
#
#############################################################################
#
# Customizable settings:
#
# The devicetype variable specifies for which devices to look for (eg.
# LaserWriter, DeskWriter, ImageWriter). If you want to lookup more than
# one device at a time, write them separated with colons, ie.
#
# devicetypes="LaserWriter:DeskWriter"
#
# For all devicetypes use "=" instead. But be warned: this will also find
# macs, servers, serial numbers and the like
devicetypes="LaserWriter"
# specify whether or not to send an additional form feed (DeskWriters
# seem to need this. TRUE means send the ff
formfeed=FALSE
# When you want to use this with Netatalk, then specify the path to
# the $BINDIR (do a search for nbplkup, eg.). You might also want to set
# $FullDeviceDiscovery to TRUE to let CUPS guess the correct PPD for the
# devices by asking them for their "Product" name...
# Additionally you can let the backend collect exact pagecounts from
# PostScript printers that correctly implement a back channel (answering
# the backend's questions). If you use dumb AppleTalk print servers do
# NOT set this option
#
# Note: This last option is still not implemented
NetatalkBinDir=/usr/bin
TimeoutDir=/usr/bin
FullDeviceDiscovery=TRUE
ExaktPageCount=FALSE # currently without effect
#############################################################################
main()
{
# Processing the CUPS request. There exist 2 possibilities: Either CUPS
# is asking us about device capabilities we can provide or it want us to
# handle a print request and send the print job to a specific device
CollectAccountingData "$@"
PrepareRequest
# No arguments means show available devices and exit...
if test $# = 0; then
echo "network ${protocol} \"Unknown\" \"AppleTalk Devices via ${protocol}\""
LookupDevices | sort | uniq
exit 0
fi
# Handle the print request. First check whether the device is available
if PrinterAvailable "${PrinterName}" ; then
type=`GetAppleTalkType "${PrinterName}"`
if test $# = 5; then
# Get print file from stdin; copies have already been handled...
NotifyCUPS "INFO: Sending to ${PrinterName}"
cat | PrintAndAccount "${PrinterName}"
NotifyCUPS "PAGE: 1 1" # TO DO: send pagecount queries
else
# Print file is on command-line and we have to handle copies ourselve...
SpoolFile=$6
while [ ${NeededCopies} -gt 0 ]; do
ActualCopy=`expr $4 + 1 - ${NeededCopies}`
NotifyCUPS "INFO: Sending copy ${ActualCopy} to ${PrinterName}"
PrintAndAccount "${PrinterName}" < "${SpoolFile}"
NotifyCUPS "PAGE: ${CountOfCopies} $4" # TO DO: send pagecount queries
NeededCopies=`expr ${NeededCopies} - 1`
done
fi
# Eventually send an additional form feed (some DeskWriters seem to
# need that)
if [ "X${type}" = "XDeskWriter" ]; then
test "X${formfeed}" = "XTRUE" && printf "\f" | PrintAndAccount "${PrinterName}"
fi
else
NotifyCUPS "ERROR: Unable to get printer status for \"${PrinterName}\""
exit 1
fi
}
PrepareRequest()
{
# How are we called?
protocol=`basename $0`
# Let's have a look whether we are using Netatalk's or Darwin's
# AppleTalk implementation
case `uname -s` in
Darwin)
ZoneLookup="/usr/bin/atlookup -z"
PrinterAvailable()
{
/usr/bin/atstatus "$1" >/dev/null
}
PrintAndAccount()
{
/usr/bin/atprint "$1"
}
NBPLookup()
{
/usr/bin/atlookup -a "$1" | grep -v "^# Found"
}
ATPErrMsg="ATPsndreq\:\ Operation\ timed\ out"
CheckProductName()
{
echo "Unknown"
}
TotalPages()
{
echo ${CUPS_PrintSettingsPMTotalBeginPages}
}
;;
*)
# test the path of ${NetatalkBinDir}
if [ ! -x "${NetatalkBinDir}/papstatus" ]; then
echo "ERROR: Netatalk tools not found in \"${NetatalkBinDir}\"" >&2
exit 1
fi
ZoneLookup="${NetatalkBinDir}/getzones"
PrinterAvailable()
{
${NetatalkBinDir}/papstatus -p "$1" >/dev/null
}
PrintAndAccount()
{
${NetatalkBinDir}/pap -p "$1"
}
NBPLookup()
{
${NetatalkBinDir}/nbplkup "$1" | \
perl -ne 'chomp; next if /^$/; m|^\s+(.+)\s+\d+\.\d+:|; my $entry = $1; $entry =~ s/\s+$//; print "$entry\n"'
}
ATPErrMsg="atp_rresp\:\ Connection\ timed\ out"
CheckProductName()
{
# We'll try to ask the printer for its so called
# "Product name" to let CUPS automatically assign
# the right PPD file for the printer
GuessedDeviceType="Unknown"
if [ "$2" = "LaserWriter" -a "${FullDeviceDiscovery}" = "TRUE" ]; then
if ${NetatalkBinDir}/papstatus -p "$1:$2@$3" >/dev/null 2>&1
then
DeviceLookup=`echo -e "%%?BeginFeatureQuery: *Product\nstatusdict begin\nproduct print\nend\n%%?EndFeatureQuery: Unknown\n%%EOF" | ${TimeoutDir}/timeout -s HUP 15 ${NetatalkBinDir}/pap -p "$1:$2@$3" | sed -e '$a\' | sed 's|^\"(||;s|)\"$||;'`
if [ -n "${DeviceLookup}" ]; then
GuessedDeviceType="${DeviceLookup}"
fi
fi
fi
echo "${GuessedDeviceType}"
}
TotalPages=1
;;
esac
# redefine the internal field separator to parse the zone list
# correctly
IFS="
"
}
GetAppleTalkType()
{
echo "$1" | cut -d: -f2 | cut -d@ -f1
}
LookupDevices()
{
# Fetch the zone list and do a lookup in every single zone for occurences
# of type $devicetype
zonelist="`GetZoneList`"
# get a list of AppleTalk Devicetypes to look for
OIFS=$IFS
IFS=":"
set ${devicetypes}
IFS=$OIFS
for devicetype in $@; do
echo "${zonelist}" | while read zone; do
NBPLookup "=:${devicetype}@${zone}" | while read nbpentry ; do
GetPrinterProperties "${nbpentry}" "${zone}" "${protocol}" &
done &
done
done
}
GetZoneList()
{
# check whether we have to deal with zones
eval ${ZoneLookup} >/dev/null
if [ $? -eq 0 ]; then # okay, zones are available
eval ${ZoneLookup} 2>&1 | sed "s|${ATPErrMsg}|*|;"
else
echo '*'
fi
}
GetPrinterProperties()
{
name=`echo $1 | awk -F: '{print $1}'`
type=`echo $1 | awk -F: '{print $2}'`
model=`CheckProductName "${name}" "${type}" "$2"`
echo -e "network $3://`EncodeDeviceURI "$2"`/`EncodeDeviceURI "${name}"`/`EncodeDeviceURI "${type}"` \"${model}\" \"${name}@${zone} ($3)\""
}
EncodeDeviceURI()
{
# We'll have to quote the names with an URL encoding (RFC 2396)
echo "$@" | perl -ple 's|([^\w=\-:@])|sprintf( "%%%02x", ord( $1))|ge'
}
DecodeDeviceURI()
{
# Decode the Device-URI
echo "$@" | awk -F/ '{print $4 ":" $5 "@" $3}' | perl -ple 's/%([0-9A-Fa-f]{2})/chr(hex($1))/eg'
}
NotifyCUPS ()
{
# sending message on stderr to keep CUPS informed
echo -e "$*" >&2
}
CollectAccountingData ()
{
PrinterName=`DecodeDeviceURI ${DEVICE_URI}`
Owner="$2"
Title="$3"
NeededCopies=$4
# parse the options passed from CUPS
eval ParseCUPSOptions $5
}
ParseCUPSOptions()
{
# We parse the CUPS options, delete occurences of "com.apple.print" in
# their names, prepend the variable names with "CUPS_", define
# them as variables and export them
i="com\.apple\.print\."
while [ $# -ge 1 ]; do
VarName=`echo $1 | cut -d"=" -f1 | sed "s|^$i||g;s|\.[nb]\.$||g;s|\.||g"`
VarValue=`echo $1 | cut -d"=" -f2 | sed "s|\ |\\\\\ |g"`
eval CUPS_${VarName}=${VarValue}
eval export CUPS_${VarName}
shift
done
}
#############################################################################
#
# Let's start to process the CUPS requests
main "$@"
exit 0 | Posted by: slipperygrey on 2025-01-14 22:08:32 Hmm, all of this shouldn't be required. If CUPS is aware of your printer, you should only have to put cupsautoadd:op=root: in papd.conf and that's it.
See this guide that I wrote some time ago: https://netatalk.io/docs/Print-Server | Posted by: Fizzbinn on 2025-01-14 22:08:56 Here's my post when I got this to work with MacIPRpi v5:
I found drivers for Linux and MacOS and the plan was to just share using cups once I could establish a connection. I'll come back to it at some point, I'm currently upgrading/cleaning up my home network.
68kmla.org
| Posted by: NJRoadfan on 2025-01-15 03:58:52 The pap backend file is only if you want to print to a pap only LaserWriter from Linux. | Posted by: slipperygrey on 2025-01-15 09:02:37
The pap backend file is only if you want to print to a pap only LaserWriter from Linux. This explains it. I’ll add the info to our wiki page. | Posted by: Fizzbinn on 2025-01-15 11:07:21
Hmm, all of this shouldn't be required. If CUPS is aware of your printer, you should only have to put cupsautoadd:op=root: in papd.conf and that's it.
See this guide that I wrote some time ago: https://netatalk.io/docs/Print-Server
This worked for me with MacIPRpi beta release 6.02. Took me a minute to find the papd.conf file, it was under /user/local/etc/, just uncommented the last line:
macipgw@maciprpi6:/ $ cat /usr/local/etc/papd.conf
# PAP print server daemon configuration (Netatalk 2.x)
#
# See the `papd.conf' manual page for examples.
# Uncomment the following line to share all CUPS enabled printers.
cupsautoadd:op=root:
Was able to print from my Performa 6360 to my HP Envy Inkjet using the LaserWriter 8 driver included with Mac OS 8.6.
Old computer -> AppleTalk pap print job -> Rpi server -> IP CUPS print job > modern printer
The pap backend file is only if you want to print to a pap only LaserWriter from Linux.
That's the use case I initially was interested in testing in MacIPRpi beta release 6.02. Allowing my modern machines to print to my AppleTalk only LaserWriter using the Rpi as translating printer server.
Modern computer -> IP CUPS print job -> Rpi server -> AppleTalk pap print job -> Old AppleTalk only LaserWriter | Posted by: mactjaap on 2025-01-15 13:56:37 Thanks for all your help with printing!! Really very interesting. Setup is very easy. I now have my printer HP LaserJet Pro M118dw also accessible.
macipgw@maciprpi:~ $ nbplkup
HP LaserJet Pro M118dw 6071AC:LaserWriter 65280.5:129
maciprpi:ProDOS16 Image 65280.5:3
maciprpi:Apple //e Boot 65280.5:3
MacIPRPi:AFPServer 65280.5:132
maciprpi:TimeLord 65280.5:130
maciprpi:Apple //gs 65280.5:3
172.16.2.1:IPGATEWAY 65280.5:72
maciprpi:Workstation 65280.5:4
BasiliskII:AFPServer 65280.123:249
BasiliskII:PPCToolBox 65280.123:250
tjabring:Timelord 65280.123:251
BasiliskII: Macintosh 65280.123:252
BasiliskII:Workstation 65280.123:4
AsantéTalk 940863E7:AsantéTalk 65289.159:252
AsantéTalk 94081D2A:AsantéTalk 65320.207:252
I will try to change some things on the release 6.02 so that people will be able to setup printing easy. I also will include some instructions.
I will also try to get rid of some small bugs/inconveniences found in the beta period before releasing 6.02 stable. | Posted by: mactjaap on 2025-01-15 14:59:43

And yes… it really prints!
My first print ever from a BasiliskII instance in combination with the papd setup on the MacIPRpi. | Posted by: slipperygrey on 2025-01-15 22:42:31 It is kind of a miraculous feeling when hardware from such different eras interoperate, isn't it!
So I found the source of the CUPS pap backend configuration, namely this article on the EMaculation wiki.
The tarball with the backend configuration and license text are available for download via: https://www.emaculation.com/pap_tkaiser_v0.1.4.tgz
This is a very interesting footnote on that EMaculation guide page...
There are at least three other PAP backends available on the net (Duncan Gibb [based on Rupi]: download · instructions · info · Rupi's original [info] · archive with Rupi's backend and docu [next to other stuff] | Derrik Pates: download · description · setup 1 · setup 2 | SRZ Berlin: download and description), but the one from Thomas Kaiser is the most advanced and automated one. The original can be found here. To meet the development status of today's Linux systems, emaculation.com is hosting an updated version that is downloaded and installed with the following entries. Unfortunately, Thomas Kaiser's website has been offline since at least 2021 now. And even more unfortunately, the CUPS and Netatalk "tipps und tricks" pages on his website aren't even archived on archive.org...
We are fortunate that EMaculation rescued those files before they were swallowed by entropy!
FWIW, I was able to recover the other pap backends, except the Duncan Gibb version, for science.
I will look into the possibility of bundling a pap backend in future Netatalk releases. The EMaculation edition of Thomas Kaiser's work is distributed under a BSD-2-clause license, which is permissive enough. | | 1 > |
|