Модем может работать 1,2,3 дня и повиснуть, а может повиснуть и после часа работы, короче из-за чего происходит данный косяк я так и не выяснил.
Так как простая перезагрузка устройства не помогала в связи с тем, что на usb порту всегда есть 5 вольт, модем можно было вернуть к жизни только физическое воздействие, т.е. вынуть модем из порта и вставить его на место.
В общем перерыв кучу документации и форумов, решение было найдено!
При корректном подключении USB модема в системе появляется 3 порта. ..tts/0, ../tts/1, ../tts/2 в других прошивкам может располагаться и обзываться по другому но смысл тот же.
Зависший модем можно перезагрузить послав команду в третий порт:
chat -e -t5 '' 'AT+CFUN=1,1' 'OK' </dev/usb/tts/2 >/dev/usb/tts/2
теперь можем написать простенький скрипт и добавить его в крон
#!/bin/bash
ping -c 3 8.8.8.8
if [ $? != 0 ]; then
chat -e -t5 '' 'AT+CFUN=1,1' 'OK' </dev/usb/tts/2 >/dev/usb/tts/2
fi
Я прописал на своем роутере данный скрип в cron и он исполняется каждые пять минут.
Если USB модем завис, то он автоматически перезагружается!
Update 02.01.2014.
Приобрел новый usb модем фирмы ZTE и данный скрипт наотрез отказался работать с данным модемам, на модеме HUAWEI E171 скрипт работает без нареканий.
Пошел другим путем:
Роутер на zyxel keenetic 2 поддерживает программное управление питанием usb портов.
Написал простой скрипт управления зависшим модемом для 2 версии роутеров keenetic:
#!/bin/sh
#logger "Test modem reboot script."
ping -c 5 8.8.8.8
if [ $? != 0 ]; then
logger "INTERNET - OFF! Reboot USB Modem!"
logger "USB power - OFF!"
ledctl 53
ledctl 55
sleep 5
logger "USB power - ON!"
ledctl 52
ledctl 54
fi
Данный скрипт отключает питание на usb портах и снова включает при пропаже ответов от "google.ru".