When working with an Amiga running on a Minimig platform then data transfer isÂ not as convenient as one might think: You have an SD Card connected and copyingÂ files around with SD Card is not the biggest deal, but unfortunately your AmigaÂ is currently running from a system drive stored on this card :/ Each copy operationÂ therefore essentially requires a reboot of your Amiga and that’s not theÂ productive work flow I had in mind…
That’s the reason why I always prefer having network access on all my machinesÂ for truly covenient file handling (e.g. with FTP, wget…).
In my last post I showed you how to add a SilverSurfer high speed serial portÂ to your Minimig running on the Turbo Chameleon 64. Now we will use this serial port that is running up to 115200 Baud with easeÂ for something useful: networking! Old farts remember the times when homeÂ network access was done with PPP and a serial modem gateway. We’ll go that roadÂ but replace the modem and gateway with a small and cheap Linux machine, hereÂ the all hyped Rpi and a direct serial “null modem” link via an USB-to-serialÂ adapter.
Read on to find out all the glory details, starting with a pure “virtual”Â simulation running on a Mac on to the real thing…
[You can use this approach to bring other classic Amigas to the network, too.Â But for all machines with a parallel port available I’d suggest to use myÂ plipbox project: Its far easier to setup, a lot faster (4-5x ), and even cheaper :)]
The following ingredients are required for this little project:
- Minimig TC64Â flashed with cp Firmware (see my last post) and aÂ SilverSurfer card attached
- An USB-to-Serial Converter
- A 9-to-25 pin serial adapter to connect the SilverSurfer with the USB-to-serial converter
- A Raspberry Pi with Raspbian installed
- Amiga Software
- Amiga HDF Image running on minimig
I use a BetterWB installed on vanilla OS 3.1
- An Amiga TCP Stack: Roadshow 1.11 
I chose this one, because its actively supported, has a nice CLI interfaceÂ and ships PPP support out of the box. And not to forget: it has pure 68000 support (not only 020er or better)!
Note: use the most recent version 1.11 as it fixes some PPP Bugs!
- Amiga HDF Image running on minimig
- Raspbian Software:
- pppd – the ppp server
- Mac/Host (Posix) Software (for the emulation)
2. Prepraring and Testing the Amiga HDF
Get your FS-UAE up and running first. There a lots of tutorials out there onÂ this topic. We will use it to prepare the Minimig HDF file.
My HDF File from the Minimig is called minimig.hdfÂ and as a first step I copyÂ it to my Mac into the ~/Documents/FS-UAE/Hard Drives/ folder.
Set up a FS-UAE configuration file to use this image with a compatible machine:
[config] amiga_model = A1200 fast_memory = 8192 hard_drive_0 = minimig.hdf hard_drive_1 = /Users/chris/amiga/shared window_width = 640 window_height = 512 window_resizable = false serial_port = /tmp/vser
Note the second hard drive is a local directory I use to exchange data filesÂ with my Mac file system.
The last option is the most interesting: We connect Paula’s serial port to aÂ file named /tmp/vser. What’s this you might ask?
Virtual Serial Line
This is where the magic begins: We want to simulate a PPP connection from theÂ Amiga running inside FS-UAE and therefore we need to connect its serial port toÂ a serial line with a pppd listening on the other side. We run pppd directly onÂ the Mac but this tool also wants to connect to a serial port… So we have twoÂ applications on the Mac each wanting to reach a serial port device…
I use a wonderful tool called socat (found e.g. on MacPorts on Macs) to createÂ the “virtual serial line” between them: It allows me to create two PTYsÂ (virtual terminals) and connects them. I created a small script called vser2ptyÂ to achieve this:
#!/bin/sh OPTS=raw,echo=0,onlcr=0,echoctl=0,echoke=0,echoe=0,iexten=0 exec socat "$@" pty,$OPTS,link=/tmp/vser pty,$OPTS,link=/tmp/hser
If you run this script in a terminal then a “virtual serial line” is created between theÂ terminals named /tmp/vser and /tmp/hser. Those pseudo terminals are actually compatible to real serial ports as they used to connect terminals, too.
Now everything becomes clear: We let FS-UAE’s Paula emulation connect toÂ /tmp/vser while the pppd process will use /tmp/hser…
Ok, enough magic for now… Start your virtual serial line and (after this)Â FS-UAE. Inside FS-UAE install Roadshow 1.11 (or the Update) if you haven’tÂ already done so.
On the Amiga side we will need a network driver file for PPP first: Create aÂ new file in DEVS:NetInterfaces/PPPÂ with the following contents:
Now on a CLI you could already add this interface with:
CLI> addnetinterface ppp Interface "ppp" added.
The driver needs a configuration file to find out what serial port or whatÂ options are requested: Create a new file called:Â S:PPP-Configurations/ppp-serial:
interface=ppp device=serial.device baud=38400 rtscts=no checkcarrier=no nullmodem=yes
This file is for testing only. Later on we will useÂ S:PPP-Configurations/ppp-silver which uses the SilverSurfer device:
interface=ppp device=silversurfer.device baud=115200 rtscts=yes checkcarrier=no nullmodem=yes
Ok, now on the Amiga in FS-UAE we are set up! Before we can continue here, we’llÂ need to start the pppd on the host side…
pppd Config on Host
pppd expects that the serial device it connects to has to start with /dev/…Â Therefore, we can’t directly use the link that our virtual serial port scriptÂ has created. But a cheesy ls discovers the real PTY and this a /dev device 🙂
> ls -l /tmp/hpar /dev/ttys002
Note: that the name of the PTY might change every time you restart the vser2ptyÂ script.
Now we can launch pppd as root (we need these priviledges to allow pppd to setupÂ the required net interfaces):
> sudo pppd debug -detach proxyarp 192.168.2.250:192.168.2.251 ttys002 115200
The mentioned IP adresses give the point-to-point link used for ppp: the first is the host address the second the Amiga’s address. To make proxyarp work, youÂ have to make sure that these addresses are on the same subnet as your mainÂ network link on your machine. E.g. my Mac sits on the 192.168.2.x subnet of myÂ home router and therefore 192.168.2.250 is a valid point-to-point address thatÂ can use proxyarp.
The only thing missing is enabled IP forwarding on your machine. On Macs you do:
> sudo sysctl -w net.inet.ip.forwarding=1
Ok, pppd is up and running… Now we can connect from the Amiga side…
Use the ppp_dialerÂ script installed with Roadshow and the script for theÂ serial.device we already set up:
CLI> ppp_dialer s:PPP-Configurations/ppp-serial ... PPP has connected
If everything works fine then you see the connect in both pppd and CLI output.
... Sat Nov 16 19:59:09 2013 : found interface en3 for proxy arp Sat Nov 16 19:59:09 2013 : local IP address 192.168.2.250 Sat Nov 16 19:59:09 2013 : remote IP address 192.168.2.251 Sat Nov 16 19:59:09 2013 : Received protocol dictionaries Sat Nov 16 19:59:09 2013 : Received acsp/dhcp dictionaries Sat Nov 16 19:59:09 2013 : Committed PPP store Sat Nov 16 19:59:09 2013 : Received acsp/dhcp dictionaries Sat Nov 16 19:59:09 2013 : Committed PPP store
Open a new CLI and keep the PPP link up. Now you can use the network on yourÂ Amiga:
CLI2> ping 192.168.2.250 # ping Mac pppd (basic test) CLI2> ping 192.168.2.1 # ping my router (check ip forwarding) CLI2> ftp 192.168.2.1 # ftp my router (test non-ping apps)
So far, so good… PPP, Networking does fine in the Amiga setup. Now lets headÂ over to the real Hardware (TM).
First transfer the altered minimig.hdf disk image back to your SD card you’llÂ use with the Minimig. I prefer the rsyncÂ command here as it is faster of onlyÂ slight changes were applied to the image.
3. Raspi Setup
I assume you have a configured an up to date Raspbian Linux distributionÂ already running on your system.
First make sure to have pppd installed:
# apt-get install ppp
Setting up the Serial Link
Now attach your serial-to-USB adapter. Most adapters are recognized out of theÂ box by Linux and registered as a tty device in /dev/ttyUSBx. In dmesg you’llÂ see something like this:
[ 27.625546] ftdi_sio 1-1.3:1.0: FTDI USB Serial Device converter detected [ 27.626059] usb 1-1.3: Detected FT232BM [ 27.626085] usb 1-1.3: Number of endpoints 2 [ 27.626100] usb 1-1.3: Endpoint 1 MaxPacketSize 64 [ 27.626114] usb 1-1.3: Endpoint 2 MaxPacketSize 64 [ 27.626126] usb 1-1.3: Setting MaxPacketSize 64 [ 27.628597] usb 1-1.3: FTDI USB Serial Device converter now attached to ttyUSB0 [ 27.628659] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
As you can see I use a FT232-based device that is well supported on Linux (and OS X) and also available almost everywhere at decent prices.
And the device itself is here:
> ls -la /dev/ttyUSB0 rw-rw---T 1 root dialout 188, 0 Nov 17 10:17 /dev/ttyUSB0
Ok, serial port is up.
Adding the Serial Adapter
Most modern serial ports have a DB 9 connector while the SilverSurfer has anÂ Amiga compatible DB 25 serial port. Therefore, an 9-to-25 adapter is requiredÂ to connect both. I soldered mine with the instructions found at Cloanto’s site:
To finish the SW setup, we need to enable IP forwarding on Linux otherwise theÂ Amiga connected via PPP can’t reach the rest of the world.
You can do this for this session with:
> sudo sysctl net.ipv4.ip_forward=1
Or permanently by adding the following line to /etc/sysctl.conf:
Now its time to fire up the pppd server itself:
> sudo /usr/sbin/pppd noauth nodetach debug proxyarp \ 192.168.2.250:192.168.2.251 /dev/ttyUSB0 115200
It now waits for the connection setup from the Minimig. Therefore ‘dial’ there with the SilverSurfer config:
CLI> addnetinterface ppp CLI> ppp_dialer S:PPP-Configurations/ppp-silver ... PPP has connected
Ok, we are on the Net!
You can play around with your full featured link now:
CLI> ping 192.168.2.250 # ping Raspi-side of point-to-point link CLI> ping 192.168.2.1 # ping my router (see if ip forwarding work) CLI> ping www.lallafa.de # reach the world (test DNS)
Ah, before I forget: the last call needs DNS to resolve the symbolic name. To makeÂ this work on Roadshow you have to edit the file DEVS:Internet/name_resolution:
nameserver 192.168.2.1 # add my router as name server
After a restart of Roadshow networking everything should work:
CLI> netshutdown CLI> addnetinterface ppp CLI> ppp_dialer S:PPP-Configurations/ppp-silver
That’s it… all you need to get your ‘mig on the net! 🙂
Make it persistent
If you want to make the pppd setup persistent and run it automatically on PiÂ startup then you can add the call to /etc/rc.local:
# /etc/rc.local # auto ppp startup /usr/sbin/pppd noauth persist proxyarp \ 192.168.2.250:192.168.2.251 /dev/ttyUSB0 115200
Now debugging is disabled, daemon mode enabled and automatic retries activated.Â (see ‘man pppd’ for more details…)
If you want to play with some performance options you might want to try the ‘novj’ optionÂ to disable header compression…
Serial PPP with 115200 Baud gives you an avg. of 6 to 8 KiB/s data transfer rate… Not fast as hell, but all in all much more comfortable than ejecting your SD Card and booting the system each time you need small file 🙂