LINUX.ORG.RU

Перезапустить зависшее USB устройство

 , ,


1

2

Есть один USB модем. Временами он уходит в себя и перестаёт реагировать на конструктивную критику, при этом продолжая моргать лампочками и вообще не проявляя каких-либо признаков беспокойства. Из этого состояния его выводит либо перетык в USB, либо перезагрузка всея компьютера, usb_reset не срабатывает.

Управления питанием у хоста (злосчастная распберри3) нема. Как бы так извернуться и дать модему пня, чтобы он перезапустился, без полной перезагрузки? Ведь как-то же он понимает, что хост ребутнулся.


Ведь как-то же он понимает, что хост ребутнулся.

Скорее всего в момент ребута хост отключает питание на USB. Ну то есть может не быть управления питанием на уровне порта, но может быть управление питанием на уровне всего контроллера USB. Но это общая информация, как именно это сделано на малине не знаю.

Самое надёжное - купить хаб с управлением питанием. Ещё можно купить релюшку в разрыв 5В линии USB провода малины и дёргать её через GPIO малины (разумеется, реле или иной ключ должен быть совместим по току и напряжению с малиной).

KivApple ★★★★★
()

Хорошее описание проблемы. Если твой модем подключается как usb устройство к какому-то PC. То очевидно, что есть механизмы управления питанием usb портов из системы. А еще, есть что-то, что обнаруживает твое устройство и подключает его к PC. Никакой магии. У тебя 0 идей как эти «чудеса» происходят ?

kambulya999
()

У меня для ресета модема была такая последовательность

if ! gammu identify | grep -q E173 ; then
   usb_modeswitch -R -v 0x12d1 -p 0x1001
   echo "12d1 1001" > /sys/bus/usb-serial/drivers/option1/new_id
   sleep 5
   if ! gammu identify | grep -q E173 ; then
      logger -p daemon.err "Modem FAILED"
   fi
fi
vel ★★★★★
()
Ответ на: комментарий от kambulya999

Если твой модем подключается как usb устройство к какому-то PC. То очевидно, что есть механизмы управления питанием usb портов из системы.

Не ври. Их нет. Питание встроенных портов почти всегда тупо припаяно к системной +5V шине.

firkax ★★★★★
()
Ответ на: комментарий от kambulya999

1) гугл это плохой сайт, не надо туда ходить

2) по твоей ссылке наверно тоже враньё, но в любом случае ходить я по ней не собираюсь (тем более что ты её не написал), лучше тут процитируй суть

firkax ★★★★★
()
Ответ на: комментарий от kambulya999

Ты сам то пробовал это? Возьми мультиметр, подключи к usb питанию, повводи эти команды и увидишь что ничего не меняется. По крайней мере с теми портами что на материнке. Если у тебя на какой-нить флешке от этих команд гаснут индикаторы - так это не из-за питания, а из-за того что комп ей такую команду послал.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Отключить питания USB это значит обесточить usb порт и не подавать на него напряжение ? Честно, я не знаю в реальности есть ли там напряжение. Но в кейсе ТС-а это не имеет НИКАКОГО значения.

kambulya999
()
Ответ на: комментарий от kambulya999

Да, «отключить питание» и «обесточить» это одно и то же. И автору нужно именно это, програмно модем завис и ни на какие сигнальные послания от компа не реагирует.

firkax ★★★★★
()

Ведь как-то же он понимает, что хост ребутнулся.

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

В твоем случае возможно придётся разжиться хитрым хабом или концентратором, который умеет управлять питанием портов. Ну и малине легче будет, если у него вообще своё питание будет.

И на правах бреда проверь температуру модема в момент отавала. Может тебе не питание дёргать надо, а радиатор на него повесить. Ещё можно помониторить напряжение во время работы каким-нибудь умным тестером зарядок. Есть вариант, что модем зависает из-за просадок напряжения и/или перегрузок по току.

Radjah ★★★★★
()
Последнее исправление: Radjah (всего исправлений: 1)
Ответ на: комментарий от Radjah

с температурой ок.

У модема совершенно рандомно мозги текут. Иногда перестаёт ловить сеть, и можно ребутнуть через панель управления, иногда забывает, как работать с DHCP, и после истечекия аренды всё ещё можно установить старый IP вручную и открыть панель, иногда просто перестаёт откликаться, и только лампочками моргает. Какой-то прикладной способ вряд ли годится, потому что функционал деградирует рандомно.

Что характерно, DHCP лечится через usb_reset, а потеря сети и полное зависание - нет.

bo4ok
() автор топика
Последнее исправление: bo4ok (всего исправлений: 1)
Ответ на: комментарий от bo4ok

У модема совершенно рандомно мозги текут.

Угадайте почему ? А чего ты хочешь то ? Ну типа ОСь модема может выдавать какие-то логи ? Или ты хочешь чтобы тебе в чате провели диагностику модема ?

kambulya999
()
Последнее исправление: kambulya999 (всего исправлений: 1)

Давай сначала

  • производитель, модель, режим работы
  • dmesg / journalctl в «районе зависания»
  • как управляется сеть

Управления питанием у хоста (злосчастная распберри3) нема

то, что управления питанием «нет» не значит, что «кто-то» не будет пытаться поиграться в энергосбережение для устройств USB.

master_0K
()
Ответ на: комментарий от futurama

Никак. Иногда могут поставить так называемые «самовосстанавливающиеся» предохранители. Но, это речь про десктопные материнки. Более того, даже если по питанию стоит ключ, позволяющий отключить питание usb-порта, ограничения по току может и не быть.

А по теме, у Raspberry PI 3B+, вроде как, есть управление питанием USB, правда разом отключается питание всех портов. Но это объясняет, почему у ТС при перезагрузки модем оживает.

mky ★★★★★
()

В своё время, тоже была такая проблема, программно, не чего сделать толково не получилось.

USB хабы с физическом отключением пинания стоят не адекватно дорого.

Выход нашёл с помощью ардуино:

Bash скрипт проверял подключения к интернет, если его не было, отправлял команду на ардуинку, та через транзистор отключала питания модема.

На всё это ушёл, один вечер и 300 рублей.

Rossiks
()
Последнее исправление: Rossiks (всего исправлений: 2)
Ответ на: комментарий от bo4ok

Может его в режиме портов использовать, там будет ат порт и ncm сетевой интерфейс. Это режим usb modeswitch -X. Или же иными словами Huawei alt mode. Вроде modemmanager такое поймет. Тогда не задействуется веб морда модема вообще и его роутерная часть, проблем меньше. Ребутать можно ат командой.

Bers666 ★★★★★
()
Ответ на: комментарий от bo4ok

E3372h-320

Наконец то, не прошло и полгода.

Как подключен, напрямую или через кабель? Какой длины?

Прошивка какая? Под него 100500 версий патченных прошивок на основе стоковых.

Dimez ★★★★★
()