I’ve been rebuilding a #RaspberryPi installation that supports my classic Mac habit 😄

I used to use the awesome #MacIPGW image which includes a ton of pre-configured software like #netatalk. But it hasn’t been updated in a while so I used it as excuse to start from scratch.

I used this Pi Zero W as my starting point. HDMI video stopped working on it for unknown reasons. I added an Ethernet/USB hub hat and a #TashTalk 2 hat for #LocalTalk devices.

#RetroComputing #VintageApple #VintageMac

One reason for rebuilding netatalk is I wanted to run TashRouter on the same machine. It’s doesn’t work right on the MacIPGW image because of the “split horizon” patch.

I can now freely use AppleTalk devices on EtherTalk, LocalTalk (PhoneNet!), and LToUDP (Mini VMac). This enables, for instance, printing to an ImageWriter II from my modern Mac running System 7.5 in Mini VMac! (There were lots of bugs to resolve to get the ImageWriter II working!)

#RetroComputing #VintageApple #VintageMac

One piece that's missing is AURP aka #GlobalTalk support. I'd like to avoid running a VM and have something more lightweight.

Luckily @DrJosh9000 has created jrouter which comes very close to accomplishing this! Remote zones are showing up but are all empty and not sure if my zone is visible outside. I need to play with some settings some more I think. But soooo close!

https://gitea.drjosh.dev/josh/jrouter

#RetroComputing #VintageMac #VintageApple

jrouter

**WIP** Home-grown alternative implementation of Apple Internet Router 3.0

Forgejo: Git with a cup of tea

With netatalk, a TashTalk hat, TashRouter, and CUPS on the Raspberry Pi, we can do clever things like share a #ImageWriter II printer over #LocalTalk with an iPhone using AirPrint!

This screenshot was printed from my phone to the ImageWriter II.

Interestingly, this was just fixed in the latest netatalk 2.3.2!

#LiveLaughLocalTalk #RetroComputing #VintageApple #VintageMac

In the interest of science, I did an ImageWriter II comparison print of CUPS vs the MacPalette driver for Classic. I think MacPalette wins here. There appears to be better color range and the text is a little sharper.

#RetroComputing #VintageApple #VintageMac #LiveLaughLocalTalk #ImageWriterII

I lifted some halftone settings and stuffed them into the ImageWriter II foomatic PPD and did some test strip prints.

At both resolutions, the result seems to be the same? So maybe that’s not the setting I need. Maybe it can’t be changed? MacPalette II still wins here!

#RetroComputing #VintageApple #VintageMac #ImageWriterII

Ok #AppleScript folks: how do you make MacOS 9.2 automatically print a PDF that appears in a specific folder?

#VintageApple #VintageMac #RetroComputing

So I have a new MacOS 9.2.2 #AppleScript Folder Action attached to a network share via netatalk. It works only if these conditions are met:

1. The folder is open already in the Finder. If it’s closed, it never triggers.
2. The new item is added to the folder from the current machine. Items added remotely to the network share do not “refresh” therefore never trigger the action.

Is this expected?

#RetroComputing #VintageApple #VintageMac

Ok, I've abandoned Folder Actions as it just doesn't seem to work. I've now gone with an always-running #AppleScript to scan the folder.

And.. it works! Almost? It seems that MacPalette II crashes (and takes Acrobat Reader with it) after it completes a print and there's a finder dialog that's proving difficult to dismiss in AppleScript.

#RetroComputing #VintageApple #VintageMac

The way it works is this:

1. A print is initiated from a device to the CUPS-PDF driver on my #netatalk Raspberry Pi.
2. The resulting PDF is placed in the AFP share of netatalk/afpd.
3. An emulated PPC Mac 9.2.2 running the #AppleScript below is watching for new files in that folder and will print them using Acrobat Reader to the #ImageWriterII via #LocalTalk using the MacPalette II driver.

It works, but crashes with dialog that I can't auto-dismiss.

#RetroComputing #VintageApple #VintageMac

Ok, so this centipede printer workflow isn’t really reliable so I dove into CUPS to try and see if there’s a way to alter the dithering.

I tried adding different settings to the PPD file but nothing produced any changes.

Until I added “DitherPPI” (a GS option) and it produced a result that was pretty good! I tried various values (30, 80, 120, 180) but they all looked identical. In any case, this is good enough for me!

#ImageWriterii #RetroComputing #VintageApple #VintageMac #netatalk

As promised, I wrote a blog post about creating my own classic Mac support server using a Raspberry Pi Zero, a TashTalk 2 hat, netatalk, and a few other tools. It's very much like MacIPRpi with everything current.

https://biosrhythm.com/?p=2791

Boosts appreciated!

#RetroComputing #VintageApple #VintageMac #netatalk #MacIPRpi #MacipGW

» Building a Classic Mac Support Server

I was able to tweak the output of the ImageWriter II prints from CUPS to be slightly better. I've updated the blog post.

https://biosrhythm.com/?p=2791

#RetroComputing #VintageApple #VintageMac #ImageWriterII

» Building a Classic Mac Support Server

This animation shows the simulated output of CUPS ImageWriter II DitherPPI setting approximately from 2 to 31. After that, it changes to a more posterized dither and is the same for any larger value. You can see the dithering dots start very large and shrink down with each new value.

#RetroComputing #VintageApple #VintageMac #ImageWriterII

@paulrickards thank you so much for this! I barely got started putting an image together and this will save me so much effort!
@paulrickards Off topic, but I so love the System 7/Mac OS 7 aesthetic. First time they introduced a splash of color into the UI before later refining it with Platinum.
@paulrickards this is great.. I want to stay on global talk but having my LCIII running all day every day seemed like a lot to ask that old machine to do! I just ordered the trash talk hat and will get this going as soon as I get that! Thank you!
@eric AURP #GlobalTalk routing isn’t supported yet but hopefully soon!
@paulrickards Looks much better, the plain driver seemed to be crushing to black much faster than it should (possibly putting too much ink and it bleeding), or even possibly doing double strikes for black.
@ChartreuseK Yeah, the defaults seemed a little heavy handed all over. Happy with this new setting-- although not entirely sure why it's working.
@paulrickards Is the default DPI perhaps the issue? Might be that above a certain amount it's doing two passes per line with a half pixel offset and that's just putting too much ink down?
@ChartreuseK The three images in the example were all set to the same highest dpi setting (160x144) which does the two-pass slightly offset Y "in between" print.

@ChartreuseK Interestingly, adding the DitherPPI setting for GhostScript says

"forces all devices to be considered high-resolution, and forces use of a halftone screen or screens with lpi lines per inch, disregarding the actual device resolution. Reasonable values for lpi are N/5 to N/20, where N is the resolution in dots per inch."

I tried several DitherPPI settings without any change.

@paulrickards Ah weird. I still wonder if the default might be double striking/bold for doing 3 levels greyscale or such. Since the individual dark pixels in the middle print are darker than the individual pixel in either of the others.
@paulrickards Could maybe try and see if something like that is happening by printing a continuous greyscale gradient across the page, and possibly timing it to see if the default is slower.
@paulrickards that’s looking so much better!
@billgoats It's a big improvement over the defaults for sure. It's a little posterized in the dithering but I don't mind it.
@paulrickards does AppleScript let you send a click to a specific coordinate? assuming the dialog is always in the same place, a wait and then a click where OK is could maybe work.

@billgoats In theory yes. System Events is supposed to do that, but I can't seem to summon it, even on this fresh MacOS 9.2.2 + AppleScript 1.8.3 install.

To get keystrokes to work, I had to use to "Sigma's Additions" OSAX and use the "type text" command (that's all it has).

@paulrickards @billgoats Perhaps an older copy of Keyboard Maestro might work 🤔

@paulrickards @billgoats and Return/Enter or ESC don’t work to dismiss the dialog?

FYI, I abandoned CUPS-PDF, and set up an ippeveprinter for generating PDFs - this removed the incompatibility I was seeing with LW8.1 clients when printing to PDF.

@europlus @billgoats No, the script hangs when the error dialog appears so it's not possible to continue.

Good to know about the CUPS-PDF driver!

@paulrickards what’s the error dialog say/look like?
@paulrickards From what I remember, MacOS 9.2 should have Folder Actions? That's where I'd start looking, anyway.

@paulrickards In the Finder, select the folder, command-click, choose “Attach a Folder Action…” from the contextual menu

System Folder > Scripts > Folder Action Scripts has some samples on how to handle added files. You probably want to tell the finder to print the added items.

@Cdespinosa Ahh yes, thanks! I've got a script mocked up now and it does work to the point the print dialog comes up, waiting for a mouse click or enter. I can't figure out how to send a return keystroke. The usual tell "system events" results in "where is system events" on MacOS 9.
@paulrickards when I first saw @Cdespinosa's post I wondered if "print the added items" was literally the AppleScript to do it 😄
@paulrickards @Cdespinosa Does adding "without dialog" to the end of the print line do it?
@timjclevenger @Cdespinosa No, it still presents the print dialog for MacPalette II.
@timjclevenger @paulrickards Finder won’t process that. What app do you have on 9.2 that opens PDFs? You may need to tell that app to open and print the file

@Cdespinosa @timjclevenger I'm using Acrobat Reader 5.0. It doesn't seem to have an AppleScript dictionary though.

I did find that "Classic Support" has an AppleScript dictionary that includes "keystroke" but I can't figure out the proper sequence for sending a return.

@paulrickards That keystroke is incoming, not outgoing. System Events is the best thing to use but it’s in AppleScript 1.7 in System 9.2.2, don’t know if you can upgrade. Otherwise you may need to find and install some ancient OSAXen
@paulrickards it's Bayer vs hatch ordered dithering, as far as I can tell? Generally Bayer is considered to be "better" when it comes to photographs, but I think it's worse when it's charts and such.
@nina_kali_nina Oh interesting! I wonder if that’s a CUPS setting that I can change for the printer. Which one do you think the MacPalette II driver is using? (They’re labeled in the alt text.)
@paulrickards we truly live in an age of wonders!
@paulrickards for a while, the CUPS drivers for the ImageWriter printers were deprecated but then put back in after it was clear people still use them. I love my IW II.
@gaj Glad they’re back. I also hear that color printing to an ImageWriter II will be available soon.
@paulrickards now if only we could get new color ribbons
@paulrickards @DrJosh9000 Sweet! Bonus for being written in go. Lot's of options for running it in the lab.
@paulrickards I'm so glad someone else is trying it! I have some ideas why that's happening, and I plan to add the missing pieces soon

@DrJosh9000 @paulrickards I’m looking forward to trying it when my life settles down after this week.

Much as I’ve enjoyed getting the QEMU stuff working and it’s been really stable recently, I’d like to be a bit more sensible in my setup.

@DrJosh9000 That’s great! Looking forward to trying it!
@paulrickards @DrJosh9000 following. I just ordered a trashtalk hat.