View Single Post
Old 05 June 2018, 16:49   #1
Registered User

Join Date: Nov 2015
Location: Perth, Australia
Posts: 20
Amiga and Raspberry Pi

This subject seems to come up every now and then and people have a few different ideas:
  • Connect a RPi to your Amiga via a null modem cable and use it as a (slow) network adapter.
  • Connect a RPi to your Amiga via some other means - Parallel port, Floppy port, SCSI, SPI adapter, or just somehow plug it into a Zorro slot - and let the Amiga use the RPi's resources.
  • Figure out how to plug the RPi directly into a 68000 socket and use an emulator as a poor man's Vampire.
The first option is easy, the third is (I believe) unrealistic. I've been thinking a lot about the second option and have something that is starting to work.

The goal of this little project is to make features of the RPi available to AmigaOS friendly software. A server process running on the Amiga communicates with its counterpart on the RPi. Client applications on the Amiga use the server to open a bi-directional communication channel with the RPi using an interface that looks a bit like talking to an Exec device.

Here's a couple of similar looking projects for other old computers:
Some examples of the client software that might be written are:
  • Got no battery backed up clock? Sync it from the RPi on boot.
  • Mouse died? Use a USB mouse (or keyboard or drawing tablet...) plugged into the RPi.
  • Need some easily backed up storage space? Mount a disk plugged into the RPi (or just use some space on its SD Card)
  • Can't afford a network card? Use the RPi's network connection directly, similar to the way UAE can expose the host OS's networking.
So far, I have clock sync and USB mouse control working. I'm sure there's plenty more applications you imaginative people can think of.

At the moment I'm running this with a null modem to USB RS232 adapter but it shouldn't be too hard to adapt to other connection methods. I'd love to have this software use a parallel to GPIO connection, similar to a Plipbox but being able to support a range of connections is important.

The RPi part of the system can be found at It's written in Go and can be fetched with "go get ..." and built with "go build". It generates an executable named AmiPiBorg and expects to find a serial port called /dev/ttyUSB0.

The Amiga side can be found at It currently needs SAS/C to build but I'm open to switching to other compilers. If you wanted to try it, build the server, then the library then each of the clients. Everything will be put in the "bin" directory. Start the server, AmiPiBorg, first then try a client.

I'm at a point with this where I need to make some decisions and I'm hoping to get a little feedback. I have the basic communications protocol working and I'm reasonably happy with how it looks on the Amiga side. Some things that I think need attention are:
  • The RPi side is pretty hacky and could do with a clean up.
  • As the RPi side is written in Go, I'm interested in something like to pretty much make it plug-and-play.
  • As I want the RPi side to be hands-off defining a configuration protocol and implementing Amiga-side tools (CLI and/or GUI) will be required.
  • The Amiga side collects some stats as it goes and just dumps them to stdout on exit. It'd be nice to have tools for querying stats or inspecting what it's doing while running.
  • Similarly, right now a bunch of debug messages are just printf'd. Some controllable logging would be nice.
  • Modularize the I/O bit so different physical connections can be used and actually develop software support for said connections.
Which all seems like a lot of procrastination before I give you a dirt cheap network adapter that doesn't need a TCP stack running on the Amiga.

I'd like to know if you think this project is interesting and could be something you'd use or even like to hack on. If so, what sort of features would you like to see? Running from a Workbench 1.2 floppy? A fancy MUI front end? A parallel port adapter and 3d printed case sold for $$$ on Ebay? A nice dark ale? Let me know what you think


bwldrbst is offline  
Page generated in 0.04276 seconds with 11 queries