I replaced the pon and poff with the right ones. Here are the right ones, at the end of this mail.
I still don't finish the work. Here is the /var/log/syslog : What's happening ? (you will notice the 27 seconds delay between ^M and ATDT). Thanks in advance. Dec 23 16:33:44 macraf pppd[359]: pppd 2.3.11 started by root, uid 0 Dec 23 16:33:46 macraf chat[360]: abort on (BUSY) Dec 23 16:33:46 macraf chat[360]: abort on (NO CARRIER) Dec 23 16:33:46 macraf chat[360]: abort on (VOICE) Dec 23 16:33:46 macraf chat[360]: abort on (NO DIALTONE) Dec 23 16:33:46 macraf chat[360]: abort on (NO DIAL TONE) Dec 23 16:33:46 macraf chat[360]: abort on (NO ANSWER) Dec 23 16:33:46 macraf chat[360]: send (ATZ^M) Dec 23 16:33:46 macraf chat[360]: expect (OK) Dec 23 16:33:48 macraf chat[360]: ATZ^M^M Dec 23 16:33:48 macraf chat[360]: OK Dec 23 16:33:48 macraf chat[360]: -- got it Dec 23 16:33:48 macraf chat[360]: send (ATDT0555200000^M) Dec 23 16:33:48 macraf chat[360]: expect (CONNECT) Dec 23 16:33:48 macraf chat[360]: ^M Dec 23 16:34:15 macraf chat[360]: ATDT0555200000^M^M Dec 23 16:34:15 macraf chat[360]: CONNECT Dec 23 16:34:15 macraf chat[360]: -- got it Dec 23 16:34:15 macraf chat[360]: send (\d) Dec 23 16:34:16 macraf pppd[359]: Serial connection established. Dec 23 16:34:17 macraf pppd[359]: Hangup (SIGHUP) Dec 23 16:34:17 macraf pppd[359]: Exit. A good pon : #!/bin/sh case "$1" in -*) echo " Usage: pon [provider] [arguments] If pon is invoked without arguments, /etc/ppp/ppp_on_boot file will be run, presuming it exists and is executable. Otherwise, a PPP connection will be started using settings from /etc/ppp/peers/provider. If you specify one argument, a PPP connection will be started using settings from the appropriate file in the /etc/ppp/peers/ directory, and any additional arguments supplied will be passed as extra arguments to pppd. " exit 0 ;; esac if [ -z "$1" -a -x /etc/ppp/ppp_on_boot ]; then exec /etc/ppp/ppp_on_boot fi if [ -z "$1" -a ! -f /etc/ppp/peers/provider ]; then echo " Please configure /etc/ppp/peers/provider or use a command line argument to use another file in /etc/ppp/peers/ directory. " exit 1 fi if [ "$1" -a ! -f "/etc/ppp/peers/$1" ]; then echo " The file /etc/ppp/peers/$1 does not exist. " exit 1 fi exec /usr/sbin/pppd call ${@:-provider} A good poff: #!/bin/sh # $Id: poff,v 1.8 1999/08/28 16:34:51 phil Exp $ # Written by John Hasler <[EMAIL PROTECTED]> and based on work # by Phil Hands <[EMAIL PROTECTED]>. Distributed under the GNU GPL if [ -x /usr/bin/kill ]; then KILL="/usr/bin/kill" else KILL="/bin/kill" fi SIG=TERM DONE="stopped" MODE="" usage () { cat <<!EOF! usage: $0 [option] [provider] options: -r Cause pppd to drop the line and redial. -d Toggle the state of pppd's debug option. -c Cause pppd to renegotiate compression. -a Stop all pppd's. 'provider' will be ignored. -h Print this help summary and exit. -v Print version and exit. none Stop pppd. Options may not be combined. If 'provider' is omitted pppd will be stopped or signalled if and only if there is exactly one running unless the '-a' option was given. If 'provider' is supplied the pppd controlling the connection to that provider will be stopped or signalled. !EOF! } # Get option. If there are none replace the "?" that getopts puts in # FLAG on error with "null". getopts rdcavh FLAG if [ "$?" -ne 0 ]; then FLAG="null" fi # Check for additional options. Should be none. getopts :rdcavh DUMMY if [ "$?" -eq 0 ]; then echo "$0: Illegal option -- ${OPTARG}." exit 1 fi case $FLAG in "r") SIG=HUP; DONE=signalled; shift ;; "d") SIG=USR1; DONE=signalled; shift ;; "c") SIG=USR2; DONE=signalled; shift ;; "a") MODE="all"; shift ;; "v") echo "$0$Revision: 1.8 $_TrickToPrint_RCS_Revision"; exit 0 ;; "h") usage; exit 0 ;; "?") exit 1; esac # Get the PIDs of all the pppds running. Could also get these from # /var/run, but pppd doesn't create .pid files until ppp is up. PIDS=`pidof pppd` # poff is pointless if pppd isn't running. if test -z "$PIDS"; then echo "$0: No pppd is running. None ${DONE}." exit 1 fi # Find out how many pppd's are running. N=`echo "$PIDS" | wc -w` # If there are no arguments we can't do anything if there is more than one # pppd running. if test "$#" -eq 0 -a "$N" -gt 1 -a $FLAG != "a" ; then echo "$0: More than one pppd running and no "-a" option and no arguments supplied. Nothing ${DONE}." exit 1 fi # If either there are no arguments or '-a' was specified kill all the # pppd's. if test "$#" -eq 0 -o "$MODE" = "all" ; then $KILL -$SIG $PIDS || { echo "$0: $KILL failed. None ${DONE}." exit 1 } exit 0 fi # There is an argument, so kill the pppd started on that provider. PID=`ps axw | grep "[ /]pppd call $1 *\$" | awk '{print $1}'` if test -n "$PID" ; then $KILL -$SIG $PID || { echo "$0: $KILL failed. None ${DONE}." exit 1 } else echo "$0: I could not find a pppd process for provider '$1'. None ${DONE}." exit 1 fi exit 0