В результате отключения света на моем роутере TP-Link TL-MR3420 v2 после загрузки не монтируется usb-флешка. А у меня там поднят ftp-сервер с автоматическими бекапами и перезагрузка роутера в ручную порядком надоела.
Я выяснил что врезультате такого нештатного выключения роутера openwrt не видит usb-устройство. Команда dmesg | grep sda ничего не показывает.
Я решил проделать трюк с выключеним и включением питания на usb через gpio. И он сработал, остаплось только поставить в автозагрузку скрипт который будет проверять вывод команды dmesg | grep sda и передергивать питание на usb роутера.
1. Выясняем на каком gpio у нас висит usb
вывод команды:
Видим, что скорее всего нас интересует gpio4. На других моделях маршрутизаторов он может быть с другим номером.
Пробуем включить и выключить usb. При этом светодиод на флешке выключится и включится соответственно.
выключаем usb-порт на openwrt
включаем usb-порт на openwrt
2. Создаем скрипт для автозагрузки
START=39
start() {
if (dmesg | grep -q sda); then
echo "sda ok"
else
echo "sda error"
echo 0 > /sys/devices/virtual/gpio/gpio4/value
sleep 1
echo 1 > /sys/devices/virtual/gpio/gpio4/value
fi
}
Делаем его исполняемым
И добавляем в автозагрузку
После этого мой роутер не боится внезапных перезагрузок.