Билайн интернет дома: модем Icon 225

Проблема с настройком модема Icon 225.

Все вроде как ок, при попытке коннекта интерфейс hso0 поднимается, ip, роутинг и dns назначается, но через пару секунд отрубается (интерфейс остается поднятым, но модем начинает мигать, что означает что он не подключен). За эти пару секунд можно сделать ping ya.ru - он успевает заресолвиться и если повезет проходит один пинг.

Потом пытаюсь подключиться вот таким скриптом:

#!/bin/sh

#################################################################################################
#       Script: hso_connect.sh
#       Purpose:Bring the interface up and down, send the needed AT commands to connect
#################################################################################################

# checking for root
USERID=`id -u`
if [ "$USERID" != "0" ]
then
        echo "Need root permissions to run this script"
        exit
fi

# always start with checking if a connection data file has been supplied
CONNECTIONFILE="conninfo.ini"
if [ -z "$2" ]
then
        if [ ! -f $CONNECTIONFILE ]
        then
                echo "# this file contains the connection information for your subscription" >> $CONNECTIONFILE
                echo "APN=home.beeline.ru" >> $CONNECTIONFILE
                echo "# USER=" >> $CONNECTIONFILE
                echo "# PASS=" >> $CONNECTIONFILE
                echo "# PIN=" >> $CONNECTIONFILE
        fi
else
        if [ -f $2 ]
        then
                CONNECTIONFILE=$2
        else
                echo "Supplied file $2 does not exist"
                exit 1
        fi
fi
DEVICE=/dev/ttyHS0
NETDEV=hso0
TMPFIL=/tmp/connect.$$
OUTPUTFILE=/tmp/output.$$
SCRIPTFILE=/tmp/scriptfile.$$

#################################################################################################
#       METHOD: Connect
#       PURPOSE:Connect to the specified APN with the specified user and pass and get the ip
#               set the IP to the interface
#################################################################################################
Connect()
{
        echo "Initializing..."

        #============================================================
        # get the APN, USER, PASS and PIN out of the connection file
        #============================================================
        APN=`grep '^APN=' $CONNECTIONFILE | cut -d= -f2`
        USER=`grep '^USER=' $CONNECTIONFILE | cut -d= -f2`
        PASS=`grep '^PASS=' $CONNECTIONFILE | cut -d= -f2`
        PIN=`grep '^PIN=' $CONNECTIONFILE | cut -d= -f2`
        if [ -z "$APN" ]
        then
                echo "Please provide an APN (eg web.pro.be)"
                exit
        fi

        #============================================================
        # send the PIN, APN, USER and PASS
        #============================================================
        rm -f $SCRIPTFILE
        echo "ABORT ERROR" > $SCRIPTFILE
        echo "TIMEOUT 10" >> $SCRIPTFILE
        echo "\"\" ATZ" >> $SCRIPTFILE
        if [ -n "$PIN" ]
        then
                echo "OK \"AT+CPIN=\\\"$PIN\\\"^m\"" >> $SCRIPTFILE
        fi
        echo "OK \"AT+COPS=0^m\"" >> $SCRIPTFILE
        echo "OK \"\d\d\d\d\d\d\dAT+COPS=?^m\"" >> $SCRIPTFILE
        echo "OK \"AT+CGDCONT=1,,\\\"$APN\\\"^m\"" >> $SCRIPTFILE
        if [ -n "$USER" -a -n "$PASS" ]
        then
                #echo "OK \"AT\$QCPDPP=1,1,\\\"$PASS\\\",\\\"$USER\\\"^m\"" >> $SCRIPTFILE
                echo "OK \"AT\\\$QCPDPP=1,1,\\\"$PASS\\\",\\\"$USER\\\"^m\"" >> $SCRIPTFILE
        fi
        echo "OK \"\"" >> $SCRIPTFILE

        #============================================================
        # run the script
        #============================================================
        echo "Trying $APN ..."
        rm -f $OUTPUTFILE
        ( /usr/sbin/chat -E -s -V -f $SCRIPTFILE <$DEVICE >$DEVICE ) 2> $OUTPUTFILE
        ISERROR="`grep '^ERROR' $OUTPUTFILE`"
        if [ -n "$ISERROR" ]
        then
                echo "Failed to initialize connection"
                cat $OUTPUTFILE
                echo " "
                rm -f $OUTPUTFILE
                exit
        fi
        ISERROR="`grep '^+CME' $OUTPUTFILE`"
        if [ -n "$ISERROR" ]
        then
                echo "Failed to initialize connection"
                cat $OUTPUTFILE
                echo " "
                rm -f $OUTPUTFILE
                exit
        fi
        rm -f $SCRIPTFILE
        sleep 2

        #============================================================
        # now actually connect
        #============================================================
        echo "Connecting..."
        stty 19200 -tostop

        # make the call script
        echo "ABORT ERROR" > $SCRIPTFILE
        echo "TIMEOUT 10" >> $SCRIPTFILE
        echo "\"\" ATZ" >> $SCRIPTFILE
        echo "OK \"AT_OWANCALL=1,1,0^m\"" >> $SCRIPTFILE
        echo "OK \"\d\d\d\d\dAT_OWANDATA=1^m\"" >> $SCRIPTFILE
        echo "OK \"\"" >> $SCRIPTFILE
    echo "OK \"AT+ZOPERTE=\"beeline\"\"" >> $SCRIPTFILE

        PIP=""
        COUNTER=""
        while [ -z "$PIP" -a "$COUNTER" != "-----" ]
        do
                echo "trying$COUNTER"
                sleep 2
                rm -f $OUTPUTFILE
                ( /usr/sbin/chat -E -s -V -f $SCRIPTFILE <$DEVICE > $DEVICE ) 2> $OUTPUTFILE
                ISERROR=`grep '^ERROR' $OUTPUTFILE`
                if [ -z "$ISERROR" ]
                then
                        PIP="`grep '^_OWANDATA' $OUTPUTFILE | cut -d, -f2`"
                        NS1="`grep '^_OWANDATA' $OUTPUTFILE | cut -d, -f4`"
                        NS2="`grep '^_OWANDATA' $OUTPUTFILE | cut -d, -f5`"
                fi

                COUNTER="${COUNTER}-"
        done

        echo Connected

        #============================================================
        # always check the IP address
        #============================================================
        if [ -z "$PIP" ]
        then
                echo "We did not get an IP address from the provider, bailing ..."
                cat $OUTPUTFILE
                rm -f $OUTPUTFILE
                exit
        fi
        rm -f $OUTPUTFILE

        #============================================================
        # setting network settings
        #============================================================
        echo "Setting IP address to $PIP"
        ifconfig $NETDEV $PIP netmask 255.255.255.255 up
        echo "Adding route"
        route add default dev $NETDEV
        mv -f /etc/resolv.conf /tmp/resolv.conf.hso
        echo "Setting nameserver"
        echo "nameserver        $NS1" > $OUTPUTFILE
        echo "nameserver        $NS2" >> $OUTPUTFILE
        mv $OUTPUTFILE /etc/resolv.conf

        echo "Done."
}

#################################################################################################
#       METHOD: Disconnect
#       PURPOSE:disconnect from the providers network
#################################################################################################
Disconnect()
{
        echo "Bringing interface down..."
        ifconfig $NETDEV down

        echo "Disconnecting..."

        # make the disconnect script
        rm -f $SCRIPTFILE
        echo "TIMEOUT 10" >> $SCRIPTFILE
        echo "ABORT ERROR" >> $SCRIPTFILE
        echo "\"\" ATZ" >> $SCRIPTFILE
        echo "OK \"AT_OWANCALL=1,0,0^m\"" >> $SCRIPTFILE
        echo "OK \"\"" >> $SCRIPTFILE

        #============================================================
        # run the script
        #============================================================
        /usr/sbin/chat -V -f $SCRIPTFILE <$DEVICE >$DEVICE 2> /dev/null
        if [ -f /tmp/resolv.conf.hso ]
        then
                echo "Reset nameserver..."
                mv -f /tmp/resolv.conf.hso /etc/resolv.conf
        fi
        echo "Done."
}

#################################################################################################
#       METHOD: usage
#       PURPOSE:
#################################################################################################
usage()
{
        echo Usage: $0 \(up\|down\|restart\)
}

#################################################################################################
# Choose your action
#################################################################################################
case "$1" in
        up)
                Connect
                ;;
        down)
                Disconnect
                ;;
        restart)
                Disconnect
                Connect
                ;;
        *)
                usage
                ;;
esac
APN=home.beeline.ru
USER=beeline
PASS=beeline
# PIN=

В dmesg и логах пусто. Есть идеи?

зачем такой навороченный

зачем такой навороченный скрипт нужен ты сам для себя знаешь? ;)
у меня настроен на ноутбуке интернет через несколько мобильников от разных операторов, вот настройки билайна:

cat /etc/ppp/peers/beeline-usb 
#!/bin/bash                                    
#/etc/ppp/peers/provider                       
#/dev/ttyUSB0    # Serial device to which the GPRS phone is connected
/dev/ttyACM0   #If using cdc-acm module
debug        # Comment this off, if you don't need more info
# scripts to initialize the 3G / EDGE / GPRS modem
connect '/usr/sbin/chat -v -f /etc/ppp/peers/Beeline-chat'
# AT commands used to 'hangup' the connection
# disconnect '/usr/sbin/chat -v -f /etc/ppp/peers/disconnect-chat'
#460800      # Serial port line speed
crtscts    # hardware flow control for cable
local        # Ignore carrier detect signal from the modem:
lcp-echo-failure 0
lcp-echo-interval 0
# IP addresses:
:0.0.0.0
# - accept peers idea of our local address and set address peer as 10.6.6.6
# (any address would do, since IPCP gives 0.0.0.0 to it)
# - if you use the 10. network at home or something and pppd rejects it,
# change the address
noipdefault        # pppd must not propose any IP address to the peer!
ipcp-accept-local    # Accept peers idea of our local address
defaultroute        # Add the ppp interface as default route to the IP routing table
#replacedefaultroute    # New route should be our default route to Internet
usepeerdns        # User DNS returned by server
noauth            # The phone is not required to authenticate
# Most phone do not support compression, so turn it off.
#noipv6
#novj
#nobsdcomp
#novjccomp
#nopcomp
#noaccomp
# Username and password:
# If username and password are required by the APN, put here the username
# and put the username-password combination to the secrets file:
# /etc/ppp/pap-secrets for PAP and /etc/ppp/chap-secrets for CHAP
# authentication. See pppd man pages for details.
user "internet.beeline.ru"        # Change this
# persist            # Persistent connection
maxfail 99999        # Retry and retry and retry if failed...
lock
cat /etc/ppp/peers/Beeline-chat
'TIMEOUT'         '15'
'ABORT'           'BUSY'
'ABORT'           'ERROR'
'ABORT'           'NO ANSWER'
'ABORT'           'NO CARRIER'
'ABORT'           'NO DIALTONE'
'ABORT'           'Invalid Login'
'ABORT'           'Login incorrect'
''              'ATE1'
'OK'              'AT+CGDCONT=1,"IP","internet.beeline.ru"'
'OK'              'ATD*99***1#'
'CONNECT'         'c'

запускается это дело pppd call beeline-usb или для отладки pppd nodetach debug call beeline-usb

также можно все настройки прописать в /etc/conf.d/net:

# для baselayout 1.*
config_ppp2=( "ppp" )                        
link_ppp2="ttyACM0"                          
pppd_ppp2=(                                  
"debug"                                      
"crtscts"                                    
"local"                                      
"lcp-echo-failure 0"                         
"lcp-echo-interval 0"                        
":0.0.0.0"                                   
"noipdefault"                                
"ipcp-accept-local"                          
"defaultroute"                               
"usepeerdns"                                 
"noauth"                                     
'user "internet.beeline.ru"'                 
"persist"                                    
"maxfail 99999"                              
)                                            
chat_ppp2=(                                  
    'TIMEOUT'         '45'                   
    'ABORT'           'BUSY'                 
    'ABORT'           'NO CARRIER'           
    'ABORT'           'ERROR'                
    ''              'ATE1'
    'OK'              'AT+CGDCONT=1,"IP","internet.beeline.ru"'
    'OK'              'ATD*99***1#'
    'CONNECT'         'c'
)

# для baselayout 2.*
config_ppp4="ppp"
link_ppp4="rfcomm2"
pppd_ppp4="
debug
crtscts
local
lcp-echo-failure 0
lcp-echo-interval 0
:0.0.0.0
noipdefault
ipcp-accept-local
defaultroute
usepeerdns
noauth
persist
user \"internet.beeline.ru\"
maxfail 99999
"
chat_ppp4="
'TIMEOUT'         '15'
'ABORT'           'BUSY'
'ABORT'           'ERROR'
'ABORT'           'NO ANSWER'
'ABORT'           'NO CARRIER'
'ABORT'           'NO DIALTONE'
'ABORT'           'Invalid Login'
'ABORT'           'Login incorrect'
''              'ATE1'
'OK'              'AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\"'
'OK'              'ATD*99***1#'
'CONNECT'         'c'
"

эти примеры должны помочь, а куда оно пишет логи тебе очень советую выяснить ;)

У меня hso

Nikoli написал(а):
/dev/ttyACM0 #If using cdc-acm module

Если бы все было так просто, но это не то - у меня Icon 225, а он работает через hso.

Чтобы получить ответ, Вам

Чтобы получить ответ, Вам нужно узнать что происходит с модемом, и как с ним надо общаться. Первое можно узнать с помощью отладочной информации из ядра и дополнительных утилит, второе нужно получить или из спецификаций или с помощью снифера под виндовс. Если не хочется связываться с уровнем ядра, можно посылать команды в ручную, а обмен pppd смотреть с помощью ключа record (читать вывод можно с помощью pppdump).

А hso-connect себя ведет

А hso-connect себя ведет также?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".