1

Temat: Restart modemu LTE

Witajcie,

Chciałbym się podzielić moim rozwiązaniem dotyczącym wymuszenia restartu modemu LTE.

Mój modem to Huawei E3276.

Niestety co jakiś czas zdarza się, że modem traci połączenie z internetem. Nie udało mi się ustalić przyczyny, ale dzieje się to stosunkowo rzadko (raz na kilka dni).
Jest to o tyle kłopotliwe, że modem ten stanowi dla mnie backup głównego łącza ethernetowego (przełączanie następuje za pomocą mwan3) i musi znajdować się stale w stanie gotowości.

Mój "workaround" to badanie pingiem czy działa internet (8.8.8.8) poprzez interfejs modemu (wan2).
Jeśli nie, to wymuszam restart modemu.
Testowanie odbywa się co 30 minut (skrypt odpalany w cronie)

Niestety nie sprawdza się prosty sposób restartu w postaci:

ifdown wan2
ifup wan2

Po tym zabiegu mój modem dalej nie jest połączony z internetem.

Ja do restartu używam toola "usbreset" (trzeba doinstalować pakiet usbreset)

ifdown wan2
usbreset  xxxx:yyyy
ifup wan2

xxxx:yyyy - znajdujemy za pomocą lsusb (z pakietu usbutils)

A całe rozwiązanie wygląda tak:

- skrypt monitorujący połączenie: 
lte_connection_monitor

#!/bin/ash
# skrypt do monitorowania polaczenia LTE z crona
# jesli ping przez interfejs wan2/wwan0 (modem LTE) nie dziala
# to nastepuje restart modemu LTE
#
# dodatkowo kazdy restart jest logowany do pliku

# zmienna "modem_status" - przechowuje wynik pingowania hosta w internecie przez inrefejs LTE
# 1 - oznacza ze link dziala
# 0 - link nie dziala
modem_status=1;
modem_status=`ping 8.8.8.8 -I wwan0 -c 5 -w 5 2> /dev/null | grep -c "\ 0% packet loss"` ;
if [ $modem_status == 0  ]; then
    # logowanie restartu do pliku
    date >> /tmp/ubi1/lte_restart.log;
    # restart modemu
    /root/bin/lte_modem_restart >> /dev/null
fi

- skrypt restartujący modem LTE:
lte_modem_restart

#!/bin/ash
ifdown wan2
usbreset  xxxx:yyyy
ifup wan2

- wywolanie w cronie (co 30 minut):

*/30 * * * * /root/bin/lte_connection_monitor