From: Hapary on 11 Dec 2006 22:04 Dear All, I'm currently working on a CDC device. The device is identified as a virtual serial port in windows and is using usbser.sys, moreover the device is identified as Full-Speed. When my device sends data to PC via its dedicated endpoint, I can reach a throughput around 300kbps, however when PC sends data to my device, the throughput is extremely low (around 10kbps). Both endpoints have similar characteristics, and the endpoint size is defined as 64 bytes. But I've seen that only one byte is transfered with every DATA OUT packet (instead of maximum size of 64). Is this a problem with usbser.sys ? Is there any setting that I have to change in windows ? Is there any replacement for usbser.sys that doesn't have this problem ? I've looked around my FW/HW and they seem to be ok, so what am I missing ? Thanks a milion,
From: chris.aseltine on 11 Dec 2006 22:47 Hapary wrote: > When my device sends data to PC via its dedicated endpoint, I can reach > a throughput around 300kbps, however when PC sends data to my device, > the throughput is extremely low (around 10kbps). Both endpoints have > similar characteristics, and the endpoint size is defined as 64 bytes. > But I've seen that only one byte is transfered with every DATA OUT > packet (instead of maximum size of 64). Is that kilobits per second or kilobytes per second? How are you calling WriteFile() on the port? How are your endpoints configured on the device? Have you taken a USB log on the wire to see if the device is, say, excessively NAKing the packets?
From: Vetzak on 12 Dec 2006 07:08 Most people and companies write their own CDC driver(s). To me, usbser.sys is not documented enough to rely on. Last time I tried to deploy this driver, I had to disassemble it in order to clear out some of my questions. So I promptly started writing my own CDC driver set and it rocks. Hapary schreef: > Dear All, > > I'm currently working on a CDC device. The device is identified as a > virtual serial port in windows and is using usbser.sys, moreover the > device is identified as Full-Speed. > > When my device sends data to PC via its dedicated endpoint, I can reach > a throughput around 300kbps, however when PC sends data to my device, > the throughput is extremely low (around 10kbps). Both endpoints have > similar characteristics, and the endpoint size is defined as 64 bytes. > But I've seen that only one byte is transfered with every DATA OUT > packet (instead of maximum size of 64). Is this a problem with > usbser.sys ? Is there any setting that I have to change in windows ? Is > there any replacement for usbser.sys that doesn't have this problem ? > > I've looked around my FW/HW and they seem to be ok, so what am I > missing ? > > Thanks a milion,
From: Hapary on 12 Dec 2006 08:25 Hi, Thank you for your replies. The speeds are in kilo bits per seconds. I was using hyperterminal's SendTextFile to measure the speed, but I'll try to use WriteFile directly, are there any suggestions for the parameters to use with CreateFile/WriteFile with usb ? The endpoints that I use for sending and receiving data are configured based on a standard CDC device i.e. Bulk type. The endpoint's maximum size is 64. And there is no other USB device attached to the same host on the PC side (to make sure that the bandwidth is not used with some other device). About NAKs, I'm really looking for something to help me find out about them, unfortunately, the USB controller that I'm using sends ACKs/NAKs transparently and I can't see them, I also don't have any USB data logger hardware to investigate the protocol. Is there any way that I can find out about NAKs in windows system ? About writing my own driver, I'm trying to avoid that as much as possible, as I'm not familiar with driver developement in windows and also I'm afraid that I have to implement one driver for each version of windows (not sure about that though). Regards, Behzad chris.aseltine(a)gmail.com wrote: > Hapary wrote: > > > When my device sends data to PC via its dedicated endpoint, I can reach > > a throughput around 300kbps, however when PC sends data to my device, > > the throughput is extremely low (around 10kbps). Both endpoints have > > similar characteristics, and the endpoint size is defined as 64 bytes. > > But I've seen that only one byte is transfered with every DATA OUT > > packet (instead of maximum size of 64). > > Is that kilobits per second or kilobytes per second? How are you > calling WriteFile() on the port? How are your endpoints configured on > the device? > > Have you taken a USB log on the wire to see if the device is, say, > excessively NAKing the packets?
From: Vetzak on 12 Dec 2006 10:27 Hello My driver set runs on Win2K, WinXP and WinVista. Except for usb selective suspend, everything runs fine & identical on all three systems. If you want higher throughput you must send multiple read IRPs down to the USB subsystem, so the host controller can constantly read data of the device. That's another reason why you should build your own driver. If you want to monitor usb activity, try google for "usb monitor". There's some software available that traces at the software level (between your USB driver and the USB subsystem). For real USB tracing, buy a USB tracer machine. Hapary schreef: > Hi, > > Thank you for your replies. The speeds are in kilo bits per seconds. I > was using hyperterminal's SendTextFile to measure the speed, but I'll > try to use WriteFile directly, are there any suggestions for the > parameters to use with CreateFile/WriteFile with usb ? > > The endpoints that I use for sending and receiving data are configured > based on a standard CDC device i.e. Bulk type. The endpoint's maximum > size is 64. And there is no other USB device attached to the same host > on the PC side (to make sure that the bandwidth is not used with some > other device). > > About NAKs, I'm really looking for something to help me find out about > them, unfortunately, the USB controller that I'm using sends ACKs/NAKs > transparently and I can't see them, I also don't have any USB data > logger hardware to investigate the protocol. Is there any way that I > can find out about NAKs in windows system ? > > About writing my own driver, I'm trying to avoid that as much as > possible, as I'm not familiar with driver developement in windows and > also I'm afraid that I have to implement one driver for each version of > windows (not sure about that though). > > Regards, > Behzad > > chris.aseltine(a)gmail.com wrote: > > Hapary wrote: > > > > > When my device sends data to PC via its dedicated endpoint, I can reach > > > a throughput around 300kbps, however when PC sends data to my device, > > > the throughput is extremely low (around 10kbps). Both endpoints have > > > similar characteristics, and the endpoint size is defined as 64 bytes. > > > But I've seen that only one byte is transfered with every DATA OUT > > > packet (instead of maximum size of 64). > > > > Is that kilobits per second or kilobytes per second? How are you > > calling WriteFile() on the port? How are your endpoints configured on > > the device? > > > > Have you taken a USB log on the wire to see if the device is, say, > > excessively NAKing the packets?
|
Next
|
Last
Pages: 1 2 Prev: Printer driver samples Next: How to install VHIDMINI driver program on VISTA 64BIT OS |