Dial-up Internet in a box

This page is just a dump of some information and work in progress.

I have a lot of IBM ThinkPads from the 90s, of which most don’t have built-in Ethernet. How do you connect those to the internet? Through dial-up! ISPs don’t provide it anymore these days, so you have to build your own ISP.

Existing projects

First I investigated various existing projects. Doge Microsystems has already done this using a Linksys SPA and separate modems, which was featured on Hackaday. Harald Welte has made a bigger version of this concept with old hardware in a small rack, which he demo’ed at 36C3 with old BBS’es. David Rowe has soldered his own PBX back in 2006, using various ICs and a Blackfin based system. The company Dragino developed the DT01, which is an open source Analog Telephone Adapter running OpenWrt. It features a a single RJ-11 port, so it does not contain any internal hardware PBX/multiplexer. I have mailed them and got a reply from their director Edwin Chen, where he sent me two schematics (thank you!), licensed as CC BY-SA 3.0. He noted that the chip used is EOL and no longer recommended for new designs.

The Linksys SPA 2102 is a device with two RJ-11 ports that connects the tip and ring lines to a SIP client, which can connect over Ethernet to a wider phone network. This is quite nice, but has downsides:

Current plan

I wanted to make a combination of these projects, using modern software, on my own routed PCB.

So we can have a few RJ-11 ports to plug in the cables from the old laptops, which gives them internet connections.

Inside the device, these RJ-11 ports are connected to a PBX, which take up half of the connections. This PBX connects to the main CPU using a trunking port, which multiplexes all the PBX ports over a single line.

The other half of the PBX connections are occupied by modems, which translates the analog phone signal back into UART. These UARTs are then connected to the main CPU

To summarize: when a dial-up call comes in, the PBX sends the signal over the trunking line to the software PBX, which then sends it back over the same line to a modem. The modem converts the signal and sends it to the main CPU. The CPU is running Linux, where mgetty receives the signal and sends it to the ppp daemon. This sends the signal to the Ethernet interface, so it can reach the internet.

It has been suggested in a mailinglist that it would be possible to do everything in software, including the V.92 modem signal processing. Although that’d be awesome, I’m not going that far.


The chip that was used in the DT01 is obsolete, but it is part of the ProSLIC series by Skyworks Solutions Inc. that is still available.

As they write in their marketing: “The Si32178 and Si32179 are the industry’s first two-chip FXS + FXO solution when combined with the Si32911 or Si32919.”


Datasheet: https://www.skyworksinc.com/-/media/SkyWorks/SL/documents/public/data-sheets/si3217x-c.pdf

First, it has the https://en.wikipedia.org/wiki/BORSCHT BORSCHT functions. These contain of:

The PCM output has three lines:

I am not sure if I²S and this form of PCM are actually the same.


There is a single board computer that should be running FreeSWITCH or Asterisk to route calls between the RJ-11 ports and the modems on the other side.


LaForge has been hacking on a DAHDI driver for Asterisk, see this git repo: https://osmocom.org/issues/4923

Question: how to connect various tip/ring lines to this E1/T1 interface?