A PhoneBoy Primer on: MultiLink PPP for ISDN and Linux
I’m surprised nobody’s written a nice, simple, step-by-step page on getting MultiLink PPP working on a single ISDN modem under Linux. It’s actually not that difficult, but unless you do certain things correctly, it won’t work.
Note: The instructions on this page are for External ISDN modems or Internal ISDN modems that have a standard COM-port interface. If you want to use multiple modems (i.e. two or more analog modems), then these instructions are not for you. The ‘EQL’ driver for Linux is supposed to provide this support. Check for the file README.eql in your kernel sources directory (Usually /usr/src/linux/drivers/net/README.eql).
I got it working with:
- The 2.0.32 Linux Kernel included with RedHat 5.0 (though I imagine it will with any PPP-enabled kernel).
- pppd-2.3.3 (get it from ftp://cs.anu.edu.au/pub/ppp), though it may work with other versions of pppd (e.g. the one that comes included in your Linux distribution).
You might also find pppsetup helpful in setting up your PPP in general, particularly if you’re a newbie. Provided you feed the right information into this script, you should get MultiLink PPP running.
- Write a chat script that initializes your modem for MultiLink PPP and “connects” you to your ISP, but does not log you all the way in. It should get you through to the point where the “Login:” prompt on the remote system would show, but no farther. This is necessary so that PAP Authentication will work correctly. For example, my chat script looks like:
ABORT 'NO CARRIER'
(Note the S80=1 turns on MultiLink PPP on my 3Com Impact IQ. Your ISDN modem will likely require a different initializaiton string).
- Set up the file /etc/ppp/pap-secrets with the “shared secret” (e.g. your login and password) for your ISP. For instance, my /etc/ppp/pap-secrets file says:
"dwelch" * "myPassword"
- Call pppd with the appropriate options so that PAP authentication is performed. You can either put these options in /etc/ppp/options or add them to the command line when you invoke pppd. In my case, the options are:
pppd /dev/cua0 115200 connect /etc/ppp/chat-isp lock defaultroute \
noipdefault name "dwelch" domain isp.net
In the case where you are using diald, your diald.conf file will need to contain the line:
pppd-options asyncmap 0 name "dwelch"
Note: for some reason, I had to add the asyncmap 0 option in there to make it work. You may not need it or it may be different in your configuration.