1 1 1 1 1 Rating 0.00 (0 Votes)

В результате отключения света на моем роутере TP-Link TL-MR3420 v2 после загрузки не монтируется usb-флешка. А у меня там поднят ftp-сервер с автоматическими бекапами и перезагрузка роутера в ручную порядком надоела.

 

Я выяснил что врезультате такого нештатного выключения роутера openwrt не видит usb-устройство. Команда dmesg | grep sda ничего не показывает.

Я решил проделать трюк с выключеним и включением питания на usb через gpio. И он сработал, остаплось только поставить в автозагрузку скрипт который будет проверять вывод команды dmesg | grep sda и передергивать питание на usb роутера.

1. Выясняем на каком gpio у нас висит usb

ls /sys/devices/virtual/gpio/

вывод команды:

gpio4      gpiochip0

Видим, что скорее всего нас интересует gpio4. На других моделях маршрутизаторов он может быть с другим номером.

Пробуем включить и выключить usb. При этом светодиод на флешке выключится и включится соответственно.

выключаем usb-порт на openwrt

echo 0 > /sys/devices/virtual/gpio/gpio4/value

включаем usb-порт на openwrt

echo 0 > /sys/devices/virtual/gpio/gpio4/value

2. Создаем скрипт для автозагрузки

nano /etc/init.d/usb_reload
#!/bin/sh /etc/rc.common

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
}

Делаем его исполняемым

chmod +x /etc/init.d/usb_reload

И добавляем в автозагрузку

/etc/init.d/usb_reload enable

После этого мой роутер не боится внезапных перезагрузок.

Log in to comment