June 19, 2019, 05:29:15 pm


Started by astroboy, December 28, 2005, 11:37:08 pm

Previous topic - Next topic


This is a re-post of an old article by Brian Wotring, which is not available on the net years ago, but it has proven, at least to me, very useful to configure my modem to surf the net.

I hope you find this article as useful as it is to me.


[OpenStep and PPP]


This page may or may not help you. What follows is my personal documentation
regarding the setup of PPP-2.2 on OpenStep 4.1 for MACH. I found loads of
information about setting up PPP on NeXT environments, but none specifically
for OpenStep. I assumed the setup would be the same. It was not. After
several attempts at installing different .pkg files, I started hacking at
code to try to get a successful make. That approach started to become a dead
end and fast. I finally ended up using a NeXT binary package but it was not
too simple.

I am a novice NeXT user. What follows will most likely serve to aid others
like myself who want simply to install PPP on a standalone machine to dial
up an ISP and establish a PPP connection. This documentation is for setting
up PPP with an ISP using PAP, as well as a unix shell account using slirp.
Anything involving more is something I have not tangled with.

I used Gatekeeper 2.0 with the NeXT port of ppp2.2-0.4.6 and the following
setup worked for me on both OpenStep for Mach version 4.1 and 4.2.

In all, I came across about five different install files, FAQ files, help
files, and other .txt files that basically all said the same thing. Problem
was, they were all slightly different. I tried all of them and none of them
worked for me. I ended up combining them all to get PPP working. The
GateKeeper help file has a section about setting up PPP for the first time
and proved to be most helpful.

I. Files

Obtain the following files. You can download them from the Denali Sites
server using the links below. They can also be found at

  * NeXT-ppp2.2-0.4.6-pkg.tar.gz
  * GateKeeper.2.0.DoD.NI.b.tar.gz
  * IBTip (Optional)

I also recommend getting IBTip. This simple app will enable you to test your
modem, log into your IP, or whatever. It is not necessary but I found it
very helpful.

II. Unpacking

I recommend creating a temporary directory to put the above files in. I
called mine 'ppp'. I recommend renaming the files to something simple to
ease things a little. I renamed mine 'ppp246.tar.gz' and 'gatekeeper.tar.gz.
First, through a terminal shell, unpack the two files using gunzip . You
should be left with two .tar files like 'ppp246.tar' and 'gatekeeper.tar'.

I installed Gatekeeper with no troubles at all. As root install the
gatekeeper package. The package puts the app in a directory /Apps. You can
erase all the other Gatekeeper crap in the temp directory.

Double click on the 'ppp246.tar' file to unpack it. It will decompress the
.pkg file as well as a bunch of other crap. Rename the 'PPP-2.2.pkg' file to
anything you want. It is actually a directory. I called mine 'binary'.
Inside the 'binary' directory there is a file called 'PPP-2.2.tar.Z' This is
the file you want. Copy this file to your root directory. Double click on
the file to unarchive it. The binary files for PPP-2.2 will now be put in

III. Files

The following files need to be altered:

  * /etc/rc.local
  * /etc/syslog.conf
  * /etc/resolv.conf
  * /etc/iftab
  * /etc/hostconfig
  * /etc/ppp/options
  * /etc/ppp/pap-secrets (if you use PAP)

It is recommended that you back up the above files in case there is a
problem; reboot with each file change so as to track the source of a problem
may one occur.


Place the following segment at the end of the file:

       # Load the Berkley Packet Filter LKS
       # This must be done before PPP.  Comment this out
       # if you disabled BPF. If you use BPF, you _must_
       # load it before the PPP LKS.  If you changed pathnames
       # in the Makefile, make sure the appropriate paths are
       # used below.
       if [ -f /usr/local/bpf/reloc/bpf_reloc ]; then
      /usr/etc/kl_util -a /usr/local/bpf/reloc/bpf_reloc

       # Load the selected version of the PPP-2.2 loadable
       # kernel server (LKS).
       if [ -f /usr/local/ppp/ppp-2.2-0.4.6/reloc/ppp_reloc ]; then
       /usr/etc/kl_util -a /usr/local/ppp/ppp-2.2-0.4.6/reloc/ppp_reloc > /dev/console 2>?
       (echo -n ' ppp')        > /dev/console

/etc/syslog.conf Add the following line to the very beginning of the file.
Make certain that you use only tabs. Spaces will screw it up; that means
don't copy and paste.

local2.debug          /usr/adm/ppp2.2.log


This file holds your domain and the IP address' of your ISP. The domain is
prefixed by the keyword 'domain' and the primary and secondary DNS numbers
are prefixed by the keyword 'nameserver'. For example, my file reads:

         domain bellsouth.net


This file gave me a lot of problems mainly because I don't understand
exactly what it does. I ended up with the file looking as follows:

       lo0   inet netmask 0xff000000 -trailers up
               -1-       inet     -HOSTCONFIG-
               *         inet     -AUTOMATIC- netmask -AUTOMATIC- -trailers up


This file can be edited by using the HostManager.app. Choose local from the
app menu and change the settings to the following:

               'NetInfo Binding' (use local domain only)
                check the button 'Readable only by local net'

               'Hostname'  (pick some hostname for yourself)

               'NIS Domain Name'  (None)

               'Internet Address'  (

               'Broadcast Address'  (Default)

               'Time Standard'  (Ignore Network Time)

               'Netmask'   (Default)

               'Router'   (None)


This file gave me the most problems mainly due to my lack of understanding
of how it works exactly. If you are not using PAP or CHAP, then you probably
don't have to worry about changing anything. Just make certain that the line
specifying your modem port is correct (make certain that the baud rate is
correct!). If you can log into your ISP and you get a 'username' like
prompt, then you don't need to worry about PAP or CHAP. If you log in and
the first thing you see is ASCII garbage, then you need to configure for PAP
or CHAP. If you are unsure as to whether or not your ISP uses CHAP or PAP,
then you have to just try both and go with the one that works. This is
unfortunate because it makes it twice as hard to get PPP working because you
don't know if there is something wrong with a file, or if you're using the
wrong login protocol. Ask your ISP if possible. If not, then more often than
not your ISP uses PAP so try to make your connection work using PAP first.

my options file reads as follows:

       # This is an options file.  If this file is contained in GateKeeper's
       # app wrapper it will be used when the user clicks the Link menu item
       # and the toolbar is not open and pointing at a Gate doc.  If this
       # options file is within a Gate doc it will be supplied as a commandline
       # argument to pppd whenever the .Gate doc is used in launching ppp

       /dev/cufa   38400
       name wotring

       # The size of the Maximum Transfer Unit.  Higher values
       # give better performance for file transfers.  Lower values
       # give better performance for interactive performance.

       mtu 576

       # If you want to periodically touch the other end to make
       # sure it is still alive, set these options.
       lcp-echo-interval 15    # interval in seconds between touches
       lcp-echo-failure  3     # number of failed attempts before link shutdown

       # If you want to enable debugging of the pppd process, leave
       # this uncommented.  Output will be sent to the file
       # /usr/adm/ppp2.2.debug (or whatever you set it to in
       # /etc/syslog.conf.


       # If you want kernel debugging (i.e. debug output from the
       # NeXT LKS), enable this:
       # kdebug 1  is SC_DEBUG
       #        2  is SC_LOG_INPKT
       #        4  is SC_LOG_OUTPKT
       #        8  is SC_LOG_RAWIN
       #        16 is SC_LOG_FLUSH
       # add together to get debugging you want.

       # kdebug 17

       # If you want pppd to set the PPP connection as the default
       # route when the link is brought up, enable this option.
       # Standalone systems dialing into a provider probably want this
       # option.


       # These two options disable some of the
       # various types of authentication.
       # Note: Some systems require authenticaion before
       #       negotiation can complete.  If you disable
       #       authentication on these systems, they will
       #       not complain, but they will also not allow
       #       negotiaion to complete and your link will
       #       not come up.
       # If you enable either or both of these, you must
       # read the pppd man page to create the proper
       # secrets files.

       # This specifies that should use a UUCP-style lock on the
       # serial device to ensure exclusive access to the device.


       # Use hardware flow control (i.e. RTS/CTS) to control the
       #  flow of data on the serial port.
       # On NeXT, you also must use the proper device.
       #  /dev/cufa
       #    -or-
       #  /dev/cufb


       # bsdcomp nr,nt
       # Request that the peer compress packets that it sends,
       # using the BSD-Compress scheme, with a maximum code size
       # of nr bits, and agree to compress packets sent to the
       # peer with a maximum code size of nt bits.  If nt is not
       # specified, it defaults to the value given for nr.
       # Values in the range 9 to 15 may be used for nr and nt;
       # larger values give better compression but consume more
       # kernel memory for compression dictionaries.  Alterna-
       # tively, a value of 0 for nr or nt disables compression
       # in the corresponding direction.
       # It is OK if the peer doesn't support BSD compression.  In that
       # case, the peer will NAK this option and things will continue
       # normally.

       #bsdcomp 10,10

       # Add an entry to this system's ARP [Address Resolution
       # Protocol] table with the IP address of the peer and the
       # Ethernet address of this system.
       # This is only necessary if your are allowing others to dial
       # into you (i.e. you are the server).



The important parts to this file are the 'login' command and the 'name'
command. I don't know if these commands have to be in the beginning of the
file, but they work that way for me. The 'name' command simply is your
username that your ISP gives you. If not there, your specified hostname
would be used. I am unsure as to what the 'login' command does but it seems

Also deceiving is the '-pap' and '-chap' commands. I assumed that '-pap'
meant do not use pap protocol and '+pap' meant to use it. This however is
not the case. '-pap' does mean to not use the pap protocol, but '+pap' has
something to do with authenticating your host which will never happen. If
you use '+pap' then you will never make the connection (I wish somebody told
me that). In order to use pap, you must simply comment out the '-pap' line
as I did above (or the '-chap' line if you use chap).

I also changed my 'mtu' line to read 576 instead of the default 276. I'm not
too sure what all is involved with this change but the way I understand it,
a higher number is better for bigger transfers and smaller number is better
for smaller transfers. I works faster for me at 576.


If you are using pap then you need to specify your username and password.
This file can have multiple usernames but I have not dealt with such
situations. I have seen this file composed a couple of different ways. Mine
is basic and works. It reads as follows (without the parentheses) :

wotring         *       (my password)

IV. Paths

When you unpacked the 'PPP-2.2.tar.Z' file in the root directory, it unpacks
all the binaries but you need to make links to those files as well as the
man files (if you want to read them).

To do so, initiate the following four commands at a shell prompt:

               /bin/mkdirs -o root -g wheel -m 755 /usr/local/bin /usr/local/man/man8
               ln -s /usr/local/ppp/ppp-2.2-0.4.6/bin/* /usr/local/bin ln -s
               /usr/local/ppp/ppp-2.2-0.4.6/man/man8/* /usr/local/man/man8 touch

V. GateKeeper

I use Gatekeeper because it was the first thing I tried and it worked. If
you wish, you can use kermit, or some other app as a dialer. Kermit sucks.
There is an app called PPP-meter that is supposed to work well but I haven't
used it. Here is how I configured the Gatekeeper preferences.

   Under Switches:     check all options except 'Secure Display', 'Auto launch pppd', 'Dial on demand', and 'Sound'.
   Under Link:         configure your modem appropriately. It is important that you specify the correct modem speed.
                       It took me about an hour to figure out that problem. I've never heard of modem speed screwing
                       things up like it did. dumb.

   Under Editor:       select the 'remote' file and open the file as well as the example file. Copy the two lines
                       that read: b288|cudfb28800|Dial-out on cudfb at 28800 baud:\
                       and paste them in your 'remote' file. Make certain that the three references to your modem
                       are to the correct port. My modem is on com 1 and so my port is /dev/cufa.

That should be it. Now the hard part really begins. Start up Gatekeeper and
select 'dial'. You are prompted for a telephone number; the process becomes
obvious. Once you've logged in and started the remote ppp you should see
ASCII crap on the screen. Click on the pppd icon and it SHOULD make the
connection. It might work the first time but I doubt it.

If the connection isn't made, then it may help to check the log file located
as specified in your syslog.conf. I could never get the damn thing to log to
that, or any other, file so I'm not going to give any advice on log files.

Chances are you'll have to tweak the settings a bit. Once you start messing
with settings, it becomes easier (but not less frustrating). The above
settings worked for me without any crashes or other problems. If you have
any questions, problems, or flames then feel free to let me know.

-Brian Wotring