Here's a silly, but functional way of getting your oldskool Amiga online for £25, or should I say, the cost of a Raspberry Pi. I have one, and the other day I realized that I never really used it - it's just sitting there, collecting dust. In the spirit of my recent "get shit done" marathon, I'll put it to use, today.
Also, one of the problems with the Amiga is the lack of modern equipment, such as network adapters. Obtaining one for "unexpandable" Amigas (like the A500, and to some extent the A600 and A1200 if you exclude the PCMCIA port) will cost you an arm and a leg - or two.
Since the Raspberry Pi was just sitting there, and the Amiga lacked (*) a network adapter - why not just connect the dots and get something up and running? I did, and it worked. Here's a quick writeup on what I did - if anyone's interested I can write a more detailed post with all the information I have.
The goal was to use some of the software I had laying around, such as AmiTCP 4.0 demo (freely available on Aminet) and PPP.device (also on Aminet). I would also use an off-the-shelf nullmodem cable, in addition to a custom DB9 serial port on the Raspberry.
Installing AmiTCP and PPP.device on the Amiga is trivial, just run the installers. Configure AmiTCP:bin/startnet to include
online devs:networks/ppp.device 0
before starting AmiTCP, and also make sure ifconfig uses the ppp interface with the client's IP. That's all there is to do on the Amiga.
The Raspberry's serial port was made by hand to save time. Finished modules can be bought on eBay for next to nothing (for reference, like this guy did) if you can afford to wait a few days for the snail mail to arrive.
I verified that the daughter board worked by connecting it to my desktop with a terminal program. By default, the Raspberry Pi will have a login console running on this port at 115 200 bps. This was disabled in /etc/inittab and /boot/cmdline.txt.
I configured and started the PPP daemon on the Raspberry at 19 200 bps, and started AmiTCP:bin/startnet on the Amiga. To my surprise, everything worked on the first try. PPP connected, the IP address was set, whois, ftp, telnet and ping responded as expected!
All right, so it's not the best speed, and it may not be the most convenient or prettiest solution, but it has a couple of advantages to it:
- Allows you to connect to encrypted WiFi networks not supported by the Amiga
- Reduces the Amiga's CPU load, with a potentially smaller memory footprint
- It can switch between WiFi and cabled ethernet
- Provides firewall, VPN/PPTP, etc
- It's small, bring it to the next copy party!
- Multi-platform: also works on other PPP enabled systems
If this sounds good, why not throw the Raspberry in a case, add a USB WiFi dongle, power it using the Amiga's external floppy port, and wham - you have yourself a portable solution!
*) Not entirely true, but for the sake of the story, let's say it did.
Hello.
Could it be possible for you to detail a bit more the "Raspberry side" of the process ? ( the "configure part" ou the PPP Daemon ... mainly the IP routing )
Thank you very much.
Certainly! I will do a quick write-up on the subject very soon.
Awesome, now I have a use for my raspberry pi... It's kinda like the plipbox http://lallafa.de/blog/
but seems a bit easier..
Regarding the IP routing, it's basically a traditional NAT setup.
With Debian on my Raspberry, I installed the ppp package (apt-get install ppp) to get the PPP daemon.
Configure NAT:
echo 1 > /proc/sys/net/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT
Start the PPP daemon:
pppd 19200 nodetach netmask 255.255.255.0 connect 'chat -v -f /etc/ppp/amiga.chat' persist 10.0.0.1:10.0.0.2 /dev/ttyAMA0
The /etc/ppp/amiga.chat script is just:
TIMEOUT 3600
'' CLIENTSERVER\c
I *think* that should cover it all. Let me know if I left something out.
Fantastic solution! FYI I have put various machines on the 'net using this little device (I don't sell them or work for them!): the XT-Nano-XXL. It's a little daughter card that acts as a serial to Ethernet interface for SPI, I2C, RS-232 (protocol, not line levels) and discrete I/O.
The XT-Nano XXL is cool and all but it's also $86us.
the idea is nice. i guess it could be easily done with this:
TL-MR3020, which only costs around 25$, and has wired and wireless ethernet and runs openwrt.
you have to solder some pins into the pre-drilled holes to get a console, or use a plain and simple usb-to-serial adapter.
The v2 release of the prism2 drivers for 16-bit PCMCIA Wifi cards on the Amiga supports Encryption WPA2 TKIP+AES. You should get better performance than PPP.
That's true (I have a Prism2 compatible card on my A600), but the issue here is the adapter, not the driver. And there's no PCMCIA on the A500. Anyway, this was meant as a low-budget, portable emergency ethernet - "not for professional use" ;)
You can speed it up by allowing the RPi somehow to manage the entire IP stack (rather than using a stack on the Amiga) — it would take away a heap of processing for the Amiga :D
Really nice work there buddy!
Since I have very limited knowledge in this field I'd like to ask you some questions if don't mind?
1. Is this solution possible to implement for a SEGA Dreamcast (the DC BBA is rare and expensive)?
2. The limited bandwidth and high latency, are these factors limited by the Amiga500 or the implementation itself?
Thanks a lot and keep up the good work!
Best regards,
Niclas
Hi Niclas! Sorry for the delayed response, I've been on a vacation.
1) I think so. This works with anything with a serial port. A PPP client is required on the DC, but I believe you should be able to find clients that are portable.
2) The bandwidth is limited by the client, in this case the Amiga's serial port driver which is capped to 19.2K. Luckily there are third-party drivers you can use that will go faster. From what I read, the DC serial port goes well beyond that!
Good luck, and let me know how it works out! The Dreamcast scene is very exciting.
Hello
Would it be possible if you could make an iso image of this?
best regards
Emanuel
I have tried to replicate this on my own Raspberry Pi for weeks with no luck. It would be awesome if you can post the Raspberry PI disk image with this preconfigured.
Hello everyone!
First of all, thanks for the tutorial and all the tips. I've been messing around with this for some weeks and finally got it work in an old mac plus via TCP and PPP (I assume that Amigas have something equivalent).
As I'm quite noob on Linux, I had to try almost randomly, but there are a couple of details that may be useful to someone (who knows...)
My hardware setup:
Link router/RPi: Ralink RT5370 USB Wireless Adapter (wlan0)
Link RPi/Mac Plus: Prolific PL2303 USB/RS232 adapter (ppp0)
(So I got a "WiFi modem" connected to the Mac by a NULL modem cable)
My iptables setup:
iptables -t nat -A POSTROUTING -i ppp0 -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ppp0 -o wlan0 -j ACCEPT
(Notice that I adapted the settings for my hardware, changing "eth0" by "wlan0".
Also added the "-i ppp0" expression the first command. I have no idea if this is relevant, but the fact is that worked.)
Another thing that may have been important (sorry if this seems obvious): On the client side (Mac Plus, in my case), the DNS IP address is the router one, not the RPi one.
I hope not forgotten anything important, but anyway I remain at your disposal for any additional questions, but always remember that I'm completely ignorant about Linux stuff and I'm still not sure how to did this thing to work. In fact, I was about to give up for a couple of times...
Very interesting. However I don;t understand the section - before starting AmiTCP, and also make sure ifconfig uses the ppp interface with the client's IP. That's all there is to do on the Amiga. -
Since I have never used AMITCP could you elaborate a bit on how I make sure ifconfig uses the ppp interface, I'm afraid I don't understand the terminology.
In addition could this be used to access the PIs usb ports? I'm thinking of using the PI to read USB pen drives - usb adaptors are available for the Amiga but very expensive.
John W: I will do a re-write on this article, as I have received several questions since I published it.
I will also try to create a preconfigured Debian image for this purpose, so no manual Pi hacking will be required.
Can't wait for that!!!
Sad to say the fresh write up never happened....
I came back here when looking for a way to use a Pi Zero to emulate a modem.. a bit like a WiFi232 but miles cheaper....