WiFi CoCo for $15 (or for any retro computer with an RS-232 port)

Updates:

  • 2018-02-04: Removed an apparently necessary step.
  • 2018-02-05: Added crude drawing showing how I wired things up.
  • 2018-02-25: Fixing board support URL to include “http”.

If you want to get your Tandy / Radio Shack Color Computer (CoCo) on the internet (or any other 80s computer with a serial port), here is a dirt cheap way you can do it.

Cheap WiFi: The Early Years

Just a few years ago, adding WiFi to an Arduino meant buying a $60 add-on. My solution at the time was to get a much cheaper Ethernet and then use a cheap TP-LINK WiFi router hooked to it. I later found a source for a $10 Ethernet shield that made the overall cost even lower.

In 2014, the internet lit up with the discovery of the ESP8266 – a complete “WiFi on a chip” solution for under $5! Initially, all documentation was in Chinese but folks managed to figure out how to use it and, as they say, the rest is history.

Today the ESP8266 family of products is used in all kinds of things. There are now internet-enabled light switches, and front-ends for 3-D printers, and many other devices that get online thanks to this low-cost solution.

And, this includes all these retro computing platforms!

Cheap WiFi: How To

If you want to experiment, you can order an ESP8266 development board from Amazon for $8.79. This contains the low-cost ESP8266 module and then runs out all the various connection to pins, and also has a USB-Serial adapter built in. This USB port allows you to plug it up to a Mac or PC and upload new firmware, or use the device directly through a serial connection.

Here is the module I purchased. You can find many variations, some costing more, and others costing less. I wanted one I could get direct from Amazon using 2-day Prime delivery, but if you don’t mind waiting, you can find a similar part shipped from China for about $4.

An ESP8266 development board, available for under $9 from Amazon. (And much less from China!)

Since my 1980s computers do not have a USB port, I needed a way to hook them up to the old-style RS232 serial port instead. For that, I bought a cheap RS232-to-TTL adapter. Here is the one I purchased for around $7, shipped from Amazon with 2-day Prime shipping. I see there are some for a few bucks less which might work just as well, and if you don’t mind waiting a few weeks to get something shipped from China, I have seen them for about .67 cents!

RS232-to-TTL adapter.

Now all I had to do was connect the two modules together using some jumper wires. I needed four wires to connect Voltage (mine needed 5v), Ground, Transmit and Receive. You can buy a bundle of these wires for just a few dollars.

Once connected, it looked like this:

ESP8266 development board to RS232 converter.

I can power the module using a standard micro USB cable and charger (just like you might already have for an Android phone or Raspberry Pi or some models of Arduinos).

After this, all I needed was a NULL Modem cable to connect that DB9 connector to the Serial I/O port of my Color Computer. In my case, I used a “Driverwire cable” which has a 4-pin DIN connector on one end and a DB9 on the other. I needed to use a NULL Modem adapter to get the signals talking.

ESP8266 ESP-12E devkit wired to DB9-to-TTL adapter and connected to a CoCo Drivewire (null modem) cable.

Cheap WiFi: ZIMODEM Software

The final step I needed to do was to install different firmware on the ESP8266. The firmware that comes on the module does allow you to type certain “AT” commands and connect to WiFi and remote systems, but I wanted something easier and more compatible. I found this ZIMODEM firmware:

https://github.com/bozimmerman/Zimodem

This makes the ESP8266 look like an old-style Hayes Smartmodem. Instead of using commands to dial a phone number, the commands will “dial” a remote telnet BBS. i.e., instead of:

ATDT 515-555-1212

…you can dial a telnet connection:

ATDT "coffeemud.net:23"

There are new commands added to display all nearby WiFi base stations, and connect to them. There’s even a command to retrieve a file from a web server! You can find full documentation on the ZIMODEM website.

Any terminal program can be used to make these types of connections. You can also configure it to receive incoming connections, and when someone telnets to your IP address, you will see a “RING” (just like the smartmodems did) and can have the system answer. Yep, it would be very easy to put an old-school BBS on the internet with this!

I was able to use this to connect an old Radio Shack CoCo to a remote BBS using the Greg-E-Term terminal program over the bitbanger port at 1200 baud (oooh, speedy).

Building and Installing ZIMODEM

I got these steps from the Amazon page for the ESP8266 part I purchased. I have edited them with additional notes and links.

Instruction & Steps of How to use:

  1. Download the latest version of the Arduino IDE. Today, there are versions of the IDE that run in a web browser (I have not tried these), as well as ones available for Mac, Windows and Linux. I used one for Windows 10, downloaded from the Microsoft Store.
  2. Install the IDE. (Well, duh…)
  3. Configure the Arduino IDE with support for the ESP8266:
    1. Go to File->Preferences and copy the URL below to get the ESP board manager extensions: http://arduino.esp8266.com/stable/package_esp8266com_index.json
    2.  Go to Tools > Board > Board Manager> Type “esp8266” and download the Community esp8266 and install.
    3. Set up your chip as:
      • Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)
      • Tools -> Flash Size -> 4M (3M SPIFFS)
      • Tools -> CPU Frequency -> 80 Mhz
      • Tools -> Upload Speed -> 921600
      • Tools–>Port–> (whatever it is)
  4. Download and run the ESP8266 flasher program from Github:Win 32-bit: github.com/nodemcu/nodemcu-flasher/tree/master/Win32/Release
  5. To test that things are working, in Arduino IDE, look for the old fashioned Blink program (File->Examples->ESP8266->Blink). Load, compile and upload. If it worked, the module will have a blinking LED, indicating it is now running software you build using the Arduino IDE.
  6. Now all you have to do is download the ZIMODEM software, then open the main “zimodem.ino” file in the IDE (the other files will open in different tabs, automatically), and build and load it to the ESP8266.

UPDATE: I did not need step 4 when I recreated these steps on my Mac, so maybe they are not even needed on the PC side these days.

These steps worked for me, but I want to go back through them (as well as finding Mac instructions and Linux if someone can assist me with that) and add photos and more details.

FTP, IRC, TELNET and more! Oh my!

ZIMODEM was created for Commodore computers, and has some special features in it for translating normal ASCII to Commodore’s PETASCII. It also comes with steps on how to use it with a Commodore from BASIC (with some assembly language routines used for high-speed reading and writing to the modem – sound familiar?). They have source code for various internet utilities such as:

  • WGET (get a file from a website)
  • FTP
  • IRC (chat)
  • TELNET
  • TELNETD (for connecting to the Commodore remotely and using BASIC over the Internet)
  • WEATHER (a two player network game from the Commodore PET days)
  • …and others.

With DriveWire on the CoCo, some of this exists but only for OS-9. It is my hope that we can easily port these BASIC programs (and even replicate the assembly language routines) over to the CoCo and do the same thing.

More to come…

19 thoughts on “WiFi CoCo for $15 (or for any retro computer with an RS-232 port)

  1. Soydemadrid

    Hey great tutorial. I’m wanting to make something similar for my old 80s computer while I wait for Paul Rickards to produce moreof his retro wifi modem boards. One thing I wondered is about how you can power this from the serial connection, rather than using a seperate usb power?

    There is a project here https://backofficeshow.com/retronet/

    and they seem to not be using any external power but they haven’t made any of these to sell in a long time…

    Any ideas how I can make something similar so I don’t have to keep waiting to get my machine online?

    Thanks for any help :)

    Reply
    1. Allen Huffman Post author

      Do so at your own peril. I’d be afraid of damaging my old equipment that was not designed to power external devices. Remember that it has to power a transmitter. The power draw is more than what your RS-232 port was designed for. Most of what I read says to use a 500ma power supply “to be safe.”

      I have a custom board being made that the ESP8266 devkit will plug into. It will have the DB9 connector. A friend is going to make cases for it.

      I also sent the DIY parts to someone who is going to try to come up with a case to hold them. $5 in Parts, connect four wires (or $8 in Parts for the full RS-232 signal version and ten wires) and hide it in a case… great low cost alternative.

      Reply
      1. Soydemadrid

        Hi thanks, ok maybe usb power is the way forward! Thanks. So am I better with some kind of esp8266 dev board with built in usb instead of trying to use the esp8266 and max3232 alone?

        I have one of those breadboard power supply boards if i that could also work? Do I need to power both the esp and the max separately/individually or do I just power the max3232 and then that powers the esp?

        Sorry for all the questions, I can’t find any schematics for a basic setup and how to connect which pins to which along with power too!

        Reply
        1. Allen Huffman Post author

          I’m not a hardware guy so I haven’t learned how to use the MAX chips yet. But, I have a friend who designed me a board that has the DB9 and MAX chip on it for all the RS232 signals, and the devkit just plugs into that. We are waiting for them to be produced and then I’ll make those available for folks who don’t want to breadboard.

          Reply
          1. Jonah

            Hi thanks. I got a Dev board instead like in your guide to try. But I still can’t get it to work. I hook it to the MAX3232 like in your wiring drawing, then I followed your steps with Arduino IDE, add the esp8266 boards etc. It seems to compile and flash with Zimodem fine too!

            But then when I run Kermit on my DOS pc and issue some of those extra/custom AT commands, well I just get ERROR!

            If I just type AT it says OK. And ATI1, ATI2, ATI3 and ATI4 give outputs – but ATI5 onwards and the other commands just all give ERROR!

            The DEV board I got is called a “NodeMCU V3 Lua WiFi ESP8266 32M USB CH340G TTL Internet Development Board Module”

            Any ideas what I’m doing wrong? I am right to do the flashing while it is hooked up to the MAX3232 right?

            I even tried some other alternative wifi modem hayes firmwares I found but they won’t work either and give me ERROR too…

            Thanks again for any help. I didn’t think get my old DOS pc online would be as hard as this :)

          2. Allen Huffman Post author

            I just saw your bug report on the s Zimodem github. If you do a stock build of his firmware, there is always a chance it is a broken build since he is in active development.

            Commands to try:

            AT+CONFIG

            And what does ATI report?

          3. Soydemadrid

            Hi thanks, yes posted an Issue on github, but my issue has changed again – silly me, I was on the wrong com port as I didn’t realise I had an internal modem!!! So now I’m on the right com port but the terminal won’t let me type at all now.

            Is there somewhere I can get another build or an older one or such to try instead of stock?

            Another thing I wondered, could a lockuo/freeze be down to my db9 pin to 25pin serial adaptor? I have one like this:

            https://m.ebay.co.uk/itm/DB9M-TO-DB25F-SERIAL-PORT-ADAPTOR-RS232-9-PIN-MALE-TO-25-PIN-FEMALE-CONVERTER-/360465699463

            Thanks again for the help :)

          4. Allen Huffman Post author

            Dueling COM ports. Fun!

            You may be running in to the flow control issue. I have a later huge post that goes into full details on this. If you just wire up TX, RX and GND to your computer’s RS-232 port, that may not be enough. The computer may need to see a “clear to send” signal to know something is there and ready to receive. You can make a modification to the cheap TTL adapter that should work. I have another post showing how we did it. And also, there is a $3.25 adapter we found that had the full signals, CD, CTS, RTS, RI, DTR, DST as well as TX and RX. More wires, but then it works lie a real modem.

          5. Soydemadrid

            hey sorry it was a dumb mistake! I’ve fixed it. I just needed to swap the rx/tx on the max3232! When i set it up I literally connected it like your drawing with tx to tx and rx to rx rather than connecting them to opposites!! So now I’m in and all is working and good in the world. Thanks very much for the help and I’m glad we finally got me online!!

          6. Allen Huffman Post author

            On mine, the labels are “where does this pin go.” But some adapters are “what is this pin” instead. I have five or six different adapters, and some require TX to TX, and others are TX to RX.

          7. Soydemadrid

            Interestingly enough my MAX3232 ttl adaptor has 3 extra pins to yours with T2I, R2O, T2O and R2I if they help at all? Can I hook those up to anything else on the esp dev board for more features/functionality? :)

          8. Soydemadrid

            Hmm not sure myself as I can’t find much reference to them but I think they are R20 (rx output), R2I (rx input), T2O (tx output), T2I (tx input) – would those be the extra pins needed for the other signals you discuss in your other post or do I need more. I might order one of those MDFLY boards if yours worked out ok?

  2. Soydemadrid

    Hi thanks – I’ll try the mdfly out too. How do I check if those r2i,t2o,r2o,t2i connections go through to the pins? I’ve tried a continuity tester one a connection and then on each pin but it doesn’t beep – they must route through the max3232 possibly… I’m thinking they may be flow control or another name for something like that but no idea how to check it. Thanks again for all the help.

    Reply
    1. Allen Huffman Post author

      I suppose they could be hooked to an output pin of an Arduino or something, and you could write code to toggle that Arduino PIN HIGH or LOW and try to measure the RS-232 pins and see what changes, if anything.

      I bought an RS-232 breakout box tester thing that shows the me status of the lines with RED/GREEN LEDs. That is how I learned how the flow control works.

      Reply

Leave a Reply