1

Тема: Рестарт драйвера usb-serial: возможно ли?

У меня в эксплуатации два USB 3G модема AnyData: ADU-310 и ADU-310A. CDMA-450, Скайлинк. Один дома, один у клиента.
С некоторых пор оба начали страдать одной и той же болезнью. Через неопределенное время (от нескольких часов до нескольких суток) наглухо пропадает связь по USB. Подозреваю косяк опсоса, ибо до этого за полгода круглосуточной работы ничего подобного не наблюдалось. На обоих. Началось все после перехода опсоса на новый биллинг.
При этом мопед зарегистрирован в сети оператора, на него можно позвонить и послать смс-ку.

Проблема тогда (1,5 года назад) была решена посредством Linux-based сборки IPCop (на старых компах). Тогда и выяснилось, что заболевание вылечивается рестартом драйвера. Был написан простенький скрипт, который раз в 5 минут пигнует три сервера и, при полной неудаче, рестартует драйвер командой modprobe usbserial. После чего демон pppd самостоятельно поднимает соединение.

Вопрос: можно ли рестартовать скриптом виндузный драйвер? Не факт, что это поможет, но вдруг...

2

Re: Рестарт драйвера usb-serial: возможно ли?

А удалить оборудование через диспетчер устройств и установить заново помогает?

3

Re: Рестарт драйвера usb-serial: возможно ли?

Не пробовал. В голову не приходило - проще дернуть шнурок, раз уж ты возле компа.

4

Re: Рестарт драйвера usb-serial: возможно ли?

Добрый день.

Подозреваю что инструмент имеется
Devcon

Правда чтобы "перезапустить" ваймакс модем(Самсунг, типа флешки) пришлось перезапустить PCMCIA USB хаб в который он был воткнут(отдельно его ID не нашел - были только Miniport-ы и инсталл-диск встроенный в модем):

devcon disable PCI\VEN_1180&DEV_0476&SUBSYS_20C417AA&REV_B6\4&3B3A03B5&0&00F0

Хаб "погас"(Устройство отключено. (Код 22)), модем из устройств исчез, секунд через 5-10 погасла лампа на модеме).

devcon enable PCI\VEN_1180&DEV_0476&SUBSYS_20C417AA&REV_B6\4&3B3A03B5&0&00F0

Хаб "воскрес", мышка с модемом вернулись к жизни следом

ID можно посмотреть самим devcon(devcon find *), или в деспечере устройств(сведения, экземпляр устройства)

Если отключение всего USB хоста не критично, то должно помочь.

5 (изменено: 027, 2011-04-12 10:41:47)

Re: Рестарт драйвера usb-serial: возможно ли?

BeS Yara, большое спасибо! Попробую и отпишусь.

6

Re: Рестарт драйвера usb-serial: возможно ли?

Докладываю.

Первым делом испытал неимоверное удовольствие от документации:

These commands work if you are using the 32-bit version of DevCon on WOW64.
Device
Console
Help
:
devcon
.
exe
[
-
и так далее

(кто бы объяснил, что делает команда, скажем, "точка"?..)

Хорошо, хоть в примерах есть что-то осмысленное. Ищем свои USB устройства:
D:\1>devcon find usb*
В ответ получаем жутко отформатированные строки, которые не вставляю в пост из гуманных соображений.
Делаю
D:\1>devcon find usb* > usbinfo (результат здесь)
Тщательное медитирование подсказывает нам, что искомый дивайс, вроде бы, вот он:
USB\VID_16D5&PID_6501&MI_01\6&11917D54&0&0001
Ну-ка...

D:\1>devcon status USB\VID_16D5&PID_6501&MI_01\6&11917D54&0&0001
No matching devices found.
"PID_6501" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Системе не удается найти указанный путь.
"11917D54" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"0" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"0001" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Ах, да, парсер амперсанды увидел. Попробуем кавычки:

D:\1>devcon status "USB\VID_16D5&PID_6501&MI_01\6&11917D54&0&0001"
No matching devices found.

Попробуем заэкранировать амперсанды:
D:\1>devcon status USB\VID_16D5\&PID_6501\&MI_01\6\&11917D54\&0\&0001
В гробу он видал экранирование.
Ладно, достаем бубен:
D:\1>devcon status USB\VID_16D5\\&PID_6501\\&MI_01\6\\&11917D54\\&0\\&0001
D:\1>devcon status USB\VID_16D5\\\&PID_6501\\\&MI_01\6\\\&11917D54\\\&0\\\&0001
D:\1>devcon status USB\VID_16D5\\\\&PID_6501\\\\&MI_01\6\\\\&11917D54\\\\&0\\\\&0001
На шести слешах заканчиваем упражнение. Родовая травма MSDOS, по всей видимости.

Встряхиваем бубен:

D:\1>devcon status "USB\VID_16D5&PID_6501&MI_01\6&11917D54&0&0001"
No matching devices found.

D:\1>devcon status "USB\VID_16D5&PID_6501&MI_01\6&11917D54&0"
No matching devices found.

D:\1>devcon status "USB\VID_16D5&PID_6501&MI_01\6"
No matching devices found.

D:\1>devcon status "USB\VID_16D5&PID_6501&MI_0"
No matching devices found.

D:\1>devcon status "USB\VID_16D5&PID_6501"
USB\VID_16D5&PID_6501\5&E831D1A&0&1
    Name:     Driver is running.
1 matching device(s) found.

Вах! А если рестарт?

D:\1>devcon restart "USB\VID_16D5&PID_6501"
USB\VID_16D5&PID_6501\5&E831D1A&0&1                         : Restarted
1 device(s) restarted.

PPP-соединение тут же отвалилось, рестартовало автоматически и успешно восстановилось.
Ай да винда! Вон чего умеет!
Осталось теперь дождаться пропадания связи с модемом и проверить, поможет ли kick ass в реальной клинической практике.
А пока посмотрим в эту странную имитацию логов, "просмотр событий":

Подключение пользователя "mobile" к "Скайлингус", выполненное с помощью устройства "COM9",  было прервано.
Успешно выполнено подключение пользователя "mobile"к "Скайлингус", с помощью устройства "COM9".

Погодите, какой COM9? Был же COM4?

D:\1>devcon find usb*
...
USB\VID_16D5&PID_6501&MI_01\6&11917D54&0&0001               : AnyDATA CDMA USB Serial Device (PID 6501) (COM4)
...

Чудны дела твои, Билли...

7 (изменено: BeS Yara, 2011-04-13 15:17:06)

Re: Рестарт драйвера usb-serial: возможно ли?

027 пишет:

Погодите, какой COM9? Был же COM4?

Тут возможно всё очень индивидуально, зависит от драйверов и/или самого устройства
Йота-модем видится как сеттевая карта, поэтому экспериментировать могу только с пчелайновским ZTE(вещь китайская, и уже сама по себе весьма капризная) Ко всем прочим её прелестям она ещё и "составное устройство". 5 в одном - виртуальный CD, кардридер, два устройства типа портов(на COM10 и COM11) и непосредственно сам "ZTE Proprietary USB Modem"(COM12). При рестартах, отключениях-включениях  самого модема он нормально становится на COM12. Перетыкал из USB-порта на плате в порт на PCMCIA  USB-контроллере - порта комовские не поменялись(хотя есть один GPRS модем, так у того в разных USB-портах разные COM назначаются).
Кстати, если рестартить(или выключить/включить) все устройства модема, то они так и не стартуют("!" в диспечере задач). Пробовал и в прямом порядке, и в обратном - не взошло. Напоминает квест в Князь-2, где нужно прочитать 5 или 6 заклинаний в нужном порядке . Т.к. ZTE для резерва, то этот квест разгадывать пока не планирую.
_________________________________
Нашел в закладках
Commands for DevCon Operations - тут поподробнее описаны команды.

8

Re: Рестарт драйвера usb-serial: возможно ли?

А-а! "Команды" типа . * ? [ это же синтаксис регекспов! :facepalm:

9

Re: Рестарт драйвера usb-serial: возможно ли?

BeS Yara, спасибо! Добавил ссылку в Коллекцию.

10

Re: Рестарт драйвера usb-serial: возможно ли?

Йес! Это работает!
Пинок драйверу восстанавливает связь с модемом.