Build your own 9600 Baud C64 WiFi Modem For $10

To start, I’d like to say a huge thanks to Eightbitswide, xxValiumxx, and Paul Rickards for their extremely helpful contributions to this cause!

The esp8266 WiFi Modem design has been really popular with C64 enthusiasts. I’ve been able to get my hands on one, and hack around with some of the available firmware to get 9600 baud working flawlessly. Maybe I should call this unit the “StrikeWiFi”? Anyway, Here’s how to build it:

Parts needed:

  • NodeMCU Esp8266 IoT board (though any board with GPIO breakouts including 4 and 5 should work). Here’s a link to one.
  • C64 Userport Plug

Skills/Tools Needed: Wire and soldering iron. A project board wouldn’t hurt, but not necessary.

Download and install the latest drivers for the NodeMCU Esp8266:

http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

Download the firmware and Windows flasher tool:

http://www.mediafire.com/file/tm71a1oa1a3macc/alwyz_modded_firmware.rar

To flash with windows, open the flasher tool, use the device manager to find your com port, add that to the com port box, and then add the juno12.bin file from the rar archive to the bin selector. Hold the flash button on the esp8266mod while simultaneously hitting the download button in the program. I keep holding the flash button down during the whole write process, though I don’t know if that’s necessary.

If you’re not using Windows, or have some other Arduino style flashing tool, you can use the .ino file I’ve included in the modded firmware .rar file.

Now that the esp8266 has been flashed, let’s wire this up:

Note: You can use the C64’s 5volt power or external power from the esp8266 usb plug. Either works, though there are theories that the esp8266’s current draw might tax the C64’s 100ma 5v supply. I haven’t noticed any problems with this, but do what you feel is best.

Make the following connections using the following pinouts as a reference.

ESP8266Mod Pinout

C64 User Port Pinout

Esp8266 GND -> C64 User Port Pin N (Gnd)

Esp8266 TxD (GPIO1/TXD0) -> C64 User Port B and C (RxD. Yes, Short B and C together)

Esp8266 RxD (GPIO3/RXD0) -> C64 User Port M (TxD)

Esp8266 GPIO4 -> C64 User Port K (CTS)

Esp8266 GPIO5 -> C64 User Port D (RTS)

Esp8266 GPIO2 (d4) -> User Port H (DCD)

Then:

Add a wire from M to 5 on user port plug
Add a wire from B,C to 7 on user port plug
Add a wire from L to 6 on the user port plug

Optional power from C64: Connect C64 pin 2 (+5v) to Esp8266 Vin

First Boot! Follow these steps in order:

  • Load CCGMS 2017, select User Port, and select 300 baud
  • Go back to terminal mode
  • Power on the device if using external power and hit enter
  • A menu should show up from the modem letting you know it’s alive!
  • Hit F8 to go to Ascii mode (Anscii mode) and enter your ssid and password with the following terminal commands: at$ssid=ssid and at$pass=password
  • F8 to go back to the Graphics terminal and type atc1 to connect. This may take a few attempts to connect.
  • Use the commands at&p0 and at&k1 . Without doing these 9600 baud will lock up your c64
  • Change the baud rate by using the command at$sb=9600
  • Go back to the Terminal F7 Menu and select Up9600 Baud / 9600 Baud
  • Go back to the terminal, and you should be able to see at and ok reponses.
  • Use at&w to write these settings to the esp8266.
  • All done. Now your settings should be set every time you boot CCGMS 2017!

If you would like to manufacture your own Strikelink WiFi boards, use the gerber files here to order for Elecrow or your favorite supplier. If you sell these, I just ask that you keep the prices reasonable. It would be great to see a number of worldwide retro stores offering these.

Instructions:

https://1200baud.files.wordpress.com/2017/03/strikelink-wifi-instructions.pdf

Advertisements

25 thoughts on “Build your own 9600 Baud C64 WiFi Modem For $10

  1. Pingback: Commodore 64 Wifi Modem | /dev/blog

  2. Cool project! I see you’re not using level shifters for 5v and 3.3v sides. There was a lot of discussion on this last year if this would damage the ESP but it seems like verdict is it will work. I personally use level shifters to make sure I’m matching voltages.

    I’ve successfully powered my ESP01 from the C64 5v user port with no issues (but then again I am using a 1764 power supply).

    For those interested in building the virtual modem firmware from source, the original code lives at https://github.com/RolandJuno/esp8266_modem

    Cheers,
    Paul

    • These accept voltages from 3.3-5v, so no worries. These nodemcu esp8266s have regulators built in and can actually accept 9v!! So at 5v we’re pretty safe. Thank you again Paul for your work on the firmware.

      • Firstly, I’m not Paul 🙂 Secondly, the instructions I’ve listed show how to hook up the rts/cts lines and which type of ESP8266 module to use.

  3. Pingback: Commodore 64 - Un modem Wifi pour 10€ - Amiga France

  4. Thank you for the resources! I built the modem using a WemosD1 mini pro (it provides an external antenna connector, if needed) and the SparkFun level shifters and it’s working great. Also put it into a small box adding a reset switch for the ESP and another one that shorts pins 1 and 3 for the C64 reset.
    Powering the ESP from 5V user port is not enough in my case (it’s more like 4.7V than 5..) so I used the 5V user port pin only as the high voltage reference for level shifters (ground is common).
    My only concern is that the ESP does’t power on with external power until the C64 is powered too, is it normal?
    Is it safe to start the C64 and then connecting power supply to the esp?

    Bonus question: why nobody developed a commodore Telegram client? how cool would it be?

    Greetings!
    Marco

    • Hi Marco, I’m not sure if it’s normal for the external power not to power the esp8266 without the c64 on. That doesn’t sound normal to me. Are you sure pin 2 of the user port is not connected in some way? I would connect external power to the esp8266 first in most cases, and power the c64 last. I’m not sure what a telegram client is, so i can’t answer that. 😦

      • I’m using pin 2 only as voltage reference for the “high” side of the level shifter (esp8266 3.3V pin on the “low” side).
        If I connect the modem to an external power supply I have to switch on the C64 and to reset the esp before getting its led turned on..
        Does the led indicate power or serial communication?

        Thank you again!

      • The LED indicates power to the esp8266 and no connection to a host. So, it’s basically saying “READY” when it’s blue. It turns off when connected to a BBS. I havent used a level shifter in my design so i cant say how it should behave. Sorry.

      • I think I found the issue, I had to change the led pin definition in the code since it was supposed to be pin 12. In my case (wemos) the bulit-in is on pin 2 instead.
        For nodeMCU it should be pin 16.
        Now it blinks while connecting and works correctly.
        Did you modify your code too?
        Anyways it seems to be dead until I power on the C64 and reset the modem..

  5. Pingback: The Modular WifiModem64 | hackup.net

  6. Pingback: Fixing WifiModem64 Version 1.0 | hackup.net

  7. I’ve got a few esp8266’s in the mail, but they’re the 8-pin ones, which only have GPIO’s 0 through 4. Is the GPIO5 really necessary, and if it is, is there an alternate version of the firmware that uses GPIO2 or 0?

  8. Hi, I am trying to configure the software CCGMS 2017 Final to work at 9600, but this wifi modem seems unable to go more than 300. Even If i set 2400 and like modem userport 300-2400, it doesn’t work. the software not stuck but the modem is. I tryed, at the point you tell to switch at 9600, to select UP9600 and 9600 as speed, but no luck.
    Please can you help me?
    Thanks

    • You need to set the modem to the correct speed, and THEN the software. They need to work together, and one does not influence the other. So, if you’re using my modem, use at$sb=9600 in terminal mode, and then switch to 9600 in the F7 menu in ccgms. When using 9600 baud, make sure to set in terminal mode at&k1 and at&p0, then at&w to write your settings to the modem so it will stay at 9600 baud. Check the modem documentation i posted for more info.

      • Hi, thanks for the answer. Yes I done exactly in that way. Now I am able to work at 2400 but always using user port as modem. If I set at&p0 and at&k1 it is ok, no errors. When I set at$sb=9600 I see the message that tell me that the serial speed will change in 5 seconds, so I go in setting page F7 and select up9600 and 9600 as speed. When I go back to the terminal, the cursor seems frozen even if I press enter, afer some seconds some sqare with diagonal strips appear and that’s it. But the software works. So I have to press the reset on the wifi module and go back to 2400 baud and user port modem. I tryed to set as modem up9600 but 2400 baud and at&p0 and at&k1, but after I set as modem up9600, whan I go back in termina mode, the software crash. I don’t know if ot can hel to find the issue but I had to use the new version of esp8266_flasher.exe because the one that come into your file gave me an error at the end. The new one worked fine.
        I am using a Breadboard to create the circuits because to print the board I was asked 140 by a uk company or 35 by a cina one but I have to wait a lot, so I want to check if all work and eventually buy the china service.
        Thank you so much and Happy Easter, whatever it means to you.

  9. Hi!

    How hard would it be to modify the firmware so we can add three LEDs to this design, for “on the hook”, send and receive status? I think these are important and most old modems had them.

    Finally, any chance to wire up a piezo to be able to hear the handshaking sound? That’d make it so much more real !

    Unfortunately i am coding illiterate and cant do this on my own ☹️

    Thanks for this, I teally appreciate your instructions and my build of it is working great!

    • There’s one small change you can make in the firmware to change the gpio pin that the led is connected to. At this time I forget what it is. I was unaware of it when i first did the firmware mods, so that’s why ii just left it was it was. Maybe someone else can chime in with their experience with that. When you refer to most old modems, you definitely are not talking about old Commodore modems, which didn’t have them at all 🙂 So it never mattered much to me.

      No piezo option, as there’s no audio taking place. no modulation/demodulation of audio takes place in the emulated internet of things world.

      Glad your build is working for you!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s