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