plip2slip

Introduction

An Amiga 500 has no special ethernet or other network ports for connecting to the Internet. Typically a SLIP (serial line internet protocol) device is used to transfer all IP packets via the serial RS 232 interface to another computer with fast ethernet connection. With the on-board serial port a maximum speed of 9600 Baud (~ 1 KiB/s) could be achieved running Amiga OS.

Faster speeds could be achieved by using a PLIP (parallel port IP) device that uses the parallel port to transfer IP packets to another host. Since the Amiga parallel port is fully bi-directional you can use a half-duplex protocol and then transfer an IP packet byte-by-byte over the port. This is done in the magPLIP driver available on Aminet. Unfortunately, this approach requires an Amiga or another Computer with a fully bi-directional port on the peer side. With this parallel approach you can achieve up to 15-20 KiB/s transfer speeds.

The idea in this project is to use the custom I/O ports of an AVR microcontroller board (here an Arduino 2009) and implement the parallel port there. The mcu implements the magPLIP protocol and can then receive and send packets to/from the Amiga.

On the other hand the Arduino uses an FTDI 232 USB-to-Serial bridge to allow fast serial data transfers. On a 16 MHz AVR you can use serial rates up to 500 KiBit/s (~ 55 KiB/s). With proper RTS/CTS flow control the AVR can handle these data rates easily.

The plip2slip firmware developed in this project now bridges these two ports. A PC is connected with a fast serial link to the AVR and the Amiga is connected with its parallel port. As a result the amiga can achieve full PLIP speed while the PC runs a fast SLIP link.

On the PC I use Linux with a patched slipattach tool to support the fast serial rates. The Amiga magPLIP device is slightly patched to better support the AVR. All patches are available in this project.

The data flow is as follows:
. Internet <->   PC   <--SLIP-->  Arduino  <--PLIP-->  Amiga 500
.               Linux            plip2slip            magPLIP + AmiTCP

Releases

  • Version 0.1 – 28.08.2011 – plip2slip-0.1.zip
    • Size: 110719
    • MD5: 658714700562aa83b1bbd39599d04e38
    • First public release
    • Full working PLIP to SLIP bridge with transfer rates up to 25 KiB/s
    • Added Transfer mode, Ping only SLIP, PLIP, Rx only SLIP, PLIP

Quick Start Guide

  1. Get an Arduino 2009 board (not an Uno!!) (see Arduino Homepage)
  2. Build the Amiga connector and add some LEDs: see plip2slip Hardware page
  3. Flash the firmware (found in the Release archive see above):
    • Depending on the AVR chip on your board pick the right one for your AVR from the firmware directory
    • Use avrdude to flash it:
    • avrdude -p m168 -P <your_serial_port> -b 19200 -c arduino -U flash:w:BUILD/plip2slip-0.1-500000-arduino-atmega168.hex
      avrdude -p m328p -P <your_serial_port> -b 57600 -c arduino -U flash:w:BUILD/plip2slip-0.1-500000-arduino-atmega328.hex
    • Your serial port depends on your Operating System:
      • Mac OS X uses /dev/cu.usbserial-*
      • Linux uses /dev/ttyUSB*
      • Windows uses COM*
    • Note: disconnect your Amiga before flashing!
  4. Setup your TCP Stack on the Amiga & PC: see plip2slip Setup page
  5. Connect your Amiga and PC to the Arduino and power on both machines.
  6. You should be able to communicate with your Amiga to the PC and the Internet…! Yay! Ping is your friend!
  7. Check out plip2slip’s advanced features:
  8. Have fun!

Source Code

8 comments to plip2slip

  • Daniel

    Hello!
    Excellent work on the plip2slip. Im currently experimenting with normal slip over the com port to a debian box. Its working I can ftp to aminet.net but I cant get the ftp to list a folder it just freezes. I know it has to do with passive mode. Do you know any ftp program that works with A2000/500 that supports pasw? aMosaic just crash and Lynx seem to have its problems to. What software do you use on the amiga side. And possibly.. can you show me the commands and rules for slattach that you used on your linux box.

    Thanx..
    /Daniel

    • Hi Daniel,

      my linux setup is described in the README file found in the contrib/slattach directory of the plip2slip distribution archive.
      The FTP program I played with is the ncftp command line tool found on the Network disk.

  • Daniel

    Hello and thanks for your reply. I can connect to aminet.net all is fine, but I cant make ls work. I cant get directory listing from the ftp server. It has to be passive mode related.

    /daniel

  • Richard

    hello!

    a very good project! i will try it. i saw an ethernet module for the Arduino, they go for cheap; would it be possible to hook it up, and make a real network card for any amiga with parallel port? unfortunately my programming knowledge is very limited, i am only a linux sysadm, but i would be interrested.

    thank You!
    regards,
    Richard

  • @Richard

    I really liked this idea, too… I gave it a try and it works like a charm… See my new plipbox project for details

  • Nice prject!

    I want to push this project furthermore. I designed a parallel to ethernet board that I want to connect via this PLIP library. Is there a detailed document about the plip protocol?

    My board is using an atmega328 and a ENC28J60. I want to emulate a PLIP enabled device with the atmega so that ethernet frames would be forwarded to the ethernet connections and back into the microchip ethernet controller.

    Concept is simple but I need your help to comprehend this protocol.

    This ethernet device would enable any Amiga to have a 10MBPS ethernet connection.

    Nitz76

  • @Nitz76: I have already done that… see my plipbox project!

  • Duh!!! Sorry I forgot to use my eyes!!! 8op

    Yup, nice project!
    I’m retrofitting it into a dedicated board to test it. Board I’m using is called tuxgraphics v1.5, available from their website. Easy to prototype on it.

    I’m trying to understand the way it works. I see two networks set up in the card. One is the local network (I set it to DHCP), that is no question. There is another one; 192.168.55.1 and 2. What is this one for?
    Are you routing/nating this one to the other one? Is it only a network available between the adapter and the Amiga?
    If I remember correctly how SLIP networking works, you need two endpoint id. Is it the ID you are using?

    Would you think modifying the whole project to direcly have AmiTCP stack to browse through the registers would be a big deal? Is the libraries are well documented?

    The other bad thing, this chip is only 10Mbps. The Wiznet is 100Mbps. Sounds better… I worked a bit with this one. There is more registers available plus the connection is faster. Dark side is the need for sram and a bigger CPU with more IO to support all this.

    Definitively, you hit bulls eye with this project. Any 8/16 bit computers would need this adapter to connect to Internet.

    Don’t stop the groove!

    Nitz76

Leave a Reply