I am restoring a Windows 3.1 computer that has Internet Explorer 5 installed. I would like to connect it to the internet using a Linux-based laptop as an intermediary.

The physical connection is working fine and is connected as follows:

386 -> RS-232 to USB adapter (COM2) -> Linux Laptop

I have read that pppd allows init and connect scripts for adding special logic to PPP connections, but I can not find any resources directly related to "tricking" Windows 3.1 into thinking that the laptop on the other side of the null modem cable is an ISP. Is this possible via special configuration?

Some other clarifications:

  • I am using the IE 5 dialer
  • IE 5 comes with full TCP/IP support when you use the included dialer

UPDATE: I got it to work, but not with the default IE 5 dialer. I ultimately had to use Trumpet Winsock to get things running, as was suggested by some users in the comments of this question.

  • 2
    You may want to also consider an ISA Ethernet card (E-Bay has some 3Com Etherlink III cards for less than C$20.00) and TCP/IP stack: 10Mbps isn't exactly fast, but it's going to be much faster than a (possibly 9600bps) serial link.
    – ErikF
    Jan 30, 2019 at 23:35
  • 5
    @MartinRosenau 10BASE-T is not considered obsolete and is still supported on modern switches. BroadR-Reach wasn't ratified until a few years ago, so I'd put the odds of a consumer getting hold of hardware that supports it at vanishingly small and the odds of there being an ISA card supporting it at nil.
    – Blrfl
    Jan 31, 2019 at 12:42
  • 1
    In addition to PPP, you might want to research its predecessor, SLIP. These were the two most common methods for connecting back in that era. Trumpet WinSock was the most common stack during my Windows 3.1 days. Feb 1, 2019 at 15:32
  • 2
    @rakslice I finally got the machine working (had to use Trumpet Winsock instead of dialer), so those requirements may have been on the side of caution. I was able to load a few light pages that did not have a ton of HTML.
    – Rick
    Feb 20, 2019 at 13:50
  • 1
    @user3141592 Yes the results were posted here: rickcarlino.com/2019/386-restoration-progress-part-ii.html
    – Rick
    Jan 8, 2022 at 17:09

2 Answers 2


... to "tricking" Windows 3.1 into thinking that the laptop on the other side of the null modem cable is an ISP.

What dial-up software do you have?

As far as I know, Windows 3.1 came without any TCP/IP support itself, but you had to install the TCP/IP support ("winsock.dll") from another source.

I remember that my provider published CD-ROMs that contained the dial-up software including TCP/IP support.

If you have such kind of dial-up software, I doubt that it will work with any other provider. Maybe such a dial-up software will even drop the connection if it does not receive "special" IP packets after the PPP connection has been established.

If you have some dial-up software that works with any provider but requires a dial-up modem, you could write some C/Perl/Python/Java/... program that emulates a modem dial-up phase:

Incoming bytes from the standard input are ignored until you see "A"+"T". You remember the next byte; if it is not CR, you wait until you receive CR.

If the byte following the "A"+"T" was a "D", you write "CONNECT"+CR+LF to the standard output and exit the program.

Otherwise you write "OK"+CR+LF and continue waiting for "A"+"T"... (the entire program is an endless loop which only ends if "A"+"T"+"D" is seen).

  • 1
    The Wikipedia page on Windows 3.x confirms that 3.1 didn't support TCP/IP without the use of a 3rd-party Winsock package until a 1994 add-on (Wolverine) for Windows for Workgroups 3.11 (and also notes that that implementation didn't support dial-up).
    – TripeHound
    Jan 31, 2019 at 9:31
  • 5
    Trumpet winsock was the one everybody used IIRC.
    – JeremyP
    Jan 31, 2019 at 10:16
  • I am using the dialer that comes with internet explorer 5. That includes a full tcp stack also.
    – Rick
    Jan 31, 2019 at 13:08

When I did this back in the day, I had a "normal" dial up Unix shell session.

What I was able to do was call up normally, and get to a shell prompt.

At that point, I'd execute pppd on the server, from the command line.

Then, on my Unix system, I fired up client software telling it use the serial port I was using for the modem.

At that point I had connectivity.

pppd works on both ends, it's both the client and the server.

You simply need to have pppd listening on the serial line that you have from the incoming side of the process, and then have your client open the serial port on the client. You don't need dial scripts, since you're not dialing -- you have no modem.

At this point, it may Just Work. I'm just not familiar enough with your client package to give hints on how to pull it off.

While there's 32,768 options for pppd, when I used it was very simple.

If you were running a linux box on both ends, and tried to share on /dev/tty1 on each, it's close to as simple as typing "pppd tty1 19200" on both machines.

You just need to figure out how to get your "dial" software to work. If it's assuming there's always a modem on the other side, you'll have trouble (though you might be able to create a "connect script" on the server side to make it LOOK like a modem (i.e. accept modem commands, and return appropriate replies).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .