Open Kabron287 opened 3 years ago
But the device still recognised as unknown with bad descriptor.
Hello, Vladimir.
timestamp.verisign.com is not reachable now
Thanks for the information, I am supposed to update the repo anyway, have no time to spare though.
But the device still recognised as unknown with bad descriptor.
Not sure if I can help you right now. I haven't updated Windows in years, and am still using version 1903 :/
certmgr.msc
). See #1 for more information.Привет Артем. Спасибо за ответ.
Обычный синий Digispark
Я не пользовался устройствами Digispark, а только своими поделками на ATtiny2313/4313 с самописным фирмварем на основе VUSB и драйвером AVR-CDC для Windows. В какой-то момент ко мне обратились с вопросом поддержки Digispark #2. И такая "поддержка" была с легкостью добавлена, потому что это устройство работает на основе тех же разработок. Собственно, коммит 8f951542ba4c0e1ece14b4557899728955036586. К сожалению, комьюнити Digispark не отличается настойчивостью в решении подобных проблем, и успешная работа было подтверждена только много месяцев спустя.
USB\VID_16D0&PID_0753&REV_0202
Драйвер поддерживает следующие устройства: AVR-CDC (
USB\VID_16C0&PID_05E1
), Digispark (USB\VID_16D0&PID_087E
).
Я удивлен, что вы самостоятельно собрали пакет драйвера, решив возникшие проблемы, но не заметили, что этот USB PID не поддерживается.
Теперь я бы хотел получить от вас как можно больше информации об этом устройстве: ссылку на ЧипДип; ссылку на даташит/описание; репорт UsbTreeViewer/USBDeview/Thesycon USB Descriptor Dumper; ссылку на родной драйвер. Возможно, получится использовать этот драйвер после внесения небольших изменений.
явно драйвер с диска
Я правильно понял, что это при обновлении/установке драйвера через Диспетчер устройств?
винда продолжает хужать
Проблема не в Windows 10, а в драйвере AVR-CDC, который с помощью хуков изменяет правильное поведение usbser.sys на неправильное, но позволяющее работать со слабыми МК. Информацию о драйвере можно найти тут и в архиве с драйвером, который размещен здесь. Соответственно, с новым драйвером usbser.sys это извращение не работает.
Девайс: https://aliexpress.ru/item/4000375205945.html? https://www.chipdip.ru/product0/8000901979 Родные драйверы: https://github.com/digistump/DigistumpArduino/tree/master/tools Wiki: http://digistump.com/wiki/digispark Отчет: USBView_DigiCDC.txt
Родные драйвера работают с DigiSerial VID_16D0&PID_087E Digispark Bootloader VID_16D0&PID_0753 DigiUSB VID_16C0&PID_05DF
Итак, после загрузки любого скетча для USBCDC девайс превращается в Неизвестное USB-устройство (недопустимый дескриптор конфигурации) Установка любого драйвера(родного или вашего) путем обновления из девайс менеджера сопровождается сообщением:
Все .inf устанавливаются успешно.
Тестовый режим включен перманентно.
Windows 10 x64 LTSC. 17763.rs5_release
где то скачал ваш готовый драйвер LowCDC-Win10x64-1.0.1.6.zip - без такого же успеха.
Ага, это все-таки клон Digispark. Другой любопытный факт, на который я не обращал раньше внимания, это отсутствие кварца. Все мои устройства разработаны с использованием кварца 12МГц.
Прошу вас, скачайте и используйте в дальнейшем UsbTreeView, его репорты гораздо подробнее.
Итак, после загрузки любого скетча для USBCDC девайс превращается в Неизвестное USB-устройство (недопустимый дескриптор конфигурации)
Сформируйте репорт в UsbTreeView и укажите ссылку на загруженный скетч.
Залейте другой скетч, с которым устройство определяется (дескриптор корректно считывается), также сформируйте репорт и укажите ссылку на скетч.
OK UsbTreeView_DigisparkUSB.txt UsbTreeView_USBCDC.txt Прикольно, ВИД-ПИД таки есть
DigisparkCDC.zip не работает DigisparkUSB.zip работает любой пример годится.
Все из установочного пакета для ардуины.
Прикольно, ВИД-ПИД таки есть
Да, непосредственно МК работает и начинает обмен с USB-хостом.
Попробуйте прочитать дескрипторы устройства с помощью Thesycon USB Descriptor Dumper.
Устройство подключено к USB-порту, размещенному непосредственно на материнской плате (или подключено с помощью пассивного удлинителя)? Порт USB3.x или 2.0?
Залейте один из скетчей DigisparkCDC и попробуйте подключать ко всем доступным портам (в т. ч. через хабы, PCI-карты, если есть), контролируя состояние "Неизвестное USB-устройство (недопустимый дескриптор конфигурации)". Репорты не нужны, просто следите за состоянием.
Уже пробовал на всех портах и компьютерах. Dumper его находит, но сделать ничего не может. Софтовое отключение-включение не помогает.
А нет пардон увидел:
Information for device USB\Vendor_16D0_Product_087E:
Connection Information:
------------------------------
Device current bus speed: LowSpeed
Device supports USB 1.1 specification
Device supports USB 2.0 specification
Device address: 0x000A
Current configuration value: 0x00
Number of open pipes: 0
Device Descriptor:
------------------------------
0x12 bLength
0x01 bDescriptorType
0x0110 bcdUSB
0x02 bDeviceClass (Communication Device Class)
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x08 bMaxPacketSize0 (8 bytes)
0x16D0 idVendor
0x087E idProduct
0x0100 bcdDevice
0x01 iManufacturer
0x02 iProduct
0x00 iSerialNumber
0x01 bNumConfigurations
Configuration descriptor and all subsequent descriptors are not available. Error code: 0x00000002
Microsoft OS Descriptor is not available. Error code: 0x00000002
String Descriptor Table
--------------------------------
Index LANGID String
------------------------------
Connection path for device:
xHCI-совместимый хост-контроллер USB
Root Hub
USB\Vendor_16D0_Product_087E Port: 6
Running on: Windows 10 or greater (Build Version 17763)
Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07
Уже пробовал на всех портах и компьютерах.
И везде "Неизвестное USB-устройство (недопустимый дескриптор конфигурации)"?
Если не затруднит, напишите модели материнских плат и/или южных мостов.
DescriptorDump_VID16D0_PID087E.txt
Ничего нового. Ну что же, последняя надежда на USBPcap. Может быть получится посмотреть, что же не так с этим дескриптором конфигурации.
%ProgramFiles%\USBPcap\USBPcapCMD.exe
, найти корневой хаб, к которому подключено устройство, и запомнить его номер.Ctrl+C
).На сайте USBPcap тоже самое, но на английском и с картинками.
Дамп сюда, его можно посмотреть в Wireshark.
log1.zip PC1. Ryzen 7 MSI X570-a pro PC2. Note Acer Aspire A515-5S ХЗ какие такие там мосты. ИМХО дрова все таки не ставятся должным образом.
На раритетной IBM T30 с хрюшей девайс правильно определяется (Digispark Serial) с вид-пид, но родные дрова не ставятся с ошибкой конфигурации inf файла. Думаю, без экстра затрат вопрос не решаем.
дрова все таки не ставятся должным образом
Пока Windows не опознает устройство, контроль над устройством не будет передан драйверу высокого уровня. Вы сами видели, что в том же Диспетчере устройств отображается USB\VID_0000&PID_0006\...
с соответствующей ошибкой.
Попробуйте повторно снять дамп с помощью USBPcap, но подключать Digispark к корневому хабу, к которому не подключены другие устройства. К использованному подключены 2 других устройства, в том числе приёмник Unifying.
Приведите последние записи из %SystemRoot%\inf\SetupAPI.dev.log
с начала экспериментов с Digispark и драйверами. Можете просто выложить весь лог, если считаете, что там нет никакой "чувствительной" информации.
ОК попробую позже как доберусь до тушки.
На раритетной IBM T30 с хрюшей девайс правильно определяется
Если у вас есть доступ к этой железке или другой системе, где Digispark определяется, прочитайте дескрипторы устройства с помощью Thesycon USB Descriptor Dumper (если получится, я проверил работу обеих программ в виртуальной машине с WinXP, и утилита от Thesycon не запускается) или UsbTreeView. Первая программа обладает полезной в этом случае функциональностью — указывает на ошибки в дескрипторах.
без экстра затрат вопрос не решаем
Maybe the real Digispark was the friends we made along the way ¯\_(ツ)_/¯
И еще, можете полностью скопировать сюда состояние устройства "Неизвестное USB-устройство (недопустимый дескриптор конфигурации)" в Диспетчере устройств? Для оформления этой issue.
Как то умудрился убить чип. Теперь когда посылка с новыми дойдет.
Что за досадный поворот событий! И все же, прошу вас:
Приведите записи из %SystemRoot%\inf\SetupAPI.dev.log
, как я описал в сообщении выше.
Приложите полный репорт UsbTreeView (File → Save Text Report), желательно отключить все неиспользуемые USB-устройства. Мне нужна подробная информация по USB хост-контроллерам и корневым хабам.
Между тем я нашел PCIe-карту с USB3.0, воспроизвел и изучаю проблему. Да, на моей материнской плате 0 (ноль) USB3.0 портов.
Просю:.. Кстати, попробовал шить в погорельца их родной t85_default.hex - также плохой дескриптор, хотя чип вполне себе живой. Digispark.zip
Пришлось потратить больше времени, чем хотелось бы, на адаптацию пакетного файла к последнему новшеству от MS — включению номера версии в путь к исполняемым файлам SDK/WDK.
Заменил timestamp-сервис на DigiCert, который используется в примерах на портале Windows Hardware Developer, bbc0272d91bd83d6c4bfcd8b75ccb56e95a0ff98. Рекомендую вам в будущем создавать для каждой проблемы отдельную issue.
Я тут обратил внимание, что UsbTreeView предоставляет возможность открыть отчет, что было бы очень удобно для оценки топологии USB. Вас не затруднит еще раз сформировать и приложить полный отчет в формате XML (File → Save XML Report)? Желательно отключить все неиспользуемые USB-устройства.
Внимательно изучив записи в приложенном setupapi.dev.log, могу сделать следующие выводы:
Вы успешно установили пакет драйвера LowCDC-Win10x64 в Driver Store на момент написания https://github.com/protaskin/LowCDC-Win10x64/issues/5#issuecomment-773120721.
Plug and Play не работает, пока Windows не опознает устройство.
Поиск драйвера "не работает", пока Windows не опознает устройство и не присвоит ему идентификатор (ИД) оборудования или совместимые ИД:
ndv: Recursively searching directory 'D:\Down\Arduino\Digispark\LowCDC-Win10x64-master' dvi: {Build Driver List} 11:13:12.525 dvi: Searching for hardware ID(s): dvi: usb\configuration_descriptor_validation_failure dvi: Searching for compatible ID(s): dvi: usb\configuration_descriptor_validation_failure dvi: {Build Driver List - exit(0x00000000)} 11:13:12.530
Например, ваша попытка подсунуть пакет драйвера с VID_0000&PID_0006, созданный с помощью Zadig, не увенчалась успехом:
ndv: Searching single INF 'C:\Users\vlady\usb_driver\Неизвестное_USB-устройство_(недопустимый_дескриптор_конфигурации).inf' dvi: {Build Driver List} 09:29:05.806 dvi: Searching for hardware ID(s): dvi: usb\configuration_descriptor_validation_failure dvi: Searching for compatible ID(s): dvi: usb\configuration_descriptor_validation_failure dvi: {Build Driver List - exit(0x00000000)} 09:29:05.813 ! ndv: No matching drivers found in single INF
Поиск драйвера для опознанного устройства:
ndv: Searching directory 'C:\Users\User\LowCDC-Win10x64_v1.0.1.6-20210213' dvi: {Build Driver List} 03:44:04.078 dvi: Searching for hardware ID(s): dvi: usb\vid_16c0&pid_05e1&rev_0100 dvi: usb\vid_16c0&pid_05e1 dvi: Searching for compatible ID(s): dvi: usb\class_02&subclass_02&prot_01 dvi: usb\class_02&subclass_02 dvi: usb\class_02 sig: {_VERIFY_FILE_SIGNATURE} 03:44:04.137 sig: Key = lowcdc.inf sig: FilePath = c:\users\user\lowcdc-win10x64_v1.0.1.6-20210213\lowcdc.inf sig: Catalog = c:\users\user\lowcdc-win10x64_v1.0.1.6-20210213\lowcdc.cat ! sig: Verifying file against specific (valid) catalog failed. ! sig: Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0109)} 03:44:04.494 sig: {_VERIFY_FILE_SIGNATURE} 03:44:04.494 sig: Key = lowcdc.inf sig: FilePath = c:\users\user\lowcdc-win10x64_v1.0.1.6-20210213\lowcdc.inf sig: Catalog = c:\users\user\lowcdc-win10x64_v1.0.1.6-20210213\lowcdc.cat sig: Success: File is signed in Authenticode(tm) catalog. sig: Error 0xe0000242: The publisher of an Authenticode(tm) signed catalog has not yet been established as trusted. sig: {_VERIFY_FILE_SIGNATURE exit(0xe0000242)} 03:44:04.612 dvi: Created Driver Node: dvi: HardwareID - USB\VID_16C0&PID_05E1 dvi: InfName - c:\users\user\lowcdc-win10x64_v1.0.1.6-20210213\lowcdc.inf dvi: DevDesc - Virtual Communications Port dvi: Section - DriverInstall.NTamd64 dvi: Rank - 0x00ff0001 dvi: Signer Score - Authenticode dvi: DrvDate - 09/02/2017 dvi: Version - 1.0.1.6 dvi: {Build Driver List - exit(0x00000000)} 03:44:04.641
Таким образом, непосредственно с пакетом драйвера LowCDC-Win10x64 проблем нет. Нужно продолжать исследовать вопрос совместимости устройств AVR-CDC и Digispark с USB хост-контроллерами и USB-стеком Windows 10.
также плохой дескриптор, хотя чип вполне себе живой
Сегодня появилась похожая проблема.
Device Description : Unknown USB Device (Device Descriptor Request Failed)
Device ID : USB\VID_0000&PID_0002\7&4E1EB02&0&2
Hardware IDs : USB\DEVICE_DESCRIPTOR_FAILURE
Не уверен, что послужило причиной данного изменения. Вчера я оставил устройство подключенным в USB3.0-порт на несколько часов. Сегодня включил ПК с подключенным устройством в том же порте. В USB2.0-порте работает без проблем.
К счастью, я еще несколько дней назад записал журнал событий при подключении устройства с состоянием Unknown USB Device (Invalid Configuration Descriptor), так что эта проблема не должна повлиять на ход исследования.
Апдейт. Ошибка будто пропадает и возвращается сама собой.
Несколько раз удалось устранить проблему удалением дерева USB-устройств до моего устройства (хост-контроллер, корневой хаб и устройство AVR-CDC) в Диспетчере устройств, выключением ПК со снятием напряжения с блока питания на пару минут.
Занятно, что в случае появления ошибки Device Descriptor Request Failed при подключения устройства AVR-CDC, все доступные мне USB1.1-устройства, в том числе Full-Speed (CH341A Mini Programmer), не определяются с такой же ошибкой.
Не могу исключать и проблем с устройством, которое представляет собой очень древнюю поделку, выполненную не на печатной плате.
Внезапно наступили трудо-выебудни, так что до выходных.
Как я и ожидал, проблема заключается в объявлении конечных точек типа Bulk в дескрипторе конфигурации.
UsbUcx:Dispatch URB_FUNCTION_CONTROL_TRANSFER_EX - Type: Standard, Request: GET_DESCRIPTOR(DEVICE) UsbUcx:Complete URB_FUNCTION_CONTROL_TRANSFER_EX - Type: Standard, Request: GET_DESCRIPTOR(DEVICE) UsbUcx:Dispatch URB_FUNCTION_CONTROL_TRANSFER_EX - Type: Standard, Request: GET_DESCRIPTOR(CONFIGURATION) UsbUcx:Complete URB_FUNCTION_CONTROL_TRANSFER_EX - Type: Standard, Request: GET_DESCRIPTOR(CONFIGURATION) UsbHub3:Descriptor validation failed for the device for the following reason: DescriptorValidationErrorBulkEndpointAtLowSpeed UsbHub3:Descriptor validation failed for the device for the following reason: DescriptorValidationErrorBulkEndpointAtLowSpeed UsbHub3:Validation Failure of Configuration Descriptor
Похоже, что в стеке драйверов USB3.0, который был добавлен в Windows 8, реализована более строгая валидация дескрипторов. Я полагаю, что "виноват" драйвер корневого хаба UsbHub3.sys, который непосредственно выполняет энумерацию подключенных устройств. Таким образом, если подключить устройство AVR-CDC в любой USB-порт (даже USB2.0) корневого хаба, входящего в состав хост-контроллера xHCI, то определяться и работать оно не будет.
Ликбез со страницы описания драйвера LowCDC:
CDC is a class that defines various communications over USB. The RS-232C procedure is included in CDC-ACM (Abstract Control Model) subclass. It uses two bulk transfer pipes for data, and one interrupt pipe for message, besides a control pipe. The mechanism that configures terminal settings (baudrate, parity bit, etc) to device is defined too. In the USB standard, low-speed (1.5Mbps) device is allowed to have two interrupt pipes only. In the case of using bulk transfer or using exceeded number of pipes, some host controller or hub transmits packets at critical intervals, and the V-USB device fails to respond. To reduce this trouble, a small patch driver assists the protocol operations on Windows.
Я посмотрел исходные коды драйвера LowCDC и пришел к выводу, что эту проблему не получится обойти. Можно было бы попробовать использовать конечные точки типа Interrupt вместо Bulk в дескрипторе конфигурации, но для этого необходимо вносить изменения в код драйвера, чтобы как-то иначе определять каким каналам нужно восстановить тип Bulk. Разумеется, нет никаких гарантий, что это заработает.
Возможные решения:
Использовать стек драйверов USB3.0 для Windows 7 от производителя чипсета (южного моста) или PCIe-карты расширения. Я установил пакет драйверов VIA_XHCI_Driver_V4.70C_AP.zip для моей PCIe-карты с xHCI хост-контроллером VL800, и устройство AVR-CDC корректно определяется и работает. Недостатки очевидны: эти драйверы не обновлялись с 2014 года и, вероятно, не тестировались с Windows 10.
Использовать PCIe-карту расширения с хост-контроллером EHCI и портами USB2.0.
Hello, @jaromaz.
I'm investigating this Invalid Configuration Descriptor problem and have come to the conclusion that there are compatibility issues with USB3.0 driver stack introduced in Windows 8.
I remember that you have successfully connected a Digispark CDC device to your laptop with Windows 10. Could you save UsbTreeView reports using that laptop and attach them here? I'm interested in the information regarding USB host controllers, (root) hubs, topology and used drivers.
To save reports, follow these steps:
If you are curious about the results of the investigation so far, read https://github.com/protaskin/LowCDC-Win10x64/issues/5#issuecomment-779824874 and https://github.com/protaskin/LowCDC-Win10x64/issues/5#issuecomment-784500352.
Thanks in advance!
Решение так и не нашлось? На работе компы обновили и все стенды на атмегах на...сь. Не охота всё переписывать и пререразводить.
timestamp.verisign.com is not reachable now
http://timestamp.comodoca.com/authenticode works for me