Здравствуйте мои маленькие любители консольки-пердольки! (ц) Вопрос в конце поста. Сперва предыстория.
Использую дистрибутив CRUX (читай: LFS, данный метод оттестирован и будет работать везде), а так же использую ванильное ядро с kernel.org, т.е. собираем всё ручками.
В настройках ядра необходимо включить опции ppp_async (Device drivers -> Network device support -> PPP) и usb_acm (Device drivers -> USB support -> USB Modem (CDC ACM) support).
При подключении мобильного телефона выбрать режим PC Suite — тестировалось на Nokia N900 и Nokia C2-01, оба телефона прекрасно работают как модем через USB-шнурок.
В последствии, телефон подключенный к вашему ПК будет отображаться как модем /dev/ttyACM0.
Мой ОпСоС мегафон, настраивается следующим образом.
В /etc/ppp/peers/megafon пишем
/dev/ttyACM0
57600
persist
holdoff 5
maxfail 0
defaultroute
usepeerdns
connect '/usr/sbin/chat -v -f /etc/ppp/chats/megafon'
В /etc/ppp/chats/megafon пишем
"" AT
OK AT+CGDCONT=1,"IP","internet"
OK ATD*99***1#
CONNECT
Теперь выполняем pppd call megafon
и довольствуемся мобильными интернетами с нашего ПК или ноутбука!
# tail -f /var/log/messages
Jun 10 03:27:14 host pppd[2108]: pppd 2.4.7 started by root, uid 0
Jun 10 03:27:15 host chat[2109]: send (AT^M)
Jun 10 03:27:15 host chat[2109]: expect (OK)
Jun 10 03:27:15 host chat[2109]: AT^M^M
Jun 10 03:27:15 host chat[2109]: OK
Jun 10 03:27:15 host chat[2109]: -- got it
Jun 10 03:27:15 host chat[2109]: send (AT+CGDCONT=1,"IP","internet"^M)
Jun 10 03:27:15 host chat[2109]: expect (OK)
Jun 10 03:27:15 host chat[2109]: ^M
Jun 10 03:27:15 host chat[2109]: AT+CGDCONT=1,"IP","internet"^M^M
Jun 10 03:27:15 host chat[2109]: OK
Jun 10 03:27:15 host chat[2109]: -- got it
Jun 10 03:27:15 host chat[2109]: send (ATD*99***1#^M)
Jun 10 03:27:15 host chat[2109]: expect (CONNECT)
Jun 10 03:27:15 host chat[2109]: ^M
Jun 10 03:27:17 host chat[2109]: ATD*99***1#^M^M
Jun 10 03:27:17 host chat[2109]: CONNECT
Jun 10 03:27:17 host chat[2109]: -- got it
Jun 10 03:27:17 host pppd[2108]: Serial connection established.
Jun 10 03:27:17 host pppd[2108]: Using interface ppp1
Jun 10 03:27:17 host pppd[2108]: Connect: ppp1 <--> /dev/ttyACM0
Jun 10 03:27:18 host pppd[2108]: not replacing existing default route through ppp0
Jun 10 03:27:18 host pppd[2108]: local IP address 100.68.170.187
Jun 10 03:27:18 host pppd[2108]: remote IP address 10.6.6.6
Jun 10 03:27:18 host pppd[2108]: primary DNS address 10.154.44.158
Jun 10 03:27:18 host pppd[2108]: secondary DNS address 85.26.231.188
# ifconfig
ppp1 Link encap:Point-to-Point Protocol
inet addr:100.68.170.187 Bcast:0.0.0.0 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:64 TX bytes:97
Вопрос! У меня не работает автоматическое переподключение к интернетам, щито поделать?
Указана опция persist, значит pppd демон никогда не завершается. Я тупо отключаю мобильный телефон от ноутбука, pppd в /var/log/messages пишет ошибку, типа...
Jun 10 03:29:58 host pppd[2108]: Failed to open /dev/ttyACM0: No such file or directory
Ну понятно, модем отобрали у него. Затем снова подключаю мобильный телефон, выбираю всё тот-же режим PC Suite, pppd его видит, но автоматически подключаться к интернетам не желает!
Jun 10 03:29:44 host pppd[2108]: Serial connection established.
Jun 10 03:29:44 host pppd[2108]: Using interface ppp1
Jun 10 03:29:44 host pppd[2108]: Connect: ppp1 <--> /dev/ttyACM0
Jun 10 03:29:45 host pppd[2108]: LCP terminated by peer
Jun 10 03:29:48 host pppd[2108]: Connection terminated.
Jun 10 03:29:48 host pppd[2108]: Hangup (SIGHUP)
Jun 10 03:29:48 host pppd[2108]: Modem hangup
ЧЯДНТ? chat успешно отрабатывает, соединение типа устанавливает, но не подключается.
В телефоне в этот момент всплывает окошечно что у него ошибка сети.
Аналогичная ситуация происходит, когда я посылаю сигнал kill -s HUP `pgrep pppd`, т.е. говорю ему чтобы он просто переподключился сам. Он не переподключается. Вываливается в ошибку.
Что сделать, чтобы он нормально переподключался?
Не хочу костыли типа перезапуск pppd демона, хочу просто грамотно настроить. =(