Управление питанием USB на OrangePi
При использовании апельсинки в качестве роутера с модемом Huawei, модем периодически зависал, причем не помогала даже перезагрузка апельсины. Проблему решало только физическое передергивание питания модема, что не всегда возможно ввиду отсутствия кого-либо в месте установки этого устройства. Я хотел уже городить какие-то костыли на реле и прочее, но наткнулся на эту тему.
В общем апельсина умеет выключать и включать питание на otg разъеме. Нужно только его включить и воткнуть свисток через переходник типа этого
Запускаем armbian-config, там проходим в Sytem — Dtc
Видим редактор, там находим usb@1c19000, редактируем
status = "okay";
Находим usb0-vbus и редактируем
gpio = <0x00 0x02 0x00>;
Сохраняем, закрываем и компилируем.
Ребутимся.
При включение активируем управление otg
/usr/bin/echo "354" | /usr/bin/tee /sys/class/gpio/export
/usr/bin/echo "out" | /usr/bin/tee /sys/class/gpio/gpio354/direction
Чтобы включить питание usb
/usr/bin/echo "1" | /usr/bin/tee /sys/class/gpio/gpio354/value
Чтобы выключить питание usb
/usr/bin/echo "0" | /usr/bin/tee /sys/class/gpio/gpio354/value
Теперь можно написать небольшой скрипт, который при отсутствии интернета отключит питание на usb и через несколько секунд включит обратно...