Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема CyUSB.sys и 64-х битных Windows
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
pecec
Начиная с 2006 года стал в разработках устройств в качестве интерфейсных мх использовать CY7C68013A вместо FT245BM, т.к. иногда требовалась большая скорость передачи. Тогда у FTDI ещё не было мх, которые бы работали на USB2.0. Потом ещё выяснилось, что CY7C68013A и стоит дешевле (на тот момент сохранились накладные в которых их стоимость 2,54$), удобнее в использовании (есть GPIB), для небольших скоростей (<4МБ/с) ассинхронный режим аналогичен FT245BM, превосходная библиотека NET 2.0 CyUSB.dll (ради этого перешёл с любимого Delphi на C#) очень хорошо продокументированная.
Спустя три года поставил 64-битную 7-ку. Надеясь найти обновления качнул Development Kit датированный 2009 годом и там оказался CyUSB.sys версии 1.7.0.0 (в 2006 году была версия 1.8.120.0)! Техподдержка, чтоб её не доставали с подобными вопросами вывесила, что дрова мол работают в режими с отключённой проверкой сертефикатов (проверял не работают) и сертифицировать они ничего не собираются.
FTDI сначала поторопились с версией CDM 2.04.14, написав, что поддерживает Server 2008 и 7-ку (оказались не сертифицированные), но потом быстро исправились в версии CDM 2.06.00 WHQL Certified.
Что делать?
Где бы взять исходники для CyUSB.sys, чтоб попробывать их перекомпилировать в DDK для 64-битки и потом мб сертифицировать?
SM
Цитата(pecec @ Dec 28 2009, 23:42) *
Где бы взять исходники для CyUSB.sys, чтоб попробывать их перекомпилировать в DDK для 64-битки и потом мб сертифицировать?


Исходники - не знаю, проще bulkusb.sys из wdk подогнать под задачу и собрать.

Что касается "сертифицировать" - то ничего сертифицировать не надо, кроме своей собственной фирмы, купив на нее сертификат от GlobalSign, Verisign, или еще кого, кто там в списке - http://www.microsoft.com/whdc/winlogo/drvsign/crosscert.mspx . После того, как купите такой сертификат, стоит он не так и дорого, что-то типа 170 евро на год, сможете сами им подписать даже их драйвер (если это не нарушает их лицензии на этот драйвер), после чего он начнет ставится без отключения проверок, а винда гордо рапортовать о дровах Вашего изготовления.

т.е. WHQL не нужна, чтобы можно было ставить драйвера. Она нужна, чтобы еще и пальцы гнуть можно было, "типа мы и там сертифицировались".
Konst_777
Цитата(pecec @ Dec 28 2009, 23:42) *
...
Спустя три года поставил 64-битную 7-ку. Надеясь найти обновления качнул Development Kit датированный 2009 годом и там оказался CyUSB.sys версии 1.7.0.0 (в 2006 году была версия 1.8.120.0)!
...

Так ведь, у Cypress есть SuiteUSB 3.4 - USB Development tools for Visual Studio


Цитата(pecec @ Dec 28 2009, 23:42) *
...
Техподдержка, чтоб её не доставали с подобными вопросами вывесила, что дрова мол работают в режими с отключённой проверкой сертефикатов (проверял не работают) и сертифицировать они ничего не собираются.
...

Они ведь объясняют причины этого: Why is cyusb.sys not WHQL signed?

Поиск в Google ("sign driver for x64") дал вот такое решение:
VISTA: Install unsigned hardware driver in x64 bit,
Guide to Installing Un-Signed Drivers in Win 7 x64
Я пока не использую Windows 7 (x64). Пожалуйста, напишите, работает ли это решение для Windows 7 (x64)?
loginser
Цитата(pecec @ Dec 28 2009, 23:42) *
Где бы взять исходники для CyUSB.sys, чтоб попробывать их перекомпилировать в DDK для 64-битки и потом мб сертифицировать?


Исходники найти не получится, занимался этоим вопрос, но безуспешно (общался вживую с ребятами из Cypress). Довольно просто можно переписать usbbulk.sys (получается ничуть не хуже, а местами и лучше), как уже было подмечено. А вот сертификовать думаю необходимо будет под Х64. Просто подписью (как упоминул уважаемый SM) не обойтись.
Konst_777
Еще один вопрос "Проблема с установкой драйверов под Windows7" по данной теме был задан Vitaliy_ARM в теме Помогите c Cypress CY7C68013, Изохронная IN точка и FIFO.
Vitaliy_ARM
Цитата(Konst_777 @ Mar 17 2010, 10:52) *

У меня тоже работает в режиме Test Mode. Подписывать драйвера той утилитой еще не пробовал. Видимо майкрософт решили содрать еще немного денег с производителей. Сколько стоит получить подпись у майкрософт для своего устройства?

P.S.
Может тогда уже лучше использовать FT2232H?: http://www.ftdichip.com/Drivers/D2XX.htm
Konst_777
Полезные ссылки:

Пошаговое руководство по подписыванию и подготовке драйверов аппаратных устройств

Kernel-Mode Code Signing Walkthrough - с этой странички можно скачать файл KMCS_Walkthrough.doc

Windows root certificate program members -содержит более полный список Certification Authorities (CAs) в файле "windows root certificate program members november 2009.pdf"

Windows Driver Kit Version 7.1.0
Konst_777
Полезная утилита для тех, кто использует цифровую подпись для тестирования драйверов (Signing a Driver Package with the Test Certificate), как штатное средство подписи драйверов:

Вот web страница автора утилиты и, собственно, сама утилита Remove Watermarks for Windows 7, Vista and Server 2008.
Силаев
Подниму тему.
У пользователей идет обновление парка компьютеров, и на них установливают Windows 7 X64. Спрашивают драйверы для устройств на CY7C68013 FX2 под эту систему соответственно.

Цитата(Konst_777 @ Jan 4 2010, 23:32) *
Поиск в Google ("sign driver for x64") дал вот такое решение:
Guide to Installing Un-Signed Drivers in Win 7 x64
Я пока не использую Windows 7 (x64). Пожалуйста, напишите, работает ли это решение для Windows 7 (x64)?


Это решение работает.
В Windows 7 X64 запускаются программы написанные под XP и работают с драйвером для windows 7 X64 при отключенной проверке подписи драйвера.

Еще как вариант можно использовать подписанный драйвер для демоплаты http://www.cypress.com/?id=4&rID=53338
Но тогда надо VID PID менять на соттветствующие.

Вопрос: есть еще варианты подписать драйвер под свои устройства чтобы в x64 он нормально устанавливался?
pergunt
Подниму эту тему для WINDOWS 7 x64 .
Необходимо подключить ранее разработанные платы с USB на Cypress CY7C68013 к компу с 64-х разрядной WINDOWS 7.
На ХР драйвер ставился и устройство определялось и работало (был задан VID_0547&PID_1002).
Попытка поставить драйвер на 64-х разрядную ось неудачна.
В свойствах устройства стоит ! (воскл знак) и написано -
"Не удается проверить цифровую подпись драйверов, необходимых для данного устройства. При последнем изменении оборудования или программного обеспечения могла быть произведена установка неправильно подписанного или поврежденного файла либо вредоносной программы неизвестного происхождения. (Код 52)"

Я брал cyusb.inf файл и добавлял в него свой VID_0547&PID_1002 (cyusb.inf и cyusb.sys брались из CY3684_EZ-USB_FX2LP_DVK).

Если я при запуске WINDOWS 7 через F8 выключаю проверку цифровой подписи драйверов, то мое устройство опознается правильно и далее работает (но только до перезагрузки винды).

Попытка отключить на постоянно проверку цифровой подписи через gpedit.msc ничего не дает (не понимаю почему?).

Как еще можно заставить корректно видеть мое устройство в х64 (менять/перепрошивать vid и pid на предлагаемые cypress VID_04B4&PID_1004 ... во всех платах не хочется)?!
dxp
Чем не устраивает работа с отключенной проверкой подписи драйверов (через F8)?
Konst_777
Цитата(pergunt @ Jan 27 2014, 16:12) *
...Как еще можно заставить корректно видеть мое устройство в х64 (менять/перепрошивать vid и pid на предлагаемые cypress VID_04B4&PID_1004 ... во всех платах не хочется)?!

  • Использовать цифровую подпись для тестирования драйверов (Signing a Driver Package with the Test Certificate). Только, придется на каждом компьютере использовать TESTSIGNING Boot Configuration Option.
  • Самому подписывать драйвер, соответственно заплатить Certification Authority $400.
  • Перейти на WinUSB.
pergunt
to Konst_777
1 пункт - не заработал.
2 пункт - не подходит
QUOTE (Konst_777 @ Jan 27 2014, 20:03) *
  • Перейти на WinUSB.

А вот WinUSB - пока не разобрался откуда взять .inf и .sys файлы (как создать, хотя по вашей ссылке сходил )
Konst_777
Цитата(pergunt @ Jan 27 2014, 21:19) *
1 пункт - не заработал...

Похоже, что Вы что-то не сделали или сделали не так. Проверьте, что Вы:
  • подписали драйвер цифровой подписью для тестирования драйверов;
  • добавили Ваш тестовый сертификат в хранилище сертификатов на компьютере.

Цитата(pergunt @ Jan 27 2014, 21:19) *
...А вот WinUSB - пока не разобрался откуда взять .inf и .sys файлы (как создать, хотя по вашей ссылке сходил )

Почитайте тему Подскажите по winUSB
dxp
QUOTE (Konst_777 @ Jan 28 2014, 02:09) *
Похоже, что Вы что-то не сделали или сделали не так. Проверьте, что Вы:
  • подписали драйвер цифровой подписью для тестирования драйверов;
  • добавили Ваш тестовый сертификат в хранилище сертификатов на компьютере.

Этот приём не работает после какого-то там обновления. sad.gif Тоже использовали, а потом перестало работать.

В итоге, накопали некий скрипт, который автоматом запускается на старте и загоняет венду в тестовый режим, где всё работает без лишних вопросов. Так и живём.
pergunt
to Konst777
Относительно WinUSB.inf и WinUsb.sys :
Правильно я понял, что я должен скорректировать (добавить) в файл WinUSB.inf , находящийся в дирректории с:\Windows\inf\
строки касающиеся моего устройства, т.е. :

[Version]
Signature = "$Windows NT$"
Class = USBDevice
ClassGUID = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
Provider = %ManufacturerName%
CatalogFile = WinUSBInstallation.cat
DriverVer=09/04/2012,13.54.20.543

; ========== Manufacturer/Models sections ===========

[Manufacturer]
%ManufacturerName% = Standard,NTamd64

[Standard.NTamd64]
%DeviceName% =USB_Install, USB\VID_0547&PID_1002

; ========== Class definition ===========

[ClassInstall32]
AddReg = ClassInstall_AddReg

[ClassInstall_AddReg]
HKR,,,,%ClassName%
HKR,,NoInstallClass,,1
HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%\system32\setupapi.dll,-20"
HKR,,LowerLogoVersion,,5.2

; =================== Installation ===================

[USB_Install]
Include = winusb.inf
Needs = WINUSB.NT

[USB_Install.Services]
Include =winusb.inf
Needs = WINUSB.NT.Services

[USB_Install.HW]
AddReg=Dev_AddReg

[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{9f543223-cede-4fa3-b376-a25ce9a30e74}"

; [DestinationDirs]
; If your INF needs to copy files, you must not use the DefaultDestDir directive here.
; You must explicitly reference all file-list-section names in this section.

; =================== Strings ===================

[Strings]
ManufacturerName=""
ClassName="Universal Serial Bus devices"
DeviceName="My USB"
REG_MULTI_SZ = 0x00010000

Посмотрите, пожалуйста, этих изменений достаточно?

2. Этот inf файл я корректирую прямо в дирректории с:\Windows\inf\ ?
или нужно поместить его в свою дирректорию?

3. WinUsb.sys файл возьмется автоматически родной из Windows или его тоже нужно создавать?
Konst_777
Цитата(dxp @ Jan 28 2014, 10:32) *
Этот приём не работает после какого-то там обновления. sad.gif Тоже использовали, а потом перестало работать...

Да ну, а как же разработчики драйверов? Теперь все поголовно обязаны платить Certification Authorities?
Попробовал использовать драйвер CyUSB (ver. 3.4), который я когда-то подписал цифровой подписью для тестирования драйверов, под Windows 8.1 x64. Все работает wink.gif

Цитата(dxp @ Jan 28 2014, 10:32) *
...В итоге, накопали некий скрипт,... Так и живём.

Ну, так выложите скрипт. Осчастливьте народ.

Цитата(pergunt @ Jan 28 2014, 11:16) *
to Konst777
Относительно WinUSB.inf и WinUsb.sys :
Правильно я понял, что я должен скорректировать (добавить) в файл WinUSB.inf , находящийся в дирректории с:\Windows\inf\...

Не нужно трогать WinUSB.inf и WinUsb.sys. Вообще. В этом и преимущество. To identify a USB device as a WinUSB device, the device firmware must have these Microsoft OS Descriptors. Посмотрите пример, который я выложил в теме Подскажите по winUSB. И еще, очень полезно почитать USB Stack and Microsoft OS Descriptors.
pergunt
Прошу прощения, если задаю вопросы про очевидное.
Я читаю WinUSB (Winusb.sys) Installation ( http://msdn.microsoft.com/en-us/library/wi...5%29.aspx#howto )
Дохожу до пункта How to create a driver package that installs Winusb.sys :

1. WinUSB co-installer (Winusbcoinstaller.dll) - беру соответствующее dll - WinUsbCoInstaller.dll
2. KMDF co-installer (WdfcoinstallerXXX.dll) - беру wdfcoinstaller01009.dll
3. An .inf file that installs Winusb.sys as the device's function driver. For more information, see Writing an .Inf File for WinUSB Installation. - создаю myusb.inf файл со строками приведенными мной ранее.
4. A signed catalog file for the package. This file is required to install WinUSB on x64 versions of Windows Vista.
- А вот с этим пунктом непонятно, где взять проверенный каталог файл для меня, откуда?!

dxp
QUOTE (Konst_777 @ Jan 28 2014, 16:45) *
Да ну, а как же разработчики драйверов? Теперь все поголовно обязаны платить Certification Authorities?
Попробовал использовать драйвер CyUSB (ver. 3.4), который я когда-то подписал цифровой подписью для тестирования драйверов, под Windows 8.1 x64. Все работает wink.gif

Не берусь судить, не знаю тему досконально. Пробовали разные способы, в т.ч. и подписыванием, оно кончалось BSOD'ами.

QUOTE (Konst_777 @ Jan 28 2014, 16:45) *
Ну, так выложите скрипт. Осчастливьте народ.

Он легко гуглится. Впрочем, мне не жалко. sm.gif
Нажмите для просмотра прикрепленного файла
SM
Цитата(pergunt @ Jan 28 2014, 14:27) *
-[color="#0000FF"] А вот с этим пунктом непонятно, где взять проверенный каталог файл для меня, откуда?!


1) сходить туда и заплатить бабла. https://www.globalsign.com/ru-ru/podpis-kod...thenticode.html
2) получить сертификат
3) выполнить для Вашего INF следующие команды (в любой среде WDK)

Код
c:\WinDDK\8.0\bin\x86\inf2cat /driver:<path_to_driver> /os:2000,XP_X86,Server2003_X86,Vista_X86,XP_X64,Server2003_X64,Vista_X64,Server2
003_IA64,7_X64,7_X86,Server2008_X64,Server2008_IA64,Server2008_X86,Server2008R2_
X64,Server2008R2_IA64,8_X86,8_X64,Server8_X64

signtool sign /v /s my /n <certificate_name> /ac cert/mscv-gs.pem /t http://timestamp.globalsign.com/scripts/timstamp.dll <path_to_driver>\<drivername>.cat


соотв. <path_to_driver> <certificate_name> и <drivername> подставить какие надо

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

ну и winddk 8 нужен чтобы в CAT файл прописать вин8, а signtool все равно какой. я собираю дрова и под 8, и под 8.1 старым добрым WDK 7600, а из 8-го взял ТОЛЬКО inf2cat и ничего более.

UPD:

cert/mscv-gs.pem - этого надо скачать оттуда - http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx , там же полный список всех тех, у кого можно покупать сертификат, чтобы он подошел для KMCS
pergunt
QUOTE (SM @ Jan 28 2014, 15:38) *
1) сходить туда и заплатить бабла. https://www.globalsign.com/ru-ru/podpis-kod...thenticode.html

Тогда я совсем запутался - в чем преимущество применения WinUsb.sys вместо CyUsb.sys (если я все равно должен заплатить )?
SM
Суть такова - если Вам надо изменить хоть одну букву в INF файле, или написать свой - тогда надо платить за сертификат, какой бы драйвер не был.

Если Вас устраивает готовый фирменный INF, подписанный кем то, и вы подделываетесь под VID/PID (или стандартный класс), указанный в нем, то тогда (и только тогда) Вам сертификат покупать не надо.
Konst_777
Цитата(pergunt @ Jan 28 2014, 14:49) *
Тогда я совсем запутался - в чем преимущество применения WinUsb.sys вместо CyUsb.sys (если я все равно должен заплатить )?

Вы слишком углубляетесь в прошлое WinUSB. В самом начале WinUSB был просто еще одним универсальным драйвером для устройств USB. Так же как и CyUsb.sys. В настоящее время, преимущество WinUsb.sys в том, что не нужно вносить изменения в WinUsb.inf и подписывать драйвер. Попробуйте вначале прочитать WCID Devices. Там описана история развития WinUSB и требования к firmware для устройств USB, чтобы разработчику устройства USB не нужно было подписывать драйвер (модификацию WinUsb.inf), а пользователю не нужно было устанавливать драйвер. В теме USB Stack and Microsoft OS Descriptors дан ответ на вопрос: "Почему Windows не подключает мое устройство USB автоматически, хотя мое firmware отвечает на запросы MS OS Descriptors?". В этой теме есть ссылка на тему WCID Devices.

Цитата(SM @ Jan 28 2014, 15:58) *
...и вы подделываетесь под VID/PID (или стандартный класс), указанный в нем, то тогда (и только тогда) Вам сертификат покупать не надо.

При использовании WinUSB firmware может иметь произвольный VID/PID. Важно, чтобы firmware отвечало на запросы MS OS Descriptors.
vladimir_orl
Присоединяюсь. Работаем с FTDI. На 32-х битных системах всё отлично работает. На 64-х битной восьмёрке тоже хорошо.

А на 64-х битной 7-ке постоянно просит цифровую подпись и админские права. Ставим. Стоит просто перезагрузить - и опять "неизвестное устройство". Иногда даже ПК не с админскими правми загружаться не хочет.
vladimir_orl
Причём на i-7 всё отлично работает...
rfm389
А как дела на 8-ке?
Установка неподписанных драйверов в Windows 8.1
http://www.windxp.com.ru/win8/article_44.htm
Кто-нибудь пробовал?
В 7-ке подобная функция заявлена, но не работает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.