Hello everyone,
I tried to install an driver via INF-file for USB-CDC (based on mcb2300_vcom.inf) on Windows 7 Professional x64 (in the following text called 'target system'). This is to get a COM-Port to send data via USB to an LPC2368 microcontroller.
The installation failed the first time with the message that the driver is not a x64-based system driver.
So I changed the driver as described in MSDN-article for "Cross-Platform INF Files". After a day of hard mind-work I finished the driver and tried to install it again. Now the installation starts on the target system, gives a message about the missing signature, and finishes with following message:
Driver software was found, but an error occured while installation. The device could not be started. (Code 10)
I checked the INF-file with ChkInf (WDK 7.1.0) on the target system and got only one error (no warnings):
Line x: ERROR: (E22.1.1081) Directive: CatalogFile required (and must not be blank) in section [Version] for WHQL digital signature.
I do not think this error is the reason for Code10.
I furthermore checked the usbser.sys on the target system. It's version is 6.1.7600.16385. It's date is 14.07.2009 02:06.
I do not know what to do now to make the driver work.
Finally, here is my revised INF source:
[Version] Signature="$Windows NT$" Class=Ports ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} Provider=%MYCOMPANY% DriverVer=10/13/2010,5 [DestinationDirs] FakeModemCopyFileSection=12 DefaultDestDir=12 [Manufacturer] %MYCOMPANY%=USBDevice,NTia64,NTamd64 ;------------------------------------------------------------------------------ ; Models sections ;------------------------------------------------------------------------------ [USBDevice] %DRIVERNAME%=InstallXXUSB, USB\VID_c251&PID_1705 [USBDevice.NTia64] %DRIVERNAME%=InstallXXUSB, USB\VID_c251&PID_1705 [USBDevice.NTamd64] %DRIVERNAME%=InstallXXUSB, USB\VID_c251&PID_1705 [SourceDisksFiles] [SourceDisksNames] ;------------------------------------------------------------------------------ ; Installation ;------------------------------------------------------------------------------ [InstallXXUSB] include=mdmcpq.inf CopyFiles=FakeModemCopyFileSection AddReg=XXUSB.AddReg [XXUSB.AddReg] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,usbser.sys HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" [InstallXXUSB.Services] AddService=usbser, 0x00000002, DriverService [DriverService] DisplayName=%DRIVERNAME% Description=%DESCRIPTION% ServiceType=1 StartType=3 ErrorControl=1 ServiceBinary=%12%\usbser.sys ;------------------------------------------------------------------------------ ; String Definitions ;------------------------------------------------------------------------------ [Strings] MYCOMPANY="The name of my company" DRIVERNAME="XX USB VCom Port" DESCRIPTION="Provides a virtual COM-Port when connecting an XX via USB"
Has anyone hints for me to solve the problem and make the port work?
Best regards
Hello to everyone who is still reading my 'diary' here,
I logged enumeration of Keil MCB2300, burned with vCOM Demo of MDK-ARM 4.01 and MDK-ARM 3.23a, in Windows 7 x64 with SourceUSB 3.2.0 today. Both versions of the demo work on Windows 7 x64. I mean, I do not know exactly if they work in all details, but SourceUSB shows no INVALID_PARAMETER on 'Irp Status' column and device manager shows no exclamation mark after enumeration process.
I compared the logged data with fresh enumeration data of our device and found a significant difference (after I had changed the display of column 'Time' from Elapsed Timings to Delta Timings in the SourceUSB window that shows the captured requests): I saw a time delay of about 50 ms between the start of the SET_CONFIGURATION URB request and its completion during the enumeration of our device. While enumerating the Keil MCB2300 a time delay of only 0.35 ms occured!
Should our device respond to SET_CONFIGURATION request a little faster?
In the next step I logged the enumeration process of our device in Windows XP x86 with SourceUSB again. I found the same time delay of about 50 ms between start and completion of the SET_CONFIGURATION URB request. But enumeration of our device succeeds in this operating system.
While skim-reading many USB related documents and web pages I read a lot about timing issues with different host controllers. Could different host controller types be the reason for unsuccessful enumeration in Windows 7 x64???
I will now check what type of host controllers are used in the computers I have here and then will have to inform about timing differences on different host controllers while enumeration process. In addition I will try to make the response to the SET_CONFIGURATION request a little faster.
I would be very happy if someone could give hints regarding my latest post.
finally the problem seems to be solved. After days and weeks of waiting for answers here and trying to find answers by myself, I started a thread in another forum. There I got a suggestion to use USB2.0 Command Verifier Tool (USB20CV R1.4.2.4) from usb.org. I installed it on Windows 7 x64 (not an easy task ;o) ) and found two general errors in our configuration descriptors:
* The bmAttributes field in the Configuration Descriptor was set to an invalid value. For historical reasons one bit (D7) has to be set to "1" and this bit was set to "0" in our firmware.
* The wMaxPacketSize of the bulk endpoint descriptors was set to an invalid value. The value is not allowed to exceed 64 bytes for FullSpeed USB devices. The value was set to 512 bytes in our FullSpeed device firmware.
I made the required changes to our firmware and now our device starts in Windows 7 x64. Further tests will show if there are more problems with our firmware.
Thank you for all answers here so far, especially to Tsuneo.
Gud stuff.I was stuck with the same issue,added the last two patches the device is detected in Win7 32bit. Thanks Robert Suess and Tsuneo for sharing your efforts