Билайн интернет дома: модем Icon 225
B_dot 9 января, 2009 - 18:17
Проблема с настройком модема 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 и логах пусто. Есть идеи?
»
- Для комментирования войдите или зарегистрируйтесь

зачем такой навороченный
зачем такой навороченный скрипт нужен ты сам для себя знаешь? ;)
у меня настроен на ноутбуке интернет через несколько мобильников от разных операторов, вот настройки билайна:
запускается это дело 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
Если бы все было так просто, но это не то - у меня Icon 225, а он работает через hso.
GreenMice - сайт и блог о linux, opensouce и администрированию
Чтобы получить ответ, Вам
Чтобы получить ответ, Вам нужно узнать что происходит с модемом, и как с ним надо общаться. Первое можно узнать с помощью отладочной информации из ядра и дополнительных утилит, второе нужно получить или из спецификаций или с помощью снифера под виндовс. Если не хочется связываться с уровнем ядра, можно посылать команды в ручную, а обмен pppd смотреть с помощью ключа record (читать вывод можно с помощью pppdump).
А hso-connect себя ведет
А hso-connect себя ведет также?