Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
Поменять USB device class на лету.
- 06-02-2004
- Alex Samutin
June 2, 2004, 2:28 pm

Hi All,
Есть процессор с USB device на борту. Возникла задача на ходу поменять ему
Device class. Hу скажем был serial поверх USB, а надо теперь стать
mass-storage. Так вот, что-то я не нашел как заставить хост пере-enumerate
этот девайс(хм, а как это по русски сказать?) не отключая/подключая устройство
к USB шине? Манипуляция pull-up резисторами для имитации этого действия, к
сожалению, тоже невозможна.
/Sam samutin(ат)hotbox.ru
Есть процессор с USB device на борту. Возникла задача на ходу поменять ему
Device class. Hу скажем был serial поверх USB, а надо теперь стать
mass-storage. Так вот, что-то я не нашел как заставить хост пере-enumerate
этот девайс(хм, а как это по русски сказать?) не отключая/подключая устройство
к USB шине? Манипуляция pull-up резисторами для имитации этого действия, к
сожалению, тоже невозможна.
/Sam samutin(ат)hotbox.ru

Re: Поменять USB device class на лету.
Vot kak raz sdelal takoe.
U menia modem kotorii vedet sebia kak standartnii CDC modem. Nado sdelat'
eche odin rezhim raboti i CDC ne udobno.
Kak ia sdelal -- modem vkluchaetsia kak obichnii modem. Esli host znaet chto
eto za device, on posilaet spethial'nuiu kommandu kak k modemu (AT command).
Pri poluchenii etoi kommandi, modem otkluchaet USB i zapuskaet ego opita' no
uzhe s drugimi device id i t.d. Chto pri etom vidit host? On vidit chto odin
device otkluchilsia, a drugoi vkluchilsia.
Edinstvenno chto, v moment perekluchenia na hoste ne dolzhna rabotat' ni
odna proga kotoraia obchaetsia s devisom. V moem sluchae terminal. Windows,
naprimer voobche mozhet povisnut' ili reboot. Linux vozmuchetsia, no potom
rabotaet. Ia prosto sdelal delay v modeme na 5s chtob uspet' otkluchit
terminal.
V tvoem sluchae, prosto shutdown USB controller i re-initialise opiat. U
menia stoit Infineon C165UTAH s USB na bortu i vse rabotaet OK.
Rudolf
U menia modem kotorii vedet sebia kak standartnii CDC modem. Nado sdelat'
eche odin rezhim raboti i CDC ne udobno.
Kak ia sdelal -- modem vkluchaetsia kak obichnii modem. Esli host znaet chto
eto za device, on posilaet spethial'nuiu kommandu kak k modemu (AT command).
Pri poluchenii etoi kommandi, modem otkluchaet USB i zapuskaet ego opita' no
uzhe s drugimi device id i t.d. Chto pri etom vidit host? On vidit chto odin
device otkluchilsia, a drugoi vkluchilsia.
Edinstvenno chto, v moment perekluchenia na hoste ne dolzhna rabotat' ni
odna proga kotoraia obchaetsia s devisom. V moem sluchae terminal. Windows,
naprimer voobche mozhet povisnut' ili reboot. Linux vozmuchetsia, no potom
rabotaet. Ia prosto sdelal delay v modeme na 5s chtob uspet' otkluchit
terminal.
V tvoem sluchae, prosto shutdown USB controller i re-initialise opiat. U
menia stoit Infineon C165UTAH s USB na bortu i vse rabotaet OK.
Rudolf
--
We've slightly trimmed the long signature. Click to see the full one.

Re: Поменять USB device class на лету.
Thu Jun 03 2004 07:48, Rudolf Ladyzhenskii wrote to Alex Samutin:
RL> Pri poluchenii etoi kommandi, modem otkluchaet USB i zapuskaet ego opita'
RL> no uzhe s drugimi device id i t.d. Chto pri etom vidit host? On vidit
RL> chto odin device otkluchilsia, a drugoi vkluchilsia.
Hасколько я понимаю, чтобы заставить хост понять что Device отключился - надо
снять 3 вольта с D+/D- а потом включить опять. Сделать это можно вытащив
разъем или отключив pull-up резистор (если он управляемый). Hо в моем случае
он не управляемый.
Если просто не отвечать на запросы хоста, то после 3-х попыток хост считает
девайс неисправным и перестает к нему обращаться. А enumeration заново для
него не запускает. Модифицировать драйвер хоста я не могу (Windows).
Соответственно вопрос - можно ли как еще заставит хост заново считать
дескрипторы интерфейсов (или всего устройства целиком)?
/Sam samutin(ат)hotbox.ru
RL> Pri poluchenii etoi kommandi, modem otkluchaet USB i zapuskaet ego opita'
RL> no uzhe s drugimi device id i t.d. Chto pri etom vidit host? On vidit
RL> chto odin device otkluchilsia, a drugoi vkluchilsia.
Hасколько я понимаю, чтобы заставить хост понять что Device отключился - надо
снять 3 вольта с D+/D- а потом включить опять. Сделать это можно вытащив
разъем или отключив pull-up резистор (если он управляемый). Hо в моем случае
он не управляемый.
Если просто не отвечать на запросы хоста, то после 3-х попыток хост считает
девайс неисправным и перестает к нему обращаться. А enumeration заново для
него не запускает. Модифицировать драйвер хоста я не могу (Windows).
Соответственно вопрос - можно ли как еще заставит хост заново считать
дескрипторы интерфейсов (или всего устройства целиком)?
/Sam samutin(ат)hotbox.ru

Поменять USB device class на лету.
Привет Alex, а не поговорить ли нам про Re: Поменять USB device class на
лету..
03 Июн 04 08:26, Alex Samutin разговаривал с Rudolf Ladyzhenskii:
AS> Hасколько я понимаю, чтобы заставить хост понять что Device отключился
AS> - надо снять 3 вольта с D+/D- а потом включить опять. Сделать это
AS> можно вытащив разъем или отключив pull-up резистор (если он
AS> управляемый). Hо в моем случае он не управляемый. Если просто не
AS> отвечать на запросы хоста, то после 3-х попыток хост считает девайс
AS> неисправным и перестает к нему обращаться. А enumeration заново
AS> для
AS> него не запускает. Модифицировать драйвер хоста я не могу (Windows).
AS> Соответственно вопрос - можно ли как еще заставит хост заново считать
AS> дескрипторы интерфейсов (или всего устройства целиком)?
Попробуй resume signaling, может быть после этого хост заново начнёт обращатся
к устройству. Если это не поможет, то можно считать дескрипторы через драйвер
хоста. Обычно такая функция присутствует в api драйвера.
До скорой встречи, Nikolay AKA Lazy Dreamer.
лету..
03 Июн 04 08:26, Alex Samutin разговаривал с Rudolf Ladyzhenskii:
AS> Hасколько я понимаю, чтобы заставить хост понять что Device отключился
AS> - надо снять 3 вольта с D+/D- а потом включить опять. Сделать это
AS> можно вытащив разъем или отключив pull-up резистор (если он
AS> управляемый). Hо в моем случае он не управляемый. Если просто не
AS> отвечать на запросы хоста, то после 3-х попыток хост считает девайс
AS> неисправным и перестает к нему обращаться. А enumeration заново
AS> для
AS> него не запускает. Модифицировать драйвер хоста я не могу (Windows).
AS> Соответственно вопрос - можно ли как еще заставит хост заново считать
AS> дескрипторы интерфейсов (или всего устройства целиком)?
Попробуй resume signaling, может быть после этого хост заново начнёт обращатся
к устройству. Если это не поможет, то можно считать дескрипторы через драйвер
хоста. Обычно такая функция присутствует в api драйвера.
До скорой встречи, Nikolay AKA Lazy Dreamer.
Site Timeline
- » выход с откpытым коллектоpом
- — Next thread in » Microcontrollers (Russian)
-
- » eZ80Acclaim
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » (PDF) Atlas of Upper Gastrointestinal and Hepato Surgery 2nd Ed by CLAVIEN
- — The site's Newest Thread. Posted in » Electronics (Polish)
-
- » adaptateur flash photo ?
- — The site's Last Updated Thread. Posted in » Electronics (French)
-