I met the problem when I use pppd to implement connecting internet by GPRS module. My environment is Fedora 8. The module connect to PC by serial port and baud rate is 115200. I configured ppp-on and ppp-on-dialer scripts to enable pppd and chat. But modem hangup immediately when pppd try to connect ppp0 <--> /dev/ttyS0. I've tried apply almost all pppd options, but doesn't work.
BTW, kppp works normally with correct configurations. And I can access website after default route modified. So I think it might be my error configurations, not a problem of GPRS module or ISP.

What configurations should I pay attention?

Following lines is log of modem hangup.
Mar 20 15:51:01 localhost pppd[5057]: pppd 2.4.4 started by root, uid 0
Mar 20 15:51:02 localhost chat[5058]: timeout set to 3 seconds
Mar 20 15:51:02 localhost chat[5058]: abort on (\nBUSY\r)
Mar 20 15:51:02 localhost chat[5058]: abort on (\nNO ANSWER\r)
Mar 20 15:51:02 localhost chat[5058]: abort on (\nRINGING\r\n\r\nRINGING\r)
Mar 20 15:51:02 localhost chat[5058]: send (rAT^M)
Mar 20 15:51:02 localhost chat[5058]: expect (OK)
Mar 20 15:51:02 localhost chat[5058]:
Mar 20 15:51:02 localhost chat[5058]: NO CARRIER^M
Mar 20 15:51:02 localhost chat[5058]: ^M
Mar 20 15:51:02 localhost chat[5058]: OK
Mar 20 15:51:02 localhost chat[5058]: -- got it
Mar 20 15:51:02 localhost chat[5058]: send (ATH0^M)
Mar 20 15:51:02 localhost chat[5058]: timeout set to 30 seconds
Mar 20 15:51:02 localhost chat[5058]: expect (OK)
Mar 20 15:51:02 localhost chat[5058]: ^M
Mar 20 15:51:02 localhost chat[5058]: ^M
Mar 20 15:51:02 localhost chat[5058]: OK
Mar 20 15:51:02 localhost chat[5058]: -- got it
Mar 20 15:51:02 localhost chat[5058]: send (ATDT*99***1#^M)
Mar 20 15:51:02 localhost chat[5058]: expect (CONNECT)
Mar 20 15:51:02 localhost chat[5058]: ^M
Mar 20 15:51:02 localhost chat[5058]: ^M
Mar 20 15:51:02 localhost chat[5058]: CONNECT
Mar 20 15:51:02 localhost chat[5058]: -- got it
Mar 20 15:51:02 localhost chat[5058]: send (^M)
Mar 20 15:51:02 localhost pppd[5057]: Serial connection established.
Mar 20 15:51:02 localhost pppd[5057]: Using interface ppp0
Mar 20 15:51:02 localhost pppd[5057]: Connect: ppp0 <--> /dev/ttyS0
Mar 20 15:51:03 localhost pppd[5057]: Hangup (SIGHUP)
Mar 20 15:51:03 localhost pppd[5057]: Modem hangup
Mar 20 15:51:03 localhost pppd[5057]: Connection terminated.
Mar 20 15:51:04 localhost pppd[5057]: Exit.

Log of kppp:
Mar 20 10:05:13 localhost pppd[3382]: pppd 2.4.4 started by root, uid 0
Mar 20 10:05:13 localhost pppd[3382]: Using interface ppp0
Mar 20 10:05:13 localhost pppd[3382]: Connect: ppp0 <--> /dev/ttyS0
Mar 20 10:05:13 localhost pppd[3382]: Remote message: Welcome!
Mar 20 10:05:13 localhost pppd[3382]: PAP authentication succeeded
Mar 20 10:05:14 localhost pppd[3382]: not replacing existing default route via 192.168.1.1
Mar 20 10:05:14 localhost pppd[3382]: local IP address 10.71.70.84
Mar 20 10:05:14 localhost pppd[3382]: remote IP address 10.71.59.78
Mar 20 10:05:14 localhost pppd[3382]: primary DNS address 211.136.112.50
Mar 20 10:05:14 localhost pppd[3382]: secondary DNS address 211.136.20.203

ppp-on script:

TELEPHONE=*99***1# # The telephone number for the connection
ACCOUNT= # The account name for logon (as in 'George Burns')
PASSWORD= # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0 # The proper netmask if needed
#
# Export them so that they will be available at 'ppp-on-dialer' time.
export TELEPHONE ACCOUNT PASSWORD
#
# This is the location of the script which dials the phone and logs
# in. Please use the absolute file name as the $PATH variable is not
# used on the connect option. (To do so on a 'root' account would be
# a security hole so don't ask.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer

exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS0 115200 \
asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \
noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT


ppp-on-dialer script:

exec chat -v \
TIMEOUT 5 \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' \rAT \
'OK-+++\c-OK' ATH0 \
TIMEOUT 30 \
OK ATDT$TELEPHONE \
CONNECT '' \
# ogin:--ogin: $ACCOUNT \
# assword: $PASSWORD