.___.__       .__                                     .__       .___
  __| _/|__|____  |  |  __ ________   __  _  _____________|  |    __| _/
 / __ | |  \__  \ |  | |  |  \____ \  \ \/ \/ /  _ \_  __ \  |   / __ | 
/ /_/ | |  |/ __ \|  |_|  |  /  |_> >  \     (  <_> )  | \/  |__/ /_/ | 
\____ | |__(____  /____/____/|   __/  /\\/\_/ \____/|__|  |____/\____ | 
     \/         \/           |__|     \/                             \/ 
An experiment in bad ideas.

We are a dial-up ISP!

Tel: 484.820.1337 (On phreaknet? Dial 892.7180)
User: world
Password: dialup

Questions or comments? @dialupworld@oldbytes.space
Wanna chat? #dialup.world/Libera

Need a good VoIP provider? Use my voip.ms referral code and we both get credit

We are WebTV compatible and supply dialup services for WebTV Redialed

Table of Contents


We are running our own WebOne Proxy at Add it as a system or browser level HTTP proxy and you can access any HTTPS website by usinng its corresponding HTTP URL.

Want to surf the web like it's the '90s? Try using a Protoweb proxy or a TheOldNet proxy.

What's all this?

Last updated: 20230718

dialup.world is (currently) a four-line dial-up ISP! Here is how it works:

(For a more thorough explanation, view our config on GitHub)

The phone number is registered via voip.ms, a VoIP "bring-your-own-device" provider. Using an asterisk-based PBX (Private Branch eXchange) running on a Rasbperry Pi, I can connect to voip.ms over the SIP (Session Initiation Protocol) protocol and this will allow calls to that number to come in to my PBX. What's great is that voip.ms allows as many incoming calls on the number as you want so if multiple people call the same phone number, it will just keep sending calls to my PBX whether someone is already dialed-in or not. Basic configuration to get voip.ms and your PBX talking is outlined here, https://wiki.voip.ms/article/Asterisk_SIP.

So somehow we need to turn these digital calls into individual calls that travel over phone lines to modems. To do this I am using a Grandstream HT704, which is a four-line ATA (Analog Telephone Adapter) device. There is no reason you cannot use four 1-line ATAs, or ATAs from different brands, this is just what I used. This small gray box has one RJ-45 connection on it for ethernet that I'll plug into the same network as my Raspberry Pi, and four RJ-11 jacks for 2-wire phone cables. Connecting to this ATA is done over... SIP! So easy! Just a few more lines in the asterisk sip.conf file for each extension (one extension goes to one line on the ATA):

[ATAs](!) ; template for all ATA logins
type = peer
host = dynamic
qualify = yes
insecure = port,invite
canreinvite = no
relaxdtmf = yes
progressinband = yes

[8927181](ATAs) ; SIP login for user 8927181, repeat this block for every unique extension
defaultuser = 8927181
secret = secretpassword
authid = 8927181
callerid = "Modem 1" <8927181>
allow = ulaw
context = from-internal
directmedia = yes
call-limit = 1

On the ATA side, you basically log in with the admin panel and plug in the authid, secret password, and ip address of the PBX and everything should connect up. Since we are dealing with modems, the ATA does need some special settings to work well, and where these options are in the ATA config will differ from device to device. These are shamelessly stolen from the excellent link, https://dogemicrosystems.ca/wiki/Dial_up_server:

One last bit of config on asterisk, we need to set up a hunt group in the extensions.conf file. This is a really dumb hunt group config where it will push incoming calls to the first extension, but if that number is engaged with another caller or otherwise isn't available it will go to the next extension and so on. Actually this isn't a hunt group, it rings everything at once and each modem knows to answer after a certain number of rings. If all extensions are in use, it'll eventually hang up.

exten => 4848201337,1,NoOP()
        same => n,Dial(SIP/8927181&SIP/8927182&SIP/8927183&SIP/8927184,30,m(ringback))
        same => n,Hangup()

Now we can connect our modems up to the ATA(s). Simply connect a phone cord between the jack on the ATA with the "line" jack on the modem. If you are using USR Sportster modems (and who wouldn't be), they require 9VAC power supplies with a 2.5mm x 5.5mm jack. Nobody seems to save these but you can buy a working replacement here, https://www.amazon.com/dp/B00B886CWS?psc=1&ref;=ppx_yo2_dt_b_product_details.

So now we need a computer act as a gateway that we will connect the modems to. For this configuration, I will be using a Raspberry Pi running Debian or "Raspbian Lite" or whatever it is called these days Libre Computer Le Potato running Armbian. I basically used all of the mgetty, ppp, and iptables config from this excellent guide on configuring a modem pool: https://dogemicrosystems.ca/wiki/Dial-up_pool. There is also some good info there for getting a basic PBX set up which might help you with the previous phone-related setup.

My Raspberry Pi is one of those eleven-year-old models so it only has two USB ports and of course I want to run three modems over it via USB. If you are setting this up on a big desktop PC, you can probably just buy some cheap serial PCI cards and that would be less expensive and more fun. Now, I know one of you is going to say that I can use the GPIO on the Pi for one of my serial connections, and yeah I can but don't want to do it right now because reasons. Instead, I went to the Internet and bought a cheap, powered USB 2.0 hub with four ports on it. I went powered because I'm going to use USB to Serial adapters and I have no idea what kind of power they pull down. Having too many could be bad for the poor Pi.

For USB/Serial adapters I just used some that I had. If you don't have any, any one that costs around $10 online is probably good as long as it has hardware flow control. I'm not sure if they make ones that don't have that anymore. Also, I know there is a lot of talk online about chipsets in these adapters and how FTDI is better than Prolific but it does not seem to make a difference here at all as far as I can tell.

Connecting the modems to the Le Potato is fairly simple. The serial adapters have DE-9 ports and you just need as many DE-9 to DB-25 cables as you have adapters/modems. You can also use regular old DE-9 cables and DE-9/DB-25 adapter dongles. DO NOT buy/use NULL MODEM adapters or cables, they are not needed here at all.

The last weird thing I did was flash Tomato firmware onto an old router and use it as a hard firewall between the PC and my Internet. On Tomato, I configured the router to be an OpenVPN client for my VPN provider so any traffic passing through this old router is pumped to Sweden for exit. Instructions for that are here, https://mullvad.net/en/help/tomato-router-and-mullvad-vpn/. You can also add a "killswitch" to the router's firewall on startup that looks something like this, iptables -I FORWARD -i br0 -o `nvram get wan_iface` -j DROP which will make sure no traffic goes through your WAN interface even if the VPN connection goes down.

Questions or comments? Let me know!

Version 1.0

Last updated: 20210716

Version 1.0 of dialup.world was very similar to the Version 2.0 configuration above, but it relied on Windows Server. The PBX and modems remain the same, as does the VPN exit.

The computer I used was an old Dell Pentium 4 machine that was pretty horrible but will be fine as our ISP box. I decided to run Windows Server 2003 because I'm a masochist, and knew eventually I would move things to a Linux box because that would work better. Seriously, I hadn't used Windows Server since 2005 so I don't know why I thought this would be fun. Anyway, I followed Cathode Ray Dude's guide to configure a Dialup RAS here, https://gekk.info/articles/ras_2k3.html. I didn't change a thing aside from making the ONLY auth type PAP. I initially checked all the boxes for all the auth types, but it seems that Windows 3.11 THINKS it knows CHAP/MSCHAP but it doesn't actually, and PAP should work fine with everything you throw at this.

Connecting the modems to the computer is fairly simple. Your computer should have one or more DE-9 ports for serial and you just need as many DE-9 to DB-25 cables as you have ports/modems. My PC had only one DE-9 port so I bought this PCI cart to get two more DE-9 ports, https://www.amazon.com/dp/B00166RIAC?psc=1&ref;=ppx_yo2_dt_b_product_details. Of course, Server 2003 doesn't know where the drivers for this are, and the included drivers disc DOES NOT COME WITH THE DRIVERS FOR THIS CARD (how) so I found them online and then it all worked as expected, MCS9865_WHQL.zip. If you can get working Server 2003 drivers for a cheaper PCI (not express) card or you can get modems to identify when plugged into a USB/Serial adapter on Server 2003, let me know and I'll put the info in here! Connecting modems to your PC through the proper ports and cables and then turning them on should result in Server 2003 identifying them and automatically configuring them for the RAS. The first time you turn the modem on the Server might BSOD (mine did) but it will be fine after a restart and then you can power on/off the modem at will and no crashes.

🄯 Pinargio Pizza 2023