In our shop it is tradition for the first step of any good plan to be "Build a Time Machine". If you have a time machine you can do the rest of the steps in any order, measure once and cut twice, have your future self hold a nail for you to hammer in, or go back to convince yourself that the whole thing was a very silly idea after all.
We never seem to have time to follow through with our good intentions, but over the years we've been collecting parts for an actual time machine. Ok ... so maybe it can only bring you to the early days of the ARPANET, but it does it in style. Get on your fez and bow tie, we're heading for the pre-dawn of the internet.
- Antique Telephone (G type handset)
- 300 Baud Acoustic Coupler Modem
- DTMF Tone Generator
- Private Branch Exchange
- Green Phosphor Cathode Ray Tube Monitor
- Model M (buckling-spring, clicky) Keyboard
- AT to PS2 Keyboard Adapter
- PS2 to USB Keyboard Converter
- External USB Fax Modem
- Raspberry Pi Dial Up Server
- Raspberry Pi Dumb Terminal
- Seamstress Computer Desk
The scope of this Instructable is huge. If we were to try to include it all in one, it would have taken scores of steps and hundreds of photographs. So instead, we are trying something new. Think of this as the overstructable. Through out this guide, when a step or component is too complex to explain in the required detail, we will link to a substructable. Each substructable is a stand-alone project on its own. There is a wealth of information and history about dozens of subjects covered in this group of Instructables. The overall theme of the set is telephones and telecommunications. If you've ever wondered how it all works (even if you don't see yourself building a Telecom Time Machine) we've done our best to make it well worth reading through the whole set.
We sincerely hope something here inspires you to tackle your own project (and post it to Instructables)!
Special thanks to Forbin for building the amazing time capsule telehack.com, and to all of the people in the #tymkrs community who helped figure out how to make all this stuff work.
Step 1: Build a Time Machine (Or at Least Collect Parts for One)
The list of required items for this project is full of nearly impossible to find items. No we are not just being mean, hehe. You can find stuff like this, especially if you have patience and know a few tricks. It took a couple years to collect the items for this project. You could go out and pick up this stuff on a shorter timeline, but you would spend ten times as much money.
So, given you are not in a hurry, where do you find things like this?
The phone, acoustic modem, and monitor were all auction items. We watched lots of auctions go by, waiting for ones to go unnoticed by the deep-pocketed competition and ninja bid at the last moments. Victory!
These places are great, even if it's just to browse for project inspiration. You never know what you will find digging around a surplus store. Many items on this list would be likely finds. Best part, the owners are generally happy to haggle a bit on prices.
Flea Markets / Junk Shops / Classifieds
For the more everyday items these places are particularly good. When you do find vintage computer / telephone items at these places the prices tend be very low due to most people having no interest in them.
Friends / Family / Local Maker Space
Every one has old stuff taking up space. It can pay off to ask around. That's how we ended up with the Model M keyboard and the sewing machine.
Step 2: Restore an Old Telephone
What kind of phone should you look for? What is required?
The most important factor here is that you'll need a type G handset. This 'type g' Western Electric handset shape was what nearly all of the acoustic coupler modems were designed to fit. If your handset is not a standard g, it is most likely not going to fit the cups on your modem.
Next is that really old phones used a different type of jack. If you can find a phone you like that uses a modern modular phone jack, you can save yourself the trouble of replacing the cord.
Finally, if you're planning on using a modern PBX, chances are it does not support pulse dialing ... so if you can find a phone with touch tone dialing, you will not need to build a DTMF tone generator. Another work around to this problem is to track down a pulse to DTMF converter box that plugs in in-line between the phone and the PBX.
For our version of this project, we decided to go purely with aesthetics, overcoming any technical challenges in order to use the exact model of telephone we wanted. Our phone required some rewiring, and lots of cosmetic restorations. It would be too much information to cover in this step, so for full details take a moment to read through the full details we put together for you here:
Restore and Rewire a 1930s Telephone (opens in a new tab)
While it did take some research and elbow grease, I found restoring and updating the space saver phone to be really fun. So, if you're like me, and have a very specific look in mind ... don't be afraid to dive in!
Step 3: Build a Private Branch Exchange
For this project, we need to be able to dial up our own ISP from our Time Machine. Rather than do this over two phone lines, we chose to set up a PBX. This simple box is like what you might find in an office. It allows any extension on the PBX to dial other extensions on the PBX. This is perfect for safely experimenting with telephones without connecting anything to the telephone company (and cheap too, we only spent $45USD on ours).
So here's what you do:
- Plug your Old Telephone into a PBX extension
- Plug your Raspberry Pi Dial Up Server into another extension
- Plug your PBX power cord into the wall
At this point you are able to dial up your private ISP from your Old Telephone.
However, PBXes are very powerful tools and as such there really isn't room here to go into full details, so take a moment to go read the details we put together for you here:
Cheap and Easy Guide to Building a Private Telephone System (opens in a new tab)
For our version of this project, we wanted this PBX to be hidden and built right into the walls of our house. So we rewired all of the old telephone wires! If you want to learn how to wire telephone jacks and wire a PBX directly into your old unused wiring take a moment to read the details we put together for you here:
Retrofit a PBX to Existing Phone Lines (opens in a new tab)
Telephone systems are not as complicated as you might think. It was absolutely going the extra mile here. Not only do we have a system for calling up the private ISP, we now have phones all over the house that are useful as a private intercom system!
Step 4: Build a DTMF Tone Generator
If you are using a telephone that uses touch tone (DTMF) dialing (or have an inline pulse to touch tone adapter), you can safely skip this step. Even if you don't need one, it is still a fun little side project.
The phone we selected for our version of this project was made decades before DTMF dialing was in use, and the PBX we chose was made decades after Pulse dialing was supported. So the problem becomes: how can a pulse phone dial the ISP extension over the PBX?
The solution we came up with is very fun and very much in line with the geeky / hackery / phreak vein of the overall project. It turns out, touch tones are simply tones played in the same frequency range as human voice, so you can just play the tones into the microphone of the old telephone. The PBX hears the tones and believes that you dialed the number associated with those tones. Now I just need a RISC laptop and some rollerblades and I'll be 31337.
For our version of this project, we had an Altoids tin and some spare parts laying around. There are many ways to build a touch tone generator. Ours is built around a tiny Propeller microcontroller. You can take a moment to read the details we put together for you here:
DIY Altoid DTMF Encoder/Generator! (opens in a new tab)
After I built mine, I kept it in my pocket and was the coolest kid at the makerspace all day. Beep! #CuriouslyStrongBox
Step 5: Build a Raspberry Pi Dial Up Server
You would think that building a dial up internet service provider would be difficult, but this is actually pretty easy.
- Install Raspbian
- Connect Pi to your LAN
- Connect an external usb Fax Modem to the Raspberry Pi
- Power up the Raspberry Pi
If Linux supports your usb modem, it should show up in /dev/ as ttyACM0.
To test things out, let's configure things so that another modem dialing in is given a shell login prompt. First we will need to install the modem version of getty, and then we'll need to configure the system to use it to handle data on the modem serial line.
sudo apt-get install mgetty
sudo vim /etc/inittab
Scroll down to where there is "Example how to put a getty on a modem line" and under those comments add:
T3:23:respawn:/sbin/mgetty -D -a -x5 -s 300 /dev/ttyACM0
Save the file and reboot the Raspberry Pi.
That line in inittab tells the system to hand modem serial data over to mgetty. Command line options; -D data modem only (no fax / voice), -a use autobauding, -x5 logging level 5, -s 300 speed of 300 baud, /dev/ttyACM0 the serial port of our fax modem.
So at this point, if you dial up the Raspberry Pi Dial Up Server over the PBX from the Raspberry Pi Dumb Terminal, the dumb terminal should receive a login prompt. The dumb terminal can then login to any of the user accounts on the isp pi and will be provided a shell.
This is pretty cool, but for our version of this project we didn't want a general purpose dial up shell account as much as we wanted to allow guests to be able to dial directly into telehack.com so we went one step further and added a line to the guest user's .profile file (which gets run when a user logs in through the modem).
sudo apt-get install telnet
sudo adduser guest
Fill out the password and what not, then log in as guest and:
At the end of the file add this line:
Save the file.
Now, when a guest logs in over the modem, a telnet session to telehack.com will automatically start!
Step 6: Build a Raspberry Pi Dumb Terminal
Before the days of personal computers, if you wanted to get online, you generally would have been doing so at a 'dumb terminal'. These devices came in various forms over the years, but one of my favorites were the early video terminals. These were a keyboard and a monochrome monitor with a serial port on the back. There was no computer inside, just a data connection to a mainframe / timeshare system.
If you were onsite, you might have a direct serial connection to the mainframe, but if you were offsite you were stuck using a modem to dial in. In these days you weren't allowed to electrically connect a modem to the telephone network so instead the modems worked by playing sounds into a telephone handset's microphone, and listened for sounds coming back from the server through the telephone handset's ear piece. This type of modem was called an acoustic coupler.
For our version of this project, we built a Dumb Terminal emulator from a Raspberry Pi 2. We wanted to use a real acoustic coupler though. This is where things get tricky. A Raspberry Pi does include a hardware serial port on its GPIO header, but out of the box it is in use and the wrong voltages for our old modem. How did we make old and new work perfectly together? Take a moment to go read the full details we put together for you here:
Raspberry Pi Dumb Terminal (opens in a new tab)
This part of the project required a lot of time on the command line; editing files, breaking things, doing more research, fixing things. I learned a great deal about how Linux handles ttys, it was quite a bit of fun. Terminal emulation is something many of us still use everyday. Ever since I had the opportunity to use a real video terminal with a real minicomputer at the Living Computer Museum, I've dreamed about having one here. There is something magical about hacking late into the night on a glowing green monitor @ 300 baud, the modem quietly chirping and hissing away into the telephone as you type characters.
Step 7: Build a Desk Out of a Sewing Machine
Any proper time machine has to look the part. This is where we get to head down the shop and get our hands dirty! But first things first.
Get good measurements of everything that you want to include in your Telecom Time Machine.
Find an old table or old anything that is table like. Really, this could be anything that fits the look and functionality you want to build in.
Now modify the found item just enough to make it work really well as a base to attach all of your parts to.
For our version of this project, we wanted something small and classy. Ours is going in a guest bed room. So it needs to be cute and blend into the simple theme of the room. Toymaker Inn and Suites, now with In-Room Arpanet! We had a small broken antique sewing machine taking up room in another area of the house. It was one of those things that is always in the way, but far too nice to take to the dump. It had great Art-Deco lines that went very well with the telephone we chose. However, it simply wasn't big enough to hold a crt monitor, full sized keyboard, acoustic coupler, ringer box, and a telephone! After a bit of brainstorming we did come up with a way to make it work. The process was way too involved to cover in detail in this step so take a moment to go read the full detail we put together for you here:
Seamstress Desk (opens in a new tab)
Now we have a beautiful Art-Deco desk, ready for a new life as a portal to 1980.
As for the sewing machine we removed. We're donating that to a local retired seamstress. She will fix it up and install it into her more serious large table.
Note that I left the knee switch in place. I'm considering hooking that up to the Raspberry Pi Dumb Terminal's GPIO. It would be great to be able to map it to say Insert, so you could use your knee as a clutch in vi / vim for changing text editing modes. That, however is a project for another day!
Step 8: Assemble Time Machine
Time to put all of the pieces together!
Our telephone's subset box (ringer) is separate from the body of the phone, so we screwed the subset underneath the acoustic coupler wing of the desk.
The type of telephone we used is designed to mount under counter tops etc. so we screwed that to the monitor riser right above the modem shelf. This way there is enough clearance for the handset to clear the modem when on the hook, and the phone is on display (isn't it pretty)!
After that, we placed the Model M keyboard, the Green Phosphor monitor, and the modem in their places.
At this point, we were able to tuck the Raspberry Pi Dumb Terminal into the area behind the keyboard (along with all of the cords). This keeps everything nice and neat. At some point in the future when I get some more time, I would like to move the Pi to the inside of the sewing machine.
We plugged everything into a power strip, connected the telephone up to a modular jack (and therefore the PBX), and connected power.
Step 9: Test Time Machine
The moment of truth!
- Power on the monitor, the modem, and then the dumb terminal
- Watch the screen as the system starts up
- Wait for "Terminal Ready"
- Take the telephone off the hook, you should hear a PBX dial tone.
- Hold your DTMF Tone Generator up to the microphone
- Press the dial button
- Wait for the tones to play, the PBX should ring the extension you dialed
- Listen for the rings to stop and the carrier tone from the other modem to start
- Place the handset into the cups on the acoustic coupler
- Listen to the modems negotiate a connection
- Watch the screen, a few odd characters should show up
- When the modems establish a connection, human readable text should start to appear on the monitor
- Listen for the sounds of the bits coming over the phone
- Wait for a login prompt
- Log into the ISP with the guest account
- Wait to be automatically connected out to Telehack.com
- Wait for the Telehack MOTD to finish (this takes a while at 300 baud)
- At the prompt login or create your Telehack user account
You are now logged into Telehack, a virtual simulation of the computer networks that existed in the early days of the internet. Telehack is absolutely amazing. Somewhere between a text adventure game and an interactive history lesson, it really is like going back in time 30 years.
If you are the social type, on your home node try the 'relay' command. This will log you into a chat room full of other Telehack time travelers from all over the world.
Your account also comes with an email account. Have you ever used a text based email service? Leave me some mail there, my user name is whixr.
If you are more of a gamer check out all of the cool zgames and bas games hidden around the system. My personal favorite is Zork.
From your home server on Telehack, you can go out and explore the arpanet. Did you have an account on your university's mainframe, finger your old account and it will probably be logged in.
You can also use the virtual modem attached to your home node to dial up phone numbers into the past. The hosts and phone numbers are based on real hosts and phone numbers from long long ago. Did you use a BBS back in the day, try dialing it's phone number again. #iFoundASCIIPR0N
Is your favorite movie War Games? Use your home node to war dial all of the numbers in Colorado until you find a mysterious Milnet computer, and try to break in!
Telehack goes much deeper than it looks at first glance. If you are clever, and like to solve puzzles, you can worm your way deep into the system. As you find more and more tricks and hidden backdoors, you will be rewarded with badges. Personally, I've been playing around with the system for years and still have not unlocked everything.
If Telehack sounds like something you want to check out, you don't need to build a time machine. You can just go to telehack.com and use the web interface to log in. You wont be as cool as someone with a Telecom Time Machine, but you'll be connected at a much faster speed.