Introduction: Legacy Networking With Linux.

About: Bytesize articles instead of a trilogy in one post.

We have already done networking with xrdp and ltsp.  Now,  this is a very good way to use older equipment. Especially in an emergency.  Knowledge of using the command line is required. Mouse jockeys need not apply. I say that with affection.  Most Unix/Linux are set up to connect to the serial ports automatically. Some versions of linux prefer you use a usb to serial connector for communication though. Actually you could do this with a Microsoft based system also. (different application software such as old dos programs would have to be used.

Note: Experience at cable making is needed for this project if you can not find readily available parts. see also:

Step 1: Software Available for Linux.

There is lots of good software available for the non-gui (graphical user interface). This is sometimes called using the command line.

Small sample of software available:

Links2 – internet
Bashpodder – audio podcast collector
Alpine – email client
Irssi – inter relay chat
Centerim – instant messaging client
Oleo or Sc – spreadsheet
Vim, emacs, nani, joe, or a dozen other programs – word processing
Antiword – deals with office based documents
Putty – secure accessing tool
Screen -multiple seesion tool
Ledger – accounting (seems to be based on gnucash)
gpm, mc, synaptic, sed, awk, sort, ncurses, bash ,ssh, wget, curl, or other command line tools.
Sqllite, mysql, psql, plus man other – databases
Hnb – outliner to organize ideas
freebasic, gcc, python, pgp, pgp-cli, perl and many others – computer programming language tools.
Too many to list here – games. (i.e ninvaders)
Moc, aplay, mplayer, cmis and may others – music players
Espeak or Festival – voice synthesizer.
Nget and may others – news readers.
Cdrecord – cd buring program.
wird – nice calendar tool.

Step 2: The Network.

The network is what traditionally is known as a star network. You will basically have one server with a few terminals (aka clients) connected. Since terminal programs have been out for many years, you have a variety of systems that can connect. There are basically two ways to connect either modem to modem or via rs232 (serial port) using a what is known as a null modem interface to make sure the right wires connect. The next two panels show the wiring for these connections.

Note: You have to be careful some rs232 interfaces use different voltage levels anywhere from 3 to 12 volts. Not matching the correct voltages will damage equipment. This is especially true with the old 8 bit computers such as the Commodore 64 unless you use a special interface. Check the specs for sure. (i.e. ttl not equal to rs232.) Maxim as well as other companies make integrated chips that make interfacing easier.

Actually real networking was done vie the serial line interface protocol. Most systems really did not support it, but there was an operating system for the C=64 called Lunix (not linux) that supported the Slip protocol so that you really did have separate systems working together.


Trs-80 model III

os/9 it was I think built in

Step 3: Old Laptops Can Make Great Terminals Too'

As much of a 'nix advocate as I am, there are a few times when for
really old equipment, a dos boot disk just works. All you really need is a dos boot disk, a terminal program, usb to serial adapter, null modem cable. The biggest advantage of this is that you do not need a network to connect to the unit.

You can get dos from all boot disks and then use the dd command to create a bootable disk. My computer did not have a floppy drive, so I found a usb floppy drive that was inexpensive. It is also great for making bios upgrade boot disks.

$ dd if=dosdisk.img of=/dev/sdb

As much of a 'nix advocate as I am, there are a few times when for
really old equipment, a dos boot disk just works. All you really need is a dos boot disk, a terminal program, usb to serial adapter, null modem cable. The biggest advantage of this is that you do not need a network to connect to the unit.

You can get dos from all boot disks and then use the dd command to create a bootable disk. My computer did not have a floppy drive, so I found a usb floppy drive that was inexpensive. It is also great for making bios upgrade boot disks.

$ dd if=dosdisk.img of=/dev/sdb

You will also need to set up your serial connection depending on whether
you are using the traditional serial port or the more modern usb to serial adapter. Every distro is a little different on the setup. We used "Arch Working with the serial console - ArchWiki.html" as a guide. Was working in just a few minutes after a host reboot.

When logging in you may have to hit the return or enter key a few times for things to sync. Minimal login might be like this.

TestSystem Login: username


Last login: Sat Dec 6 09:32:54 on ttyUSB0

[username@TestSystem ~$ _

From there you can use the system just like a ethernet connection, but there will be no gui. it is almost like going retro.

If you do have ethernet connected you could use lynx to connect to the net. This is great if you need internet access to fix and issue.


Search Images Maps Play YouTube News Gmail Drive More »

Web History | Settings | Sign in



Google Search I'm Feeling Lucky Advanced search

Language tools

Advertising Programs Business Solutions +Google About


© 2013 - Privacy & Terms

Enter a whereis query:

Arrow keys: Up and Down to move. Right to follow a link; Left to go back.

H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

You can even play games from the terminal such as ninvaders.

Having this terminal setup could also be used to rescuing other linux
systems in the rare case you might need it. Last but not least the terminal mode is great for running all those page scraping scripts to get data off the internet, we have shown you. It is not how powerful your machine is, but how you use it!

Step 4: Null Modem Interface

RS232 to RS232.

You can get null modem adaptors readily made so you do not have to make one. I have left the specifications in case you want to make your own or you do have access to the parts, but not the ready made adaptors. A null modem is  a way to interface two serial ports so that they can talk to each other. This sometimes known as a hard wired connection, See also

Note: if you are unsure about the connections, then get a professional to help. I will not be responsible for any issues. Also some devices use non-standard rs232 pin outs. you have to check the documentation for each device to make sure.

Step 5: Modem to Modem Cabling.

Modem to modem.

How to connect two modems directly together. You can either do it with a simple battery or use a wallwart to supply power.  All the parts should be readily available from most real electronic stores.

Note: if you are unsure about the connections, then get a professional to help. I will not be responsible for any issues.

Note that the resistor value depends on the actual voltage used. For 24V about 1K Ohms max will give at most 24mA (12V @ 500 Ohms, 9V @ 380 Ohms); the resistance of the modem circuit will reduce this slightly (you may need to reduce the resistor value, but if it works with the values mentioned, leave it at that; I'm using 380 Ohms with a voltage input of 14V). The telephone company guarantees about 20mA minimum in an actual phone line, and we want to be about the same minimum. Note also that the battery shown can be replaced by a "wall wart" power supply; most of these are un-regulated (my "9V @ 130mA" plug in DC supply gives about 14V on this circuit when connected to a telepone for testing) and consequently will need an electrolytic capacitor of about 2200 uF across the power supply + and - terminals to reduce the "ripple" voltage (i.e., AC "noise"); be sure to match the polarity of the Electrolytic to the polarity of the power supply.

Step 6: Logins and Etc.

If you have not already done so you will want to add users for your system. You can do it via the gui interface or you can do it via the command line via the "useadd"  or "adduser" commands.

ggarron@debian:~/tmp$ sudo adduser test
Adding user `test' ...
Adding new group `test' (1004) ...
Adding new user `test' (1003) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
    Full Name []: gasf
    Room Number []: asdg
    Work Phone []: asdf
    Home Phone []: asdf
    Other []: asdf
Is the information correct? [Y/n] y
With useradd you have to add parameters.

$ sudo useradd test1

Step 7: Hookem Up and Go to It.

One last thing you will need to do is set the terminal specifications usually but not always 9600 8n1  (9600 baud, 8 data bits, no parity and 1 stop bit.) For modems, you have to use a lower speed depending on it's capabilities.  Most modem programs make it very easy to change these settings. In any case, both the server and the clients have to have the same specifications for each connection. The connections as a whole do not have to be the same.

You should be able to just plug in the parts and the terminal prompt for the login will automatically come up. (on some systems you might have to hit <ctrl>c or enter to get the attention of the server.

What is really neat is you can use the old pda's that have serial ports on them. this is great for connecting to servers when a monitor is not readily available for use. In fact, all our servers do not have monitors available on the servers. either you connect via rs232 using a terminal or you use the network via ssh.

Have fun and good luck.

Step 8: Microsoft Info.

Microsoft way:

A direct cable connection is a link between the input/output (I/O) ports of two computers by using a single cable rather than a modem or other interfacing device. In most cases, you make a direct cable connection with a null modem cable. You can use a direct cable connection to transfer information between the computers to exchange files, access resources, and so on.

To Make a Direct Cable Connection

  1. Click Start, click Control Panel, and then double-click Network Connections.
  2. Under Network Tasks, click Create a new connection, and then click Next.
  3. Click Set up an advanced connection, and then click Next.
  4. Click Connect directly to another computer, and click Next.
  5. Choose the role this machine will play in the communication. If this computer has the information to which you need to gain access, click Host. If this computer will access information from the other computer, click Guest.
To Set Up the Host Computer
  1. Click the connection device that you want to use for this connection (a parallel or serial port, or an infrared port), and then click Next.
  2. Grant access to the users who are allowed to connect by selecting the appropriate check boxes, and then click Next.
  3. Click Finish to end the configuration process.

To Set Up the Guest Computer

  1. Type a name to identify this connection, and then click Next.
  2. Click the connection device that you want to use for this connection (a parallel or serial port, or an infrared port), and then click Next.
  3. Decide whether this connection will be available for all users (click Anyone's use), or only for you (click My use only), and then click Next.
  4. Click Finish to end the setup process.


  • To create a direct network connection that acts as a host, you must be logged on as Administrator or be a member of the Administrators group. Guest direct network connections do not require administrator-level rights.
  • If you specify your connection as a host when you create it, the connection appears as Incoming Connections in the Network Connections folder.
  • You can create multiple direct connections by copying them in the Network Connections folder. You can then rename the connections and modify connection settings. By doing so, you can easily create different connections to accommodate multiple ports, host computers, and so on.
  • Direct connections can bypass authentication requirements. This is useful for devices such as handheld computers. You must configure this setting in the host incoming connection.
  • If you create a direct connection by using a serial (RS-232C) cable, the port that you select in the New Connection Wizard is enabled for connections that use a null modem.
  • If you are logged on to your computer as Administrator or a member of the Administrators group when you create a direct connection, you see a list of connection devices to choose from that includes all of the parallel ports for the computer, infrared ports that are installed and enabled, and COM ports. If you are logged on as a user who is not a member of the Administrators group and you create a direct connection, the list of devices includes the parallel ports for the computer, infrared ports that are installed and enabled, and only the COM ports that are configured with null modems. If you need to use a COM port for a direct connection, ask your system administrator to configure one of the COM ports on your computer with a null modem by using the Phone and Modem Options tool in Control Panel.

Step 9: Bulletin Board System.

You could even emulate a BBS on one of the communication ports. Probably needs modifying depending on your system. You will also have to create some ascii or text files such as bulletins.

COMMON SHARED Car.ret, Car.ret$, Lfeed, Lfeed$, Mod.dem, Console
DECLARE SUB delay (Secs!)
DECLARE SUB Lout (l$, Cr!)
CONST False = 0
CONST True = -1
' ****************************************************************************
' Lizzybbs version 0.00001
' main.loop written by computothought
' some data input routines borrowed from the dumbbs program
' last update 02/06/95
GOSUB housekeeping
  GOSUB The.main.loop
GOSUB end.of.job
' *****************************************************************************
' Subroutines
' -----------------------------------------------------------------------------
  done = 0
  Cdmask = &H80
  Carrier = 0
 'Status ports should be Com1 = 3fe  and Com2 = 2fe   (?f8+6)
  Rs232.port = &H3FE:  '&H3F8 + 6
  Mod.dem = 1
  Console = 2
  Port$ = "COM1:"
  Baud$ = "300,"
  Flow$ = "N,8,1": ',DS0"
  Minute = 60
  Char.wait.time = 4 * Minute
  Char.grace.time = 1 * Minute
  Lin.length = 40
  Q$ = CHR$(34)
  Bell$ = CHR$(7)
  Car.ret = 13
  Car.ret$ = CHR$(Car.ret)
  Lfeed = 10
  Lfeed$ = CHR$(Lfeed)
  ' ------------------------------------------------
  ' select.baud - select the baud rate
  Com.spec$ = Port$ + Baud$ + Flow$
  ' ----------------------------------------------
  ' open communication lines
  OPEN Com.spec$ FOR RANDOM AS #Mod.dem
  GOSUB pause
  OPEN "scrn:" FOR OUTPUT AS #Console
  ' ---------------------------------------------
  ' Restart the work log file
  OPEN "append", #5, "worklog"
  PRINT #5, "Start of job", TIME$, DATE$
  CLOSE #5
' ------------------------------------------------
' gchar - get a character
  Char.timeout = False
  Charet = 0
    IF NOT EOF(Mod.dem) THEN
      Clizzyied$ = INPUT$(1, #Mod.dem)
      C = ASC(Clizzyied$)
      PRINT #Mod.dem, CHR$(C);
      IF C <> 8 THEN
        PRINT #Console, CHR$(C);
        PRINT #Console, CHR$(29);
      END IF
      Charet = 1
    END IF
    GOSUB Carchek
  LOOP UNTIL TIMER > T + Char.wait.time OR Charet = 1 OR Carrier = False
  IF TIMER > T + Char.wait.time THEN
    a$ = Car.ret$ + Lfeed$ + Bell$ + Bell$
    a$ = a$ + "This BBS will hang up if you don't press a key."
    CALL Lout(a$, True)
    Violation = 2
    Char.timeout = True
    C = 256
' ----------------------------------------------------
' gline - get a line
  In.line$ = ""
  GOSUB Clear.garbage
    GOSUB Gchar
        CASE IS > 255, Car.ret
        CASE 29, 8
           In.line$ = LEFT$(In.line$, LEN(In.line$) - 1)
        CASE ELSE
           In.line$ = In.line$ + CHR$(C)
  LOOP UNTIL LEN(In.line$) > Lin.length OR (C = Car.ret AND LEN(In.line$) > 0) OR C > 255 OR Carrier = False
' -------------------------------------------------------------------------
' Dtrlow
  PRINT #Mod.dem, "ATH0"
  GOSUB pause
  PRINT #Mod.dem, "ATZ"
  GOSUB pause
' --------------------------------------------------------------------------
' Dtrhi
  PRINT #Mod.dem, "ATE0M0S0=1&C1"
  GOSUB pause
' ----------------------------------------------------------
' file download
  Dload.item$ = ""
  DO WHILE UCASE$(Dload.item$) <> "0"
    Usefile$ = "dir.fil"
    GOSUB File.display
    GOSUB Clear.garbage
    GOSUB Gchar
    Dload.item$ = UCASE$(CHR$(C))
    DO WHILE Dload.item$ <= "Z" AND Dload.item$ >= "A"
      CALL Lout("Please open your buffer now, then press any key!", True)
      GOSUB File.display
      GOSUB Clear.garbage
      GOSUB Gchar
      Usefile$ = "\ul\dload" + CHR$(C)
      GOSUB File.display
      CALL Lout("Please close your buffer now, then press any key!", True)
      GOSUB Clear.garbage
      GOSUB Gchar
    IF Carrier = False OR Char.timeout THEN EXIT DO
' ----------------------------------------------------------
' bulletin display
  Bullet.item$ = ""
  DO WHILE UCASE$(Bullet.item$) <> "Q"
    Usefile$ = "poster"
    GOSUB File.display
    CALL Lout("Enter choice: ", False)
    GOSUB Clear.garbage
    GOSUB Gchar
    Bullet.item$ = UCASE$(CHR$(C))
    CALL Lout(" ", True)
    DO WHILE C > 48 AND C < 57
      Usefile$ = Usefile$ + Bullet.item$
      GOSUB File.display
      C = 256
    IF Carrier = False OR Char.timeout THEN EXIT DO
' ----------------------------------------------------------
' new user routine
  Usefile$ = "newuser"
  GOSUB File.display
  CALL Lout("Please enter a unique password: ", False)
  GOSUB Gline
  CALL Lout("", True)$ = In.line$
  CLOSE #4
  KILL "userfile.old"
  NAME "userfile" AS "userfile.old"
  OPEN "O", #6, "userfile"
  Status = 4
  PRINT #6, Q$;$; Q$; ","; Q$;$; Q$; ","; Status; ","; Q$;$; Q$
  CLOSE #6
  OPEN "I", #7, "userfile.old"
  OPEN "A", #8, "userfile"
    INPUT #7, a$, B$, C, D$
    PRINT #8, Q$; a$; Q$; ","; Q$; B$; Q$; ","; C; ","; Q$; D$; Q$
    IF a$ = "END" THEN EXIT DO
  CLOSE #7
  CLOSE #8
' ---------------------------------------------------------
' file.display
  OPEN "I", #3, Usefile$
      LINE INPUT #3,$
      CALL Lout($, True)
    CLOSE #3
' =========================================================
'  The main Loop
' This is where the 'BBS' actually begins.
  GOSUB Dtrlow
  GOSUB Dtrhi
  LOCATE 2, 30: PRINT "lizzyied BBS version 0.001"
    C = 256
    LOCATE 3, 30
    PRINT DATE$; " "; TIME$
    LOCATE 4, 30
    PRINT "Rs232:"; INP(Rs232.port)
    GOSUB Carchek
  LOOP UNTIL Carrier
  ' -----------------------------------------------------
  ' start
  GOSUB Clear.garbage
  ' -----------------------------------------------------
  ' header
  Usefile$ = "prelog"
  GOSUB File.display
  ' -----------------------------------------------------
  ' logon
logon:$ = TIME$
  Legal = False
  CALL Lout("Please enter your name: ", False)
  GOSUB Gline$ = In.line$
  CALL Lout("", True)
  CLOSE #4
  OPEN "I", #4, "userfile"
    INPUT #4,$,$, Status, Start$
  IF$ = "END" THEN
    GOSUB New.user
    FOR xdummy = 1 TO 3
        CALL Lout("             password: ", False)
        GOSUB Gline
        Pass.word$ = ""
        Pass.word$ = In.line$
        CALL Lout("", True)
        IF Pass.word$ =$ THEN
            EXIT FOR
        ELSEIF ((Pass.word$ <>$) AND (xdummy > 3)) THEN
            violate = 1
            GOTO Logoff
        END IF
    NEXT xdummy
  CLOSE #4
  ' -----------------------------------------------------
  ' main
  menu.item$ = ""
  DO WHILE UCASE$(menu.item$) <> "G"
    Usefile$ = "post2"
    GOSUB File.display
    CALL Lout(" ", True)
    CALL Lout("Your choice: ", False)
    GOSUB Clear.garbage
    GOSUB Gchar
    menu.item$ = UCASE$(CHR$(C))
    CALL Lout(" ", True)
    SELECT CASE menu.item$
    CASE "D"
    CASE "B"
      GOSUB bulletins
    CASE "G"
      violate = 0
    IF Carrier = False OR Char.timeout THEN EXIT DO
  ' -----------------------------------------------------
  ' footer
  Usefile$ = "epilog"
  GOSUB File.display
  ' -----------------------------------------------------
  ' pause
    FOR x = 1 TO 4000
    NEXT x
  ' -----------------------------------------------------
  ' logoff
  OPEN "append", #5, "worklog"
  PRINT #5,$, Pass.word$,$, TIME$, violate
  CLOSE #5
  a$ = "Logging off"
  CALL Lout(a$, True)
  a$ = "+++"
  CALL Lout(a$, True)
  PRINT "Turning DTR low"
  GOSUB Dtrlow
  CALL delay(2)
  PRINT "Bringing DTR high"
  GOSUB Dtrhi
  CALL delay(2)
' ------------------------------------------------------
    CC = (INP(Rs232.port) AND Cdmask)
    IF CC = 128 THEN
        Carrier = True
        Carrier = False
    END IF
' ------------------------------------------------------
      Clizzyied$ = INPUT$(1, #Mod.dem)
    LOOP UNTIL EOF(Mod.dem)
' ------------------------------------------------------
  OPEN "append", #5, "worklog"
  PRINT #5, "End of use", TIME$, DATE$
  CLOSE #5
' ===========================================================================

SUB delay (Secs)
' ------------------------------------------------
' delay - wait so many seconds
delay (Secs):
  T1 = TIMER

SUB flush (Time)
' ----------------------------------------------------
' flush - flush buffer
    IF NOT EOF(Mod.dem) THEN
      Dummy$ = INPUT$(LOF(Mod.dem), #Mod.dem)
    END IF

SUB Lout (l$, Cr)
' ---------------------------------------------------
' lout - line out
  FOR j = 1 TO LEN(l$)
    G = ASC(MID$(l$, j, 1))
    PRINT #Mod.dem, CHR$(G);
    PRINT #Console, CHR$(G);
  NEXT j
    PRINT #Mod.dem, Car.ret$; Lfeed$
    PRINT #Console, Car.ret$;

Step 10: What About Wifi?

Wifi is no problem, but the setup for security reasons is a bit more involved. Basically you will use an access point, an old pc (with ethernet) to act as a router, switch, and of course the client or user systems. I will let you get into the research and the details yourself.

Most any generic access point should work if you can access it via telnet. Most documentation will not tell you about that feature. You almost have to test the unit yourself. Know that we had to test ours and was pleasantly surprised that it did work. You will probably have to change the settings to work with your network.

eddie@oedt01:~$ telnet
Connected to
Escape character is ‘^]’.

AP11G login: admin
Password: ******

Atheros Access Point Rev
AP11G wlan0 -> ?
List of Access Point CLI commands:
add remoteWbr — Add a remote Wireless Bridge
config wlan — config wlanX
connect bss — connect to bssX
del acl — Delete Access Control List
del key — Delete Encryption key
del remoteWbr — Delete a remote Wireless Bridge
find bss — Find BSS

You will need an old pc (even a floppy based 486 should work) and the Freesco software (there are other floppy based firewall distros): (LATEST STABLE RELEASE: 0.4.4...FREESCO is based on the Linux operating system. ...Minimum install requires a 486sx with 12mb of ram.)

Note freesco may no longer really supports floppies, but the do have a bootable cd.

Lastly you will need a switch. You could probably use an old fashioned hub, but the throughput could be horrendous.

Note if you use a 486, you will probably have to find some old isa ethernet networking cards of you 486 does not have a pci bus.