Using RoadRunner dial-up service with Linux

As a broadband ISP, RoadRunner has a very nice feature: it offers free dial-up service to its clients. This is invaluable when you are at the place where access to Wi-Fi or broadband is either unavailable or non-practical.

While the dial-up service is regular PPP-based connection, the authentication is somewhat different from a standard process, one would expect it to be. RoadRunner supplies it's own dialer program (Windows-only, of course) and mentioning Linux when talking to a customer service rep, resulted in a helpful "Huh?"

Nevertheless, after some looking around, I found a script called login.scp, which contained some handshake details. After much trial and error, I managed to get it to work in KPPP. I am pretty sure using other dial-up tools is just as possible with little tweaking.

Disclaimer: This works for me with a Dell Dimension 8200 PC running SuSE Linux 9.3. I have no reasons to think it will not work for other Linux flavor and/or supported modem.

First of all, you have to visit the RoadRunner dial-up site in order to obtain the login name and the password (I was told by the rep, that dial-up access needs to be "set" for the client and it is not given by default.)

Once this is done, make sure your modem is configured properly and your PPP subsystem works fine. The best way to do it is to try it on another provider (there is for example a free ISP MetConnect, that you could try to connect to).

Start KPPP and configure the new ISP the way you would normally do. Basically, you only need to provide the phone number and the credentials. Make sure that your login name is a full e-mail address, i.e. the name you were assigned with @nyc.rr.com attached to it (that address may vary based on your location.)

Now go to the account details and select the 'Login Script' tab. Here you should place the following script:

Expect Username:
Send aolnet/ent.YOURNAME@nyc.rr.com
Expect Password

A couple things to note here. The first entry is s string to expect and you literally type in Username:. The second string is what you send back and you should send back that weird string, which is aolnet/ent. followed by your "registered" address. Finally the last entry is created when you select "Password" from the drop-down box. It instructs the dialer to send back your password.

And that's basically it! Now fire up KPPP, make sure that your login name is set to the full "address" and dial ahead.

If something goes wrong

  • Make sure you are configured for dial-up access. Try dialing from Windows using RoadRunnner-provided dialer. Does it work?
  • Make sure, you followed the directions (duh).
  • The authentication protocol used by RoadRunner allows for several different handshakes. Open the terminal window in KPPP and watch what you receive from the server when pppd tries to establish the connection. It might be the case your server uses different handshake. If that is the case, look at login.scp file (part of the dialer package for Windows - it is usually located in /windows/Program\ Files/Internet/ICC/) and try to change yor login script to follow that type of handshake.
  • You are at sea... Open the terminal window in KPPP and whatch what is being sent and received. Look in the system log for any errors. Add debug option for pppd and see what you get in the system log. Go back to Windows :-)

Example of login.scp file

proc main

    string prefix = "aolnet/ent."
    string UID = prefix + $USERID

    waitfor
        "ANSNet"        then DoANSLogin,
        "Login:"        then DoPPPLogin,
        "sername:"      then DoDirLogin,
        "% Username:"   then DoPRLogin
    until 20

    DoANSLogin:
        waitfor "login"  until 5
        if $SUCCESS then
            transmit prefix + $USERID, raw
            transmit "^M"
            goto DONE
        endif

    DoPPPLogin:
        transmit UID, raw
        transmit "^M"
        waitfor "Password" until 5
        transmit $PASSWORD, raw
        transmit "^M"
        waitfor ">" until 5
        transmit "ppp", raw
        transmit "^M"
        goto DONE

    DoDirLogin:
        transmit UID, raw
        transmit "^M"
        waitfor "Password" until 5
        transmit $PASSWORD, raw
        transmit "^M"
        goto DONE

    DoPRLogin:
        waitfor "% Username:"  until 20
        if $SUCCESS then
            transmit UID, raw
            transmit "^M"
            waitfor "Password" until 5
            transmit $PASSWORD, raw
            transmit "^M"
            goto DONE
        endif

    DONE:
        delay 2