Jump to content

    

Адаптер USB to Ethernet

Да это странности USBLyzer-а.

Ендпоинты конфигурируются... ПРосто с нестартующим устройством до них (кроме нулевого) не доходит дело.

 

...

 

Забил все строковые дескрипторы для ясности нулями.

ПОведение не поменялось - нестартующий единственный CDC EEM и нормально работающие остальные варианты.

Даже такой как непоставившийся драйвер CDC-ECM и работающий при этом CDC-EEM. Непоказывающийся MAC в ECM это тоже глюк USBLYZER

 

EEM.pdf

2xCDC_ACM_1xCDC_EEM.pdf

eem_ecm.pdf

Share this post


Link to post
Share on other sites

Может VID или PID поменять? Например те VID и PID которые есть, вызывают драйвер, которому единственное устройство EEM не нравится... Попробуйте заменить их, чтоб винда заново драйвер для устройства поставила.

Или, если не менять VID/PID - удалить драйвер комбинированного устройства, и попробовать поставить с теми-же VID/PID устройство единственное. Может винда чего напишет новое.

 

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

Share this post


Link to post
Share on other sites

Менять vid/pid пробовал... Но это и не нужно - драйвер нашелся, в диагностике написано что запустить не может.

Share this post


Link to post
Share on other sites

Попробуйте в "Device Descriptor" для единственного устройства, в полях Class, Subclass, Protocol, поставить значения:

02, 06, 00

02, 06, 01

02, 00, 00

02, 00, 01

Вдруг какое-то заработает.

 

02, 06, 00 предлагают для ECM на MSDN https://msdn.microsoft.com/en-us/library/wi...7(v=vs.85).aspx

 

02, 00, 00 на каких-то сайтах про ECM https://sourceforge.net/p/contiki/mailman/message/25268923/

https://www.xmos.com/download/private/AN001...2.0.2rc1%29.pdf

Но если EEM работает на дескрипторах ECM, то можно значит пробовать и с другими настройками ECM что-то подбирать для EEM.

 

xx, xx, 01 это мой вариант для сохранения "Interface Association Descriptor", который вроде бы и не влияет, но вдруг.

Share this post


Link to post
Share on other sites

EEM работает на дескрипторах EEM. Не ECM. Если я получу устройство ECM (которое хоть и без драйвера, но опознается корректно - в device manager соответствующее composite device появляется, в отличии от EEM одиночного) - что толку? Тем более, что дескриптор EEM сильно от ECM отличается - в ECM два интерфейса, например вместо одного у EEM. В той строке на которую я сослался в своих исходниках, видно все функции, которые могут поддерживаться в enumerate.

Edited by Genadi Zawidowski

Share this post


Link to post
Share on other sites
EEM работает на дескрипторах EEM. Не ECM.

Согласен. Но поскольку вы используете Class, SubClass от ECM для EEM (0xef, 02) - значит можно для EEM попробовать и другие допустимые для ECM значения Class, SubClass. По моему логично.

дескриптор EEM сильно от ECM отличается - в ECM два интерфейса, например вместо одного у EEM.

Согласен полностью. Но т.к. работающие комбинированные интерфейсы начинаются с Class 0xef (miscellaneous), и в принципе так и должно быть, раз "замешано" несколько устройств, то может быть для единственного EEM нужен простой Class?

 

Пока ищутся оригинальные дескрипторы EEM, можно попробовать подобрать свои варианты :laughing: (если они хоть как-то логически обоснованы)

Share this post


Link to post
Share on other sites

0xef, 02, 0x01 - это означает, что информация о классах берется не из device descriptor, а устройство составное, в нем много разных функций может быть... Эти значения и для аудио и для компортов...

 

может быть для единственного EEM нужен простой Class

А почему он не нужен для единственного компорта (было), аудиоустройства, ECM наконец?

 

В аттачменте документ с картинками про составные устройства.

iadclasscode_r10.pdf

Share this post


Link to post
Share on other sites
А почему он не нужен для единственного компорта (было), аудиоустройства, ECM наконец?

На сайте MSDN если (я правильно понял), как раз для ECM и предлагается 02, 06, 00. Если конечно ECM и ENCM это одно и то же.

 

Вот ещё вариант. В этот раз точно для EEM http://www.usb.org/developers/docs/devclas...s/CDC_EEM10.pdf

стр.13-14, Class, SubClass, Protocol: 02, 0x0C, 07

Share this post


Link to post
Share on other sites

Класс/подкласс и протокол в случае составного устройства берутся оттуда, где им и положено быть - или из interface association descriptor каждой функции или из interface descriptor функции с одним интерфейсом (вольный пересказ документа).

Жаль, что DiMonster последний раз был тут

Последнее посещение: 11th November 2016 - 22:37

 

Вот ещё вариант. В этот раз точно для EEM http://www.usb.org/developers/docs/devclas...s/CDC_EEM10.pdf

стр.13-14, Class, SubClass, Protocol: 02, 0x0C, 07

А я какой еще мог использовать, как не этот?

post-28634-1484077084_thumb.png

Edited by Genadi Zawidowski

Share this post


Link to post
Share on other sites
Класс/подкласс и протокол в случае составного устройства берутся оттуда, где им и положено быть - или из interface association descriptor каждой функции или из interface descriptor функции с одним интерфейсом (вольный пересказ документа).

Да. Но вы же делаете из составного устройства простое, в случае с единственным EEM. Наверное для него нужен и дескриптор простого устройства (хотя бы Device Descriptor). Почему бы нет?

Для простых устройств можно указывать Class, Subclass, Protocol прямо в "Device Descriptor".

Share this post


Link to post
Share on other sites
Но вы же делаете из составного устройства простое, в случае с единственным EEM

Нет, это составное устройство с одной функцией. Работает со всеми типами, что я проверял, кроме EEM.

У составного и "простого" разные форматы device descriptor для начала.

Share this post


Link to post
Share on other sites

Я не видел дескриптора EEM "в глаза", и могу только гадать что там должно быть. В даташите от USB.org написано, что эти значения можно применять не только для "Interface Descriptor", но и для "Device Descriptor".

Если 02, 0С, 07 можно поставить прямо в "Device Descriptor", значит возможна и такая конфигурация.

Потому и предложил это рассмотреть.

 

Но если дело точно не в дескрипторах, тогда я пока ничего больше предложить не могу.

post-45309-1484079847_thumb.png

Share this post


Link to post
Share on other sites

Вот такие тоже не работают...

Если 02, 0С, 07 можно поставить прямо в "Device Descriptor", значит возможна и такая конфигурация

zzz1.pdf именно такой случай.

zzz.pdf

zzz1.pdf

Edited by Genadi Zawidowski

Share this post


Link to post
Share on other sites

Применил тяжелую артиллерию...

На другом процессоре (Renesas RZA1L) на USB HS интерфейсе одиночный CDC EEM нормально опознался!

Однако, соответствующее USB composite device в дереве device manager-а не появилось...

При этом, на USB FS так же с ошибкой о неудачном запуске.

Если добавлялись иные функции, так же нормально работает и на FS и на HS.

 

ps: в endpoint дескрипторах с типом bulk поле bInterval не игнорируется, а имеет вполне конкретное назначение.

USB_CDC_EEM_HS_working.pdf

Edited by Genadi Zawidowski

Share this post


Link to post
Share on other sites

Под линуксом что UAC+ECM, что EEM отдельно опознается нормально. Десятки нет и не будет. Под семеркой - код 28, "нет драйвера".

Пробовал покупную сетевуху на ASIX..178 - она вообще vendor defined class. Драйвер подгрузился автоматом из интернета. Может быть, рабочий дескриптор EEM на симках/смарткартах можно увидеть?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now