[linux] программно сбросить зависший USB 3G модем

psm-home

Дано: USB 3G модем подключенный к машинке со свежим Ubuntu. Хочется программно привести его в чувство в случае зависания, лучше всего через выкл/вкл питания на USB порту.
Как это сделать?

yolki

зависит от многих факторов - модель чипсета ноутбука в первую очередь.
и то, сомнительно, что это можно сделать.
USB-модем обычно виден в системе как 2-3 USB-serial порта (что-то типа /dev/ttyUSB0 ... /dev/ttyUSB2)
один из портов - модемный собственно для ppp
второй порт - управляющий, например опросить уровень сигнала, вариант сети (3G/HDSPA), поморгать лампочками, запросить баланс, почитать смс-ки.
третий порт - сервисный, типа для обновления прошивки.
ещё он из себя может изображать CD-ROM и кард-ридер.
возможно, сам модем можно сбросить через управляющий или сервисный порт, но тут надо искать документацию на конкретные модемы.
команды для хуавея будут отличаться от команд для ZTE

psm-home

В идеале хотелось бы выключить питание на USB порту и потом снова включить, поскольку это видится самым надежным способом сброса. Состояние модема мне беречь не нужно, я всего лишь СМСки шлю.

carusya

Вопрос теоретический, или он действительно зависает (и есть шанс попробовать предложенное решение)?
usb_modeswitch -R что делает?

yolki

так это ты смс-ками спамишь?!

psm-home

Вопрос пока теоретический, но зная железки я верю, что он обязательно зависнет в проде однажды. Ресет на уровне команд самого модема кажется мне недостаточно непробиваемым. Впрочем самое надежное наверное было бы watchdog на микроконтроллере.
А к нему еще один. :grin:

psm-home

usb_modeswitch -R что делает?
Троицу ioctl-ов делает:
IOCTL_USBFS_RELEASEINTF
IOCTL_USBFS_RESET
IOCTL_USBFS_DISCONNECT_CLAIM
Не похоже на передергивание питания.

tokuchu

Как вариант - воткнуть модем во что-нибудь другое, которое можно передёргивать по питанию и "пробросить" его на сервер. :)

elenangel

можешь попробовать вот эту програмку
у меня хаб встроенный в ноут успешно включает-выключает.

psm-home

Спасибо, попробую.

ingener

Если не удается сбрасывать питание re-plugом устройства, попробуй делать re-plug всего usb контроллера (через /sys/), мне помогало.

pupsik77

пользовался вот этим:
http://www.clearchain.com/blog/posts/resetting-the-usb-bus-u...
и вот таким для конкретного порта:
echo -n "0000:00:12.0" | tee /sys/bus/pci/drivers/ohci_hcd/unbind
sleep 5
echo -n "0000:00:12.0" | tee /sys/bus/pci/drivers/ohci_hcd/bind
вероятность работы около 80%.
модемы были Йота.
но все равно иногда они входили в состояние, когда ничего не помогало - приходилось ехать и передергивать вручную.
Оставить комментарий
Имя или ник:
Комментарий: