Некоторое время назад для использования 4G USB модема на даче мной был приобретен роутер Keenetic 4G rev. B и USB модем Huawei E3272s.
Все замечательно заработало, но счастье было не долгим. Модем начал отваливаться по нескольку раз в день, а потом и вовсе перестал работать с роутером.
К тому времени уже появилась новая модель Keenetic 4G III, и я понадеявшись что проблема с USB модемами в новом устройстве решена таки его купил.
К сожалению, мои надежды не оправдались. И в новом роутере ни один из моих уже трех модемов без танцев с бубном не работал стабильно. Пробовал подключать Huawei E3272s, E398, E3372, напрямую в USB порт, без удлинителей.
Очевидно что модемам не хватало питания (хотя на первый взгляд на USB разъеме роутера гордо висит 5,00в). Первым решением было купить активный USB кабель с возможностью подключения доп. питания на дальнем хвосте от роутера. Выбор пал на 5м кабель с хабом на 2 порта Greenconnection GC-UEC5M3. В паре с адаптером на 5,2в все замечательно заработало, и бонусом на него можно было повесить сразу 2 модема для резервирования канала.
Первый Keenetic 4G, Хотел было уже выбросить, но решил поковырять. Поднял питание USB до 5,2в, уменьшив сопротивление резистора R184 с 8,2ком до 7,8 ком, (поставил параллельно 150 ком) + впаял электролит 3300 мкф х 10в по питанию USB на пустые площадки C463, и о чудо!
Наиболее проблемный модем huawei E3272s, который полностью отказывался работать с роутером отлично завелся и стабильно работает! Сутки полет отличный! Для E392 и E3372 думаю хватит просто электролита без подъема напряжения (если не использовать пассивный USB удлинитель из комплекта или аналогичное барахло с тонкими проводами).
Новый Keenetic III 4G пока не разбирал, но похоже там аналогичная проблема с питанием USB.
Чтобы не ковырять роутеры можно сделать нехитрый сглаживатель пульсаций из USB переходника. Вешаем по питанию электролит 1000-4700 мкф х 10в + керамику 0,22 мкф, запаиваем их параллельно питанию USB и наслаждаемся стабильной работой модема.
Zyxel’ю однозначно не зачет.
- Вложения
-
- Доработка Keenetic 4G
- keenetic4g.jpg (58.55 КБ) 22247 просмотров
-
-
- Сглаживание пульсаций питания USB
- usb-cond.jpg (13.84 КБ) 22247 просмотров
-
Как выяснилось, зависания модема (или соединения) 3G/4G для версии прошивки 1 «не лечатся» встроенным софтом.
Казалось бы, всё просто — при наличии соединения пингуем какой-либо ресурс с заданной периодичностью и, не получив ответа (например, на два пинга), сбрасываем модем. Однако, это не реализовано разработчиками, хотя в настройках модема можно задать периодический пинг какого-то ресурса (в /bin/autoping.sh из полезного только ping, и ничего более).
Но можно собрать и использовать утилитку usbreset. А ещё проще — имеющуюся «на борту» утилиту usb_modeswitch, ведь в ней предусмотрен reset !
Итак, пишем командный файлик (назовём его usbmcc):
#!/bin/sh # Vendor:Product for Huawei E392 VENDOR_ID=12d1 PRODUCT_ID=1506 # Ping resource & test PING_RESOURCE=8.8.8.8 TEST_PING="`ping $PING_RESOURCE -c 2 | grep -o '0 packets received'`" # Test ppp interface string TEST_PPP="`ifconfig | grep -o ppp`" if [ "$TEST_PPP" = "ppp" ]; then echo "ppp found" if [ "$TEST_PING" != "0 packets received" ]; then echo "ping resource $PING_RESOURCE - success" else echo "ping resource $PING_RESOURCE - unsuccess, reset modem." /bin/usb_modeswitch -v $VENDOR_ID -p $PRODUCT_ID -R echo ".reset done, wait 3 minutes for ppp autorestart" fi else echo "ppp not found" fi
ID производителя и продукта (в примере — для Huawei E392) можно узнать при помощи утилиты lsusb, установить её можно так:
opkg install usbutils
Адрес 8.8.8.8 в примере — DNS
от Google, но можно любой иной, в котором Вы уверены)
Разместим usbmcc в /media/DISK_A1/system/etc, разрешим выполнение
chmod 755 /media/DISK_A1/system/etc/usbmcc
и добавим задание для cron — /media/DISK_A1/system/etc/crontabs/root (не забудьте перезапустить cron)
*/5 * * * * /media/DISK_A1/system/etc/usbmcc
Выполнять usbmcc чаще, чем раз в 5 минут, не следует, поскольку от сброса модема до его автоматического рестарта проходит обычно 2-3 минуты, лучше задать с запасом, при этом в журнале (если выполнялся сброс) будут примерно такие записи:
20 авг 09:52:49 kernel usb 1-1.4: reset high speed USB device using dwc_otg and address 30 20 авг 09:54:50 pppd[17825] No response to 4 echo-requests 20 авг 09:54:50 pppd[17825] Serial link appears to be disconnected. 20 авг 09:54:50 pppd[17825] Connect time 1567.7 minutes. 20 авг 09:54:50 pppd[17825] Sent 110186142 bytes, received 685790327 bytes. 20 авг 09:54:51 dnsmasq[15284] started, version 2.55 cachesize 150 20 авг 09:54:51 dnsmasq[15284] reading /etc/resolv.conf 20 авг 09:54:51 dnsmasq[15284] using nameserver 8.8.4.4#53 20 авг 09:54:51 dnsmasq[15284] using nameserver 8.8.8.8#53 20 авг 09:54:51 dnsmasq[15284] read /etc/hosts - 2 addresses 20 авг 09:54:56 pppd[17825] Connection terminated. 20 авг 09:54:56 pppd[17825] Modem hangup 20 авг 09:54:56 pppd[17825] Exit. 20 авг 09:55:01 pppd[15364] pppd 2.4.4 started by root, uid 0 20 авг 09:55:02 pppd[15364] Serial connection established. 20 авг 09:55:02 pppd[15364] Using interface ppp0 20 авг 09:55:02 pppd[15364] Connect: ppp0 <--> /dev/ttyUSB0 20 авг 09:55:03 pppd[15364] CHAP authentication succeeded 20 авг 09:55:03 pppd[15364] CHAP authentication succeeded 20 авг 09:55:03 pppd[15364] Could not determine remote IP address: defaulting to 10.64.64.64 20 авг 09:55:03 pppd[15364] local IP address 10.253.255.203 20 авг 09:55:03 pppd[15364] remote IP address 10.64.64.64 20 авг 09:55:04 dnsmasq[15463] started, version 2.55 cachesize 150 20 авг 09:55:04 dnsmasq[15463] reading /etc/resolv.conf 20 авг 09:55:04 dnsmasq[15463] using nameserver 8.8.4.4#53 20 авг 09:55:04 dnsmasq[15463] using nameserver 8.8.8.8#53 20 авг 09:55:04 dnsmasq[15463] using nameserver 8.8.4.4#53 20 авг 09:55:04 dnsmasq[15463] using nameserver 8.8.8.8#53 20 авг 09:55:04 dnsmasq[15463] read /etc/hosts - 2 addresses .
Периодический пинг какого-то ресурса в настройках модема рекомендуется включить (например, тот же 8.8.8.8 каждые 60 секунд).
#!/bin/sh # Vendor:Product for Huawei E392 VENDOR_ID=12d1 PRODUCT_ID=1506 # Ping resources & test packets PING_RESOURCES="8.8.8.8 8.8.4.4 ya.ru" TEST_PACKETS=2 # Test interface string TEST_IFACE="ppp" TEST_PPP="`ifconfig | grep -o $TEST_IFACE`" # Temp file TMP_FILE="/tmp/usbmcc.tmp" if [ "$TEST_PPP" != "$TEST_IFACE" ]; then echo "interface $TEST_IFACE not found" else echo "interface $TEST_IFACE found" # Initial success = unsuccess local success=0 # Resources loop for resource in $PING_RESOURCES; do # Ping ping $resource -c $TEST_PACKETS > $TMP_FILE # Test for success echo "ping resource $resource." if grep -q 'packets received,' $TMP_FILE; then if grep -q ', 0 packets received,' $TMP_FILE; then echo ".unsuccess, packets not received" else echo ".success" success=1 break fi else echo ".unsuccess, ping packets not sent" fi done rm -f $TMP_FILE if [ $success -eq 0 ]; then echo "reset interface $TEST_IFACE equipment." /bin/usb_modeswitch -v $VENDOR_ID -p $PRODUCT_ID -R echo ".reset done, wait 3 minutes for $TEST_IFACE autorestart" fi fi
Теперь мы можем задать несколько серверов в PING_RESOURCES (в примере — два DNS
от Гугла и поисковик Яндекса).
P. P. S. Для некоторых модемов сброс может не проходить и приводить к зависаниям модема и т.п. — такая информация найдена в сети.
