Ключевые слова:mobile, gprs, modem, usb, linux, kernel, (найти похожие документы)
From: http://www.linuxmobile.h12.ru
Date: Mon, 20 Jan 2005 18:21:07 +0000 (UTC)
Subject: GPRS в Linux через телефон Motorola
Оригинал: http://www.linuxmobile.h12.ru/data/motorola/gprs.html
Всё что написано ниже, 100% будет работать на следующих моделях
(возможно и на более новых):
- V66
- V66i
- T280
- T720i
- С331
- С332
- С333
- С350
Подключение лично мной тестировалось начиная с kernel 2.4.19 и
заканчивая kernel 2.6.5
Для ядер 2.4.Х
Если у Вас ядро 2.4.19 или 2.4.20, то придётся сделать следущее
(начиная с ядра 2.4.21, пункт 1 пропускаем):
1) Откройте на редактирование файл /usr/src/linux/drivers/usb/acm.c
(перед редактированием не забудьте сделать резервную копию этого
файла):
Находим в этом файле следущую секцию:
/*
* USB driver structure.
*/
static struct usb_device_id acm_ids[] = {
{ USB_DEVICE_INFO(USB_CLASS_COMM, 0, 0) },
{ }
};
И приводим её к следующему виду:
/*
* USB driver structure.
*/
static struct usb_device_id acm_ids[] = {
{ USB_DEVICE_INFO(USB_CLASS_COMM, 0, 0) },
{ USB_DEVICE_INFO(USB_CLASS_COMM, 2, 0) },
{ }
};
2) Далее выполняем следующую команду:
mknod /dev/ttyACM0 c 166 0
Соответственно ваш теперь ваш GPRS-модем = /dev/ttyACM0
3) Делаем символическую ссылку ln-s /dev/ttyACM0 /dev/modem и
используем один из способов подключения к GPRS (рекомендую скрипты)
Для ядер 2.6.Х
В Вашем ядре должна быть включена поддержка ACM модема.
Существует два варинта - поддержка осуществляется модулем либо
вкомпиливается в само ядро. Рассмотрим оба варианта:
Модулем
Для тех кто не собирает ядро сам, а использует ядро входящее в состав
дистрибутива пункт 1 пропускается
1) Во время конфигурации ядра указываем следущее
Device Drivers ---> USB support ---> USB Modem (CDC ACM) support
2) После сборки и загрузки с новым ядром выполняем команду
modprobe cdc_acm
3) Теперь ваш GPRS-модем это /dev/ttyACM0, в случае если вы
используете devfs, ваш GPRS-модем - /dev/usb/acm/0
4) Делаем символическую ссылку ln-s /dev/ttyACM0 /dev/modem (ln-s
/dev/usb/acm/0 /dev/modem) и используем один из способов подключения к
GPRS (рекомендую скрипты или Kppp)
Включаем в ядро
1) Во время конфигурации ядра указываем следущее
Device Drivers ---> USB support ---> <*> Support for Host-side USB
Device Drivers ---> USB support ---> <*> USB Modem (CDC ACM) support
2) После сборки и загрузки с новым ядром ваш GPRS-модем это
/dev/ttyACM0, в случае если вы используете devfs, ваш GPRS-модем -
/dev/usb/acm/0
3) Делаем символическую ссылку ln-s /dev/ttyACM0 /dev/modem (ln-s
/dev/usb/acm/0 /dev/modem) и используем один из способов подключения к
GPRS (рекомендую скрипты или Kppp)
http://www.linuxmobile.h12.ru/data/siemens/gprs.htmlBeeline:
#!/bin/sh
DIALTIMEOUT=20
MODEM=modem SPEED=115200 MODEM_INIT='AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\" OK'
IH_IP=" ipcp-accept-local ipcp-accept-remote noipdefault
debug usepeerdns user beeline mtu 576
novj nobsdcomp novjccomp nopcomp noaccomp"
LOGSCRIPT="CONNECT"
PHONE="*99***1#"
# перед запуском pppd удаляет default router, по окончании - восстанавливает
# Более корректно было бы вставить эти действия в /etc/ppp/ip-up.local и /etc/ppp/ip-down.local
DR=`route -n | egrep '^0.0.0.0'| grep -v ppp | sed 's/^[^ ]* *\([^ ]*\) .*/default gw \1/'` ;
if [ -n "$DR" ] ; then
trap "echo route add $DR ; route add $DR ; exit" 2 3 9 15
route delete $DR
echo route delete $DR
fi
##########################
##################### При обрыве соединения pppd перезапускается ####################
while true ; do
pppd \
connect 'chat -v ABORT "NO DIALTONE" ABORT "NO CARRIER" ABORT BUSY "" '"$MODEM_INIT"' ATDP'$PHONE' '"$LOGSCRIPT"' ;' \
crtscts defaultroute modem -detach mru 576 \
$NASH_IP:$IH_IP /dev/$MODEM $SPEED
cat /etc/ppp/resolv.conf > /etc/resolv.conf
sleep $DIALTIMEOUT
done
MTS:
----
#!/bin/sh
DIALTIMEOUT=20
MODEM=modem SPEED=115200 MODEM_INIT='AT+CGDCONT=1,\"IP\",\"internet.mts.ru\" OK'
IH_IP=" ipcp-accept-local ipcp-accept-remote noipdefault
debug usepeerdns user mts mtu 576
novj nobsdcomp novjccomp nopcomp noaccomp"
LOGSCRIPT="CONNECT"
PHONE="*99***1#"
# перед запуском pppd удаляет default router, по окончании - восстанавливает
# Более корректно было бы вставить эти действия в /etc/ppp/ip-up.local и /etc/ppp/ip-down.local
DR=`route -n | egrep '^0.0.0.0'| grep -v ppp | sed 's/^[^ ]* *\([^ ]*\) .*/default gw \1/'` ;
if [ -n "$DR" ] ; then
trap "echo route add $DR ; route add $DR ; exit" 2 3 9 15
route delete $DR
echo route delete $DR
fi
##########################
##################### При обрыве соединения pppd перезапускается ####################
while true ; do
pppd \
connect 'chat -v ABORT "NO DIALTONE" ABORT "NO CARRIER" ABORT BUSY "" '"$MODEM_INIT"' ATDP'$PHONE' '"$LOGSCRIPT"' ;' \
crtscts defaultroute modem -detach mru 576 \
$NASH_IP:$IH_IP /dev/$MODEM $SPEED
cat /etc/ppp/resolv.conf > /etc/resolv.conf
sleep $DIALTIMEOUT
done
Megafon:
--------
#!/bin/sh
DIALTIMEOUT=20
MODEM=modem SPEED=115200 MODEM_INIT='AT+CGDCONT=1,\"IP\",\"internet.ltmsk\" OK'
IH_IP=" ipcp-accept-local ipcp-accept-remote noipdefault
debug usepeerdns user gdata mtu 576
novj nobsdcomp novjccomp nopcomp noaccomp"
LOGSCRIPT="CONNECT"
PHONE="*99***1#"
# перед запуском pppd удаляет default router, по окончании - восстанавливает
# Более корректно было бы вставить эти действия в /etc/ppp/ip-up.local и /etc/ppp/ip-down.local
DR=`route -n | egrep '^0.0.0.0'| grep -v ppp | sed 's/^[^ ]* *\([^ ]*\) .*/default gw \1/'` ;
if [ -n "$DR" ] ; then
trap "echo route add $DR ; route add $DR ; exit" 2 3 9 15
route delete $DR
echo route delete $DR
fi
##########################
##################### При обрыве соединения pppd перезапускается ####################
while true ; do
pppd \
connect 'chat -v ABORT "NO DIALTONE" ABORT "NO CARRIER" ABORT BUSY "" '"$MODEM_INIT"' ATDP'$PHONE' '"$LOGSCRIPT"' ;' \
crtscts defaultroute modem -detach mru 576 \
$NASH_IP:$IH_IP /dev/$MODEM $SPEED
cat /etc/ppp/resolv.conf > /etc/resolv.conf
sleep $DIALTIMEOUT
done