Оставлю себе напоминание об этом периоде.
Linux 3.2.18, buildroot 05-2013.
В первую очередь - мне не надо переключать модем в режим модема) потому что он сразу в нем и нет всякой ерунды типа сидирома и флэшки.
Просто появляется четыре устройства (типично - ttyUSB0-3).
ttyUSB0 - предназначен для обмена с модемом по двоичному протоколу (полезно, чтобы не разрывать текущее соединение)
ttyUSB3 - обмен классическими AT-командами.
Однако для того, чтобы увидеть эти самые устройства, нам надо конечно же настроить ядро (make linux-menuconfig):
* Device drivers
* USB Support
* USB Serial converter support
* USB Generic serial driver
* USB friver for GSM and CDMA modems
* USB Sierra wireless driver
В принципе, теперь на загрузке должно появится упоминание о ttyUSB* устройствах.
Можно даже и соединятся напрямую посылая команды в ttyUSB3, но удобнее для этого использовать pppd, а чтобы использовать для начала надо установить (make menuconfig):
* Packages
* Network applications
* pppd
После установки настраиваем pppd:
1. Создаем файл /etc/ppp/peers/имя_соединения такого содержания:
/dev/ttyUSB3 115200
nobsdcomp
nodeflate
connect '/usr/sbin/chat -v -f /etc/ppp/chat-gprs'
noauth
noipdefault
usepeerdns
defaultroute
debug
nodetach
Linux 3.2.18, buildroot 05-2013.
В первую очередь - мне не надо переключать модем в режим модема) потому что он сразу в нем и нет всякой ерунды типа сидирома и флэшки.
Просто появляется четыре устройства (типично - ttyUSB0-3).
ttyUSB0 - предназначен для обмена с модемом по двоичному протоколу (полезно, чтобы не разрывать текущее соединение)
ttyUSB3 - обмен классическими AT-командами.
Однако для того, чтобы увидеть эти самые устройства, нам надо конечно же настроить ядро (make linux-menuconfig):
* Device drivers
* USB Support
* USB Serial converter support
* USB Generic serial driver
* USB friver for GSM and CDMA modems
* USB Sierra wireless driver
В принципе, теперь на загрузке должно появится упоминание о ttyUSB* устройствах.
Можно даже и соединятся напрямую посылая команды в ttyUSB3, но удобнее для этого использовать pppd, а чтобы использовать для начала надо установить (make menuconfig):
* Packages
* Network applications
* pppd
После установки настраиваем pppd:
1. Создаем файл /etc/ppp/peers/имя_соединения такого содержания:
/dev/ttyUSB3 115200
nobsdcomp
nodeflate
connect '/usr/sbin/chat -v -f /etc/ppp/chat-gprs'
noauth
noipdefault
usepeerdns
defaultroute
debug
nodetach
2. Напишем файл /etc/ppp/chat-имя_соединения:
TIMEOUT 5
ECHO ON
ABORT '\nBUSY\r'
ABORT '\nERROR\r'
ABORT '\nNO ANSWER\r'
ABORT '\nNO CARRIER\r'
ABORT '\nNO DIALTONE\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
'' \rAT
TIMEOUT 12
OK ATE1
OK 'AT+cgdcont=1,"IP","m2mstatic.beeline.ru"'
OK ATD*99#
После таких манипуляций мы уже можем проверить соединение: pppd call имя_соединения
На этом бы можно было и закончить но есть проблема раз - соединение периодически разрывается. Раз проблема решается добавлением в файл /etc/inittab строки :::respawn:pppd call имя_соединения.
Однако стала проявляться проблема номер два - обрыв может произойти из-за аппаратной проблемы в модеме, и вот тут и всплывает, что после такого обрыва файл порта ВНЕЗАПНО становится ttyUSB4 и соединиться мы уже ни с кем, понятно, не сможем( Грусть-печаль, помогает тут передергивание провода USB. Но как-то это не технологично, поэтому думаем, как программно отключать USB-хабы, додумываемся до такого:
echo 0 > /sys/bus/usb/devices/usb2/1-1/1-1.2/authorized (отключить)
echo 1 > /sys/bus/usb/devices/usb2/1-1/1-1.2/authorized (включить)
echo 1 > /sys/bus/usb/devices/usb2/1-1/1-1.2/authorized (включить)
Удобно все это засунуть в отдельный скрипт:
echo 0 > /sys/bus/usb/devices/usb2/authorized
sleep 5
echo 1 > /sys/bus/usb/devices/usb2/authorized
sleep 5
echo 0 > /sys/bus/usb/devices/usb1/authorized
sleep 5
echo 1 > /sys/bus/usb/devices/usb1/authorized
sleep 5
date >> /var/gprs
echo "gprs connect" >> /var/gprs
pppd call gprs
И уже этот скрипт вызывать для создания соединения.
Ну и напоследок важный момент - маршрутизация. После создания тоннеля надо его прописать маршрутом по умолчанию. Для этого создаем файл /etc/ppp/ip-up с таким содержимым:
#!/bin/sh
route del default
route add default ppp0
А теперь точно все.