Xfer problem if I use a not signed driver.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

   

I am using the .NET dll from SuiteUSB to interface with a FX2LP. In my PC application I am calling the BulkInEndpt.Xferdata method at an interval of about 1 second.

   

My driver is not signed or self signed. I use 64 bit version. I know that I must sign this driver but I was unable to do so.

Signtool give me unexpected error "CertOpenStore() failed". I am wating the signing of driver: this must be done by a colleague.

As a result the device is not seen as Plug and Play, even if I use F8 to force the use of unsigned driver.

The documentation makes it sound like the major reason the Xferdata function should return false is because of a timeout. 

I have tried adjusting the timeout from 1000ms to 100000ms to see if the driver is simple slow for some reason.

 

I have used C# driver command to see if the Driver see the firmware correctly.

I have compared the data given in the console application by C# driver meber of CyUsbDevice with data of firmware: they match perfectly. So the error is not here.

I noticed there are UsbdStatus and NtStatus members of the CyUSBEndPoint Class that contain error codes of the xferdata method.

I have used this members to obtain information about this errors.

URB status (from UsbdStatus command) is set to USBD_STATUS_CANCELED (0xC0010000).

This data is confirmed by Ntstatus code ( 0xC0000120 aka STATUS_CANCELLED) .

I am able to select the device using VID and PID (console application see if the device is attached or not).

From this data, it seems to me that the problem is lacking of Signing that prevents the correct behavior of driver.

 

Open the device is possible because use the data of DeviceObject created by Enumeration Process ( driver of the bus, not Device Driver).

 

Xfer data do not function because use Device Driver ( not Bus Driver), and Device Driver is not correctly charged even if I use F8 and select Charge Usigned Driver ( is not Plug and Play).

Windows Vista (and Windows 7) Plug and Play device installation requires driver packages to have a signed catalog file. Driver packages commonly consist of multiple files; the catalog file contains the signature for the entire package.

   

   

-Pavesi Sergio

0 Likes
3 Replies
Anonymous
Not applicable

I wouldn't expect this to happen just because the driver is unsigned.

   

Please try a control transfer (uses Xferdata) using Control center when the device is bound to CyUSB.sys and let me know if the result.

   

Regards,

   

Anand

0 Likes
Anonymous
Not applicable

I have used USB Control Center.

   

BulkOut xfer give no problem.
BULK OUT transfer
0000 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
0010 66 66 66 66 66 66 66 66 66 66 66 66 66 66
BULK OUT transfer completed

   

BulkIn xfer instead give error
BULK IN transfer
BULK IN transfer failed with Error Code:997

You have written in another post that this error code is overlapped IO pending.

   

But give this error even if I send only one transfer.

   

Last URB error = 0xC0000012 [state=HALTED status=unknow ]

   

or

   

Last URB error = 0xC0010000 [state=HALTED status=unknow ]

   

Seem that you are correct Anand.

   

But why USB20CV Chapter 9 give no problem with the firmware of the board?

   

Thanks for the response and time.

   

PS: I am unable to answer 9 and 10 February.

   

-Pavesi Sergio.

0 Likes
Anonymous
Not applicable

USBCV runs chapter 9 using control endpoint. Even though there are different endpoints defined I don't think it would try transfers to them.

   

With regards to Bulk IN and Bulk OUT both use the same API but with direction changed. Have you tried looking at the CATC capture to see what is actually happening on the bus?

   

Regards,

   

Anand

0 Likes