Борьба с зависанием МТС 3G модема ZTE MF192+ на Zyxel Keenetic giga

Материал из AlexNook
Перейти к навигацииПерейти к поиску

Развитие постепенно идёт и вроде как у нас теперь везде есть мега стабильный и быстрый интернет =)

Решил себе на даче создать свою сеть. Для чего решил использовать Zyxel keenetic giga и 3G модем от МТС. Качество связи, её надёжность, задержки и т. д. конечно ужасные, но и речь идёт не о ближнем подмосковье. В принципе всё можно стерпеть, но хардварные зависания модема совсем добили. Если модем зависает, то всё что может помочь это сброс питания на шине USB. Теоретически это можно реализовать на том же C, но важно, чтобы аппаратная начинка это поддерживала.

В моём случае единственным вариантом было просто отправлять роутер Keenetic в рестарт. Для проверки работоспособности модема было решено написать код на C, который бы, используя libusb, помог послать в модем AT команды и проверить отвечает ли он. На данный подход меня вдохновило обсуждение на сайте Gentoo вот тут. Этот подход мог не требовал остановки процесса pppd, который лочил файл устройства модема /dev/ttyACM0. Однако, тут уже нужно было общаться с устройством не через его файл, а через usb endpoint.

Тестировать программу решил на Gentoo box amd64, а потом уже собрать под Keenetic, благо вот тут есть шикарная инструкция по этому поводу. Но как я ни старался, ничего хорошего не вышло. Подробности и код можно посмотреть здесь.

Однако, позже я узнал, что в данной аппаратной ревизии кинетика нет полноценной реализации USB, и мой план так и так был обречён на провал. Поэтому пришлось пойти по другому пути