gekk.info « articles

Dialup In The Age Of Broadband

Note: This article is under development; I have only barely begun experimentation but I wanted to share my findings as I made them.
I also will be speculating on techniques I haven't tried but have no reason to think will not work. Take all of this with a grain of salt.
For now this simply describes my early accomplishments with modem-to-modem communication; watch this space for more useful information.

Two laptops connected via modem over a VoIP ATA

Two laptops communicating over modems using a VoIP ATA (don't mind the two screens not matching - Windows 98 Hyperterminal isn't so hot)

Listen to this article: Listen to this article
(Article has been largely rewritten and no longer matches audio)

Table of Contents:

Preamble
Concepts
    Serial Ports
    Modems
    Applications
    The Tyranny of Lines
    Types of Lines
        Voice over IP
            Configurations
            Challenges
            Bandwidth

This page is about the theory behind modems and the difficulties of connecting them together at home; if you're just trying to make it happen, here's how to do that.

Preamble

When you are dabbling in old computers, there is inevitably an idea that will come to mind: Man, I should get some modems, and...

Of course, the idea peters out a little there because, well, we are never quite sure what we intend to do once we have what we "want" in this hobby. We are eternally cats pursuing laser pointers, but, the cat seems to enjoy the pursuit for its own sake, so, we continue.

The desire is not hard to understand - you want that scream and howl and hiss of static that says You Are Getting Online, as it did in 1996, 1990 or 1987... or 2007, if you lived in Idaho, but I doubt you're nostalgic for that; my first boyfriend certainly wasn't. But for the sake of this article, we will suppose you want to be able to replicate this experience. There are a number of reasons to do this:

I feel you on all these points, but there are problems with getting two modems to talk to each other in the modern era. In this article I will help you overcome them, so that you can dial in to one computer from another, and perhaps get on the internet if you like.

Note: I have another article (also under development) which treads on ground very similar to this, so I will save you some time - in short, if your intent is simply to get a computer online without the use of Ethernet, and your computer has a serial port, I have a generally simpler approach which currently works very well on my Mac and is probably extensible to most platforms. I will link that as soon as possible.

Concepts

As an opening salvo, I would like to explain a couple things about modems. First, while your computer does know what a modem is, it doesn't regard it as much more than a means to an end - namely, to create a serial connection.

Serial Ports

For 30 years, computers talked to other computers over serial, aka COM ports, aka RS232. It came in a whole variety of flavors and shapes - phone plugs, DB25 plugs, DE9 plugs, mini-DIN-8 plugs, and heavily cost-reduced forms that used as few as two pins over bare wires. It was perhaps the most universal communication standard prior to Ethernet - it was even used to get pictures off of digital cameras and scanners, as late as the early 2000s. Every computer had it, so if you wanted two devices to talk, that's how you did it for a very long time.

Serial ports have almost no intelligence - you can Send Bytes and you can Receive Bytes, and that's just about it. There are a couple other pins, much of the time, which can be used to indicate some very simple conditions like "stop sending me bits, I'm out of buffer space," and those are optional. Critically, there are no "connections" in the world of serial.

If you get a Cisco router, today, and plug into its serial console port, as it boots up it'll spit out hundreds of messages. Unplug the serial cable and the messages will stop; plug it back in and they start again, right in the middle of a word. The router has no idea that your PC was disconnected. In fact, almost every Cisco router in the world is currently turning the data pin on its serial port on and off, blindly, pulsing out diagnostic messages just in case anyone is listening.

To drive the point home: When you connect two computers over a serial cable, nothing happens. There are no addresses or protocols, just a pipe that carries bytes; the computers on each end have to be manually informed that a connection is present, and matching programs have to be executed on both ends and told about each others existence if you hope to get anything done. This also means you can do virtually anything over a serial port as long as you have the right programs on either end.

In the simplest configuration, you can just plug two serial dumb terminals - like those made by Wyse - into each other with a cable that swaps the Transmit and Receive wires. Now, when you press a letter on the keyboard of one terminal, it appears on the other, and vice versa.

If you were to plug one of those terminals into, say, a serial port on an old digital camera, if you knew the right commands to type, you could get it to send a saved picture - and it would appear as a thousand screenfuls of gibberish characters, because the camera sends pictures by encoding them into ASCII and throwing them out the serial port, with no idea where they're going, if anywhere.

Modems

The purpose of a modem is to make a very long pretend serial cable, with the two ends represented by the port on the back of your modem and the port on the back of the modem you're calling.

Your modem makes a phone call, another modem picks up, they scream at each other, and then they disappear from the equation. From your PC's perspective, once the call is established, it can throw bytes out of its serial port and they arrive at the far end just as if there was a cable between it and the other computer - it's a 20,000 foot cable, of course, because you're several states away from your destination, but the modem handles all that by turning your bytes into howling noises that survive the trip over the telephone line and get reassembled into bytes at the other end.

Think about it like one of the funky little hardware emulators you can buy now to plug into a C64 or the like, that pretends to be a floppy drive but is actually an SD card. Suppose you had (and you can buy these) a gadget that plugged into a serial port on your PC, and then when your PC sent a byte, it packed it up into a packet and sent it to some specific IP address, where a matching device unpacked it and emitted the same serial signals to another PC, and neither one knew that they were talking over the internet. That's what modems do, just, over phone lines.

Modems also connect to your PC (and to the computer you're dialing into) over serial ports. Generally speaking, your Hayes or US Robotics had a DB25 connector on the back which you plugged into your PC's serial port. ISPs may have had banks of phone lines plugged into banks of modems plugged into special serial cards with 8 or 16 or 32 ports. You could, unquestionably, connect to a dialup internet service provider by simply plugging a 6' serial cable between your PC and their dialup server. It would be inconvenient, to be fair.

 You might be aware that there were modems that didn't appear to use serial - they used PCI or ISA slots, or USB, but under the hood, those were serial connections as well. If you have an old P3 laptop with a built in modem you can check this - go to Device Manager, open up the modem device and you'll see it followed by (COM6) or the like. This is a virtual serial port created by the modem driver; for all intents and purposes the modem works just like an external one would.

The OS usually tells the modem to make a call by just chucking the right commands out the serial port, virtual or physical. The modem does its magic, gets the call set up, tells the PC when it's prime time, and then gets out of the way. Any bytes the PC sends after that are just sent down the phone line and reassembled at the other end, as if the modem wasn't there at all. If the PC needs to communicate with the modem, it has to send a special series of bytes that the user is unlikely to ever enter, which put it into a command mode, at which point it can be told to hang up the call, among other things.

In our dumb terminal example above, if you substituted the cable between the two terminals with a modem, and you typed the right command - ATDT15551234 - the modem would place a call to that number. The user on the terminal at the other end would see the word "RING" on their screen, indicating a call is coming in, and they would have to type ATA to answer it. Their modem would then pick up, your two modems would negotiate a connection, and then you could type letters and they would appear at the other end, exactly as if a serial cable were in use - except the other terminal could be on the other side of the planet.

Applications

So, why tell you all this?

Well, maybe you're 20 and you don't quite know what was going on behind the scenes with this stuff. Knowing all this might make diagnostics easier. I also like talking about it.

But regardless of age, it's very likely that all you ever did with modems, if you ever used one, was dial up to get internet - and that's not all there is to it. That's just one of many applications modems can be used for, and in my eyes that means you have a lot more reasons to experiment with this.

You can connect anything over a modem if it speaks serial and can send the right commands. As I suggested earlier you could, for instance, put a dumb terminal in your bedroom and use a modem to call a matching one at a friends house and simply type at each other over it in realtime. Silly, perhaps, but you could do it, especially if you're nerds in the beginning stages of a whirlwind long distance relationship.

You can also use modems to make computers available to other people that you know, or maybe don't know. It doesn't have to be a *network* connection you're setting up - you could put a modem on some arcane old Unix system and let randos on the internet dial into it to poke around, just for the sake of getting the full retrocomputing experience.

So now that you understand what modems actually do and some notions of what they can be used for, let's move on to the problems we face, and then the solutions.

The Tyranny Of Lines

One thing you have to understand up front is that generally speaking* modems do not work without a phone line, and a phone line is not simply a pair of copper wires. A phone line:

Only after all those things happen can a call actually be established. I doubt I need to explain that these are not easy to replicate with common components - by the time you've created something that does all of this, you've built what is called a PBX, essentially a tiny phone company. This wouldn't be easy to build, you can't get one for under $100, and if you did it would be a pain in the ass - a tremendous boondoggle to your little hobby project.

Modems don't technically need all these things to function - they don't need any of it, in fact, but unfortunately they will refuse to operate without all of it. So your first obstacle is that you need a "phone line", full stop.

Footnote: It's said that there is a command you can send a modem to tell it to initialize a connection without requiring a phone line - just a cable plugged between two modems.
The AT command you have to issue to do this is ATX3 - but that's as much as I understand, and I haven't yet figured out how to apply that information.

If I figure it out, I'll update this doc. To me it's somewhat moot, because I largely prefer the "fake phone system" approach for its "authenticity" if you will.
Notably, this kind of connection would probably enable you to get speeds as high as 56kbps between two devices, whereas (for reasons I'll explain later) it is impossible to get any connection speed over 33.6kbps when dialing between two modems. But is speed really important to your hobby retrocomputing project?

Types of Lines

There are a few different ways to get a phone line that modems will work over.

Telephone Line Simulators

First, you can get devices that simulate a telephone line, unsurprisingly called "telephone line simulators." Search eBay for them - they're almost all big, bulky and expensive. They have two or more ports, produce a dialtone, let you dial a number, and then ring directly to one of the other ports. They're usually intended for simulating degraded lines for diagnostic purposes, but in a lot of cases, when the call is connected, the device literally just bridges the two ports together, so this is probably the cleanest way to do this if all you want is to connect two devices in the same room - but it's not the cheapest, certainly, and usually not the simplest.

Real Phone Lines

If you aren't doing bad for money you might think, "Ah, screw it, I'll just order two phone lines from Verizon." And, while they do still sell plain-copper phone lines, and you could spend $120/mo. on this silly hobby project, I should caution you that the phone lines they sell now are not the ones they sold 20, 30, 40, or 50 years ago.

In the 60s, when you placed a call from one place to another, there was a good chance your phone line was being literally directly connected to theirs, making a completely clear channel. You send a voltage, it arrives at the other end, like a 5000 foot extension cord.

Now, many things changed over the following decades - T1 digital trunks, all digital switching, digital signal processing - and people started to have more and more and more problems with modems. The technology that the phone company used to make voices sound better made modems work worse, or not at all.

This was not so much of a problem, but these days things have changed completely. If you order a copper phone line today, there is a good chance that it's nothing more than a Voice Over IP analog terminal adapter - in other words, your phone line ends at the phone company central office by being plugged into a thing that has an ethernet port on the back and turns your call into a Zoom session. I am not, really, actually joking.

Now, for reasons I'll explain in the next section, there's lots of stuff VoIP can do to mess up your modem call. I'm not going to say that the configuration of these modern VoIP-backed lines is necessarily going to make your modem not work, but it could, if the phone company has the wrong settings applied by default - and then you'll have to call them and fight with them to try to get your line set up for modem use, which maybe nobody in their support center knows how to do anymore, and for $40-60/mo. per line, is that really worth it? Is it really worth it when you can just build the exact same VoIP setup at home for $20?

Voice over IP

Without getting deeply into the definitions, It's Like This: VoIP means making phone calls over the internet. It's virtually always accomplished with a protocol called SIP, and there are millions of devices that speak it. It's a potentially very complex protocol, but fortunately you can ignore 99% of it for our purposes. It works just like a Zoom, Discord or Skype call - your voice is digitized into a series of packets, sent over the internet, and converted back to analog audio at the far end.

The most common implementation of VoIP is a native VoIP phone - this looks like an unassuming office telephone, but it has an ethernet jack and connects to a phone server, either a local one (called a PBX) or to an internet VoIP provider (called an ITSP) which helps to translate their calls into "real" phone calls and connect them to the ordinary phone system.

There are also VoIP softphones - programs you run on your PC that let you place and receive calls without involving any hardware at all. I've done some research into using these for dialup experiments but so far there's not much meat on that rib.

The other common hardware implementation of VoIP is what's called an analog terminal adapter, or ATA.

Grandstream HT-502 Cisco SPA122 ATA

These are ATAs - specifically, a Grandstream HT-502 and a Cisco SPA122. These are the two most common ones I'm aware of, but every ATAs is essentially the same.

It's the back side of a VoIP phone - with an Ethernet port and IP packet encoder - glued to an analog front end - with a high voltage ring generator and digital to analog converter. You plug WAN into an internet connection, configure it, and out from the Phone ports pops what looks for all the world like a "real" phone line. It gives dialtone like a phone, it accepts dialed digits like a phone, it rings like a phone when called, but it's a modern single-chip computer running Linux and speaking native IP.

These aren't expensive - $15-20 on the used market - and they are extremely reliable and easy to configure through a web interface.

These devices were invented so that people could switch to VoIP as the cost and inconvenience of copper phone lines increased. You, too, can take this same approach - plug a modem into this device and, with potentially some adjustments, you can make and receive data calls as if you had a "real" phone line. This is unquestionably the cheapest and most flexible way to do this task, so that's what the remainder of this article will cover.

Now, VoIP is extremely flexible, which is both its greatest feature and its greatest downside. There are countless ways to configure it - you can set up your ATA so it connects to a "real" phone service, and you'll be able to call in to actual phone numbers. You can also make it work without any connection to outside phone service, without a phone number, without a monthly fee, and perhaps without even an internet connection. You can even build your own private phone network on the internet.

I'll enumerate some of the configurations you can use in the next section, and then we'll address one that should be easy enough for anyone to set up.

Configurations

Let's address the different ways you can do this. There are a ton of options and approaches so this will be lengthy, and we'll split it into two categories. As a reminder, if you want the simplest approach to make two modems talk to each other, you can jump straight to that.

I will also give a tiny bit of condensed VoIP theory ahead of time:

Each phone jack on an ATA is called an FXS port.

VoIP uses a concept called SIP users, which are like email addresses - e.g. "104@192.168.1.15"
The first part is a SIP user and the second part is the address of the server where that user can be reached
A user ID can be a full phone number, like "2065551010" or just an "extension" like "104" as shown here.

Users have to be assigned to FXS ports to identify them so the ATA knows which port to ring on an incoming call.

 

In the first category, we are only trying to make calls between modems in the same house or building. You will not be able to call to or from real phone numbers in this setup.

 

In the second category, you will have the ability to call outside of your house, either to real phone numbers, or at least to other people you're cooperating with.

Challenges

Nominally, a VoIP ATA is supposed to simulate a normal phone line, but there are some things you need to be aware of.

Even with these considerations, I believe you can get a reasonably functional modem call over an ATA, you just need to be aware that it can break in many ways, and expect to have some problems.

Bandwidth

33.6kbps is the highest speed you're ever going to get in this scenario. The reason is kind of complicated.

This is the highest speed that modem manufacturers were able to get working over normal phone lines.
When you called your ISP in 1995, your modem didn't get connected directly to theirs. It went through a digital trunking system, where analog-to-digital converters turned your audio into a stream of digital samples.
Modem manufacturers pushed as hard as they could, and 33.6kbps is the most they could ever get through those converters.

56k was implemented using a dirty trick. While your phone line is an analog connection, which gets converted to digital by your phone companys equipment, your ISPs modems actually connect to the phone company over pure digital circuits.

This means that the audio being generated by the modem on the ISP side doesn't go through a conversion process - whatever they send is exactly what the phone company delivers. It has to be converted back to analog, but that's not as lossy a process as the opposite direction is. This means that the signal going from the ISP to your line is able to carry more data than the signal going from your line back to the ISP.

You might not know this, but 56k modems only got 56k downstream. Upload was never as fast as download, and that's due to this asymmetry I just described. Since the data you're sending has to go through an analog to digital conversion to make it back to the ISP, it's still limited to 33.6k. There was a technology called v.92 which was able to get roughly 48k upstream, but it was finicky and unreliable and diminished your download speed in the process.

Now, since the modems you're using are all analog, they can't play the 56k game if they're going through anything digital, like an ATA. No matter how clean the line you connect over is, as long as there's an analog to digital conversion involved, you're going to be limited to 33.6k.

If you really, really, really want to get higher speeds, you might be able to use a device called a telephone line simulator, which is a gadget that emulates just enough of a phone line to let two devices call each other, and then connects them straight together with no digitizing step. These are not usually very cheap, and they only work to connect two modems that are right next to each other, but it's an option if you absolutely must have those higher speeds.

It's also true that there were digital modems out there, which spoke the same language the ISP modems did, but I have no idea how to use one or what external equipment might be required. You'd be on your own with that one.

If you feel cheated by this limitation, let me remind you that this technology was not even invented until 1995, and was not adopted in any widespread fashion until 1998. Up until then, 33.6 was screaming fast and was only made "obsolete" at the beginning of the nascent broadband era, so really, the only experience you're missing out on is that of the Idaho AOL user in 2002 suffering through loading Flash videos at 56k.


If this was interesting to you, or if you did something interesting with it, email me: articles@gekk.info

If you like my work, consider tossing me a few bucks. It takes a lot of effort and payment helps me stay motivated.

List of Articles