# demon_ppp.dip: connection script for PPP. # Copyright 1994-6 John A. Phillips - john@linux.demon.co.uk # ********************************************************************** # * Configuration and modem set-up section ***************************** # ********************************************************************** # Set up the counters for permitted log-in attempts. get $free_times 10 get $paid_times 3 # Set the desired serial port name (in /dev) and port speed. port modem speed 115200 # Define the modem initialisation string. This is the string sent to # the modem by the dial command each time just prior to (re-)dialling. # # For the USR Courier V.Everything (see Demon's Modem.txt) # ======================================================== # Mode Set by Comment # B0 &F1 ITU-T answer mode (not US Bell answer mode) # C1 Default Transmitter enabled # E1 * D/SW 4 Command mode echo on # F1 Default Full duplex (online local echo off) # Q0 * D/SW 3 Display result codes # V1 * D/SW 2 Verbal (not numeric) result codes # &A3 &F1 Display the most detailed connect result codes # &B1 Default Serial port data rate stays fixed # &C1 * D/SW 6 Modem sends Carrier Detect (CD) on connection # &D2 * D/SW 1 DTR enables the modem (when set) or drops the line # &G2 * - UK guard tone (1800 Hz) # &H1 &F1 Enable hardware (CTS) transmit flow control # &I0 &F1 Disable software (XON/XOFF) receive flow control # &K3 * - Use V.42bis compression only (no MNP5) # &N0 Default Modem negotiates variable link rate # &R2 &F1 Enable hardware (RTS) receive flow control # &S1 * - Modem sends DSR to CPU on answer # # Other additions # =============== # X6 - Report VOICE on the line # &M5 - Drop non-ARQ connections # S39=15 - Reduce the transmit level from -10 dBm to -15 dBm # S54.5=1 - Disable the top V.34 baud rate (Ascend problem?) init ATE1Q0V1&C1&D2&G2&K3&S1X6&M5S39=15S54.5=1 # Set up the non-default chat keys for the dial command (see "man dip" # for the defaults, and note that dial returns errlvl 3 on timeout). chatkey NO\sDIAL\sTONE 5 chatkey BUSY 6 chatkey RINGING\r\n\r\nRINGING\r\n\r\nRINGING 7 chatkey VOICE 8 # Turn on echoing of the control commands, responses etc. echo on # Reset the terminal line and modem. This may be necessary for some # people but unnecessary for others. Uncomment the next line only if # you need to reset the modem here. # reset # Send a set-up string to the modem. This string is sent once only. # The init string (above) is sent to the modem before each (re-)dial. send AT&F1\r wait OK 3 print if $errlvl == 0 goto dial print Timeout or other error setting up the modem - OK not received exit 1 # ********************************************************************** # * Dialling section *************************************************** # ********************************************************************** dial: print # Dial Chelmsford National Mercury ROMP with timeout. print Dialling the Chelmsford NMR ... dial T01245-708666 45 # Deal with a specified result from the dial command. if $errlvl == 0 goto othererr if $errlvl == 1 goto connect if $errlvl == 2 goto othererr if $errlvl == 3 goto timeout if $errlvl == 4 goto nocarrier if $errlvl == 5 goto nodialtone if $errlvl == 6 goto busy if $errlvl == 7 goto ringing if $errlvl == 8 goto voice # Deal with an unspecified result from the dial command. print print Unknown error from the dial command exit 1 # ********************************************************************** # * Dial error handling section **************************************** # ********************************************************************** # Use reset only if the response from the dial command fails to properly # take the modem off-line and into command mode. The VOICE, RINGING and # TIMEOUT responses need it (USR Courier). voice: print VOICE reset goto paid_redial ringing: print RINGING OUT reset goto free_redial busy: print BUSY goto free_redial nodialtone: print NO DIAL TONE goto free_redial nocarrier: print NO CARRIER waiting for CONNECT goto paid_redial timeout: print TIMEOUT waiting for CONNECT reset goto paid_redial othererr: print print Unexpected OK or ERROR received from the modem exit 1 # ********************************************************************** # * Re-dialling section ************************************************ # ********************************************************************** free_redial: dec $free_times if $free_times > 0 goto dial print print Exceeded the free tries limit exit 1 paid_redial: dec $paid_times if $paid_times > 0 goto dial print print Exceeded the paid tries limit exit 1 # ********************************************************************** # * Login section ****************************************************** # ********************************************************************** connect: wait ogin: 20 if $errlvl != 0 goto login_error sleep 1 send \r wait word: 60 if $errlvl != 0 goto password_error send \r wait ocol: 60 if $errlvl != 0 goto protocol_error send ppp,nolqm,idle=240\r wait HELLO 60 if $errlvl != 0 goto hello_error # Announce the connection. print print Dial-up and log-on completed # Recommended for the Ascend servers. # sleep 1 # send \r # Initiate PPP and exit. mode PPP exit 0 # ********************************************************************** # * Login error handling section *************************************** # ********************************************************************** login_error: print Timeout or other error waiting for the login prompt goto login_redial password_error: print Timeout or other error waiting for the password prompt goto login_redial protocol_error: print Timeout or other error waiting for the protocol prompt goto login_redial hello_error: print Timeout or other error waiting for the HELLO prompt login_redial: reset goto paid_redial