Re: USB - Generic Serial device : Unable to read more than 4095 bytes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/06/2015 02:42 AM, arun k wrote:
> / # lsusb -v
> Bus 002 Device 006: ID 045b:0218
> Bus 001 Device 001: ID 1d6b:0002
> Bus 002 Device 001: ID 1d6b:0001
> Bus 003 Device 001: ID 1d6b:0002
> Bus 004 Device 001: ID 1d6b:0003
> 
> In this my device is
> Bus 002 Device 006: ID 045b:0218

I have no idea what this device is, sorry. And the device descriptor
dump below is not very helpful because it doesn't have the configurations.
What is this for?

> I enabled data dumping in usb_serial_generic_read_bulk_callback()
> function and found data received in this function is losing.
> In this function data is received as 64 bytes packets and two
> continuous 64 bytes having no data loss but the next packets are lost
> ie
> 1st packet ok(64 byte)
> 2nd packet ok(64 byte)
> .
> . packet lossing....
> .
> 7th packet ok(64 byte)
> 8th packet ok(64 byte)
> .
> .
> In this way data loss is happening. Number of packets losing is
> different not constant always.

It's unclear what you are saying here; are you saying
(a) the sending device is dropping data so the urbs do not contain the
    data you expect, or
(b) all of the data is being received but the not all of it is being
    buffered.

Either way, the fundamental problem you have is that your reader is
not fast enough. What is your application?

Have you tried a simple test jig that only reads data without processing
it to see if the application is the problem?

What h/w platform is this?

You mentioned earlier you're running 3.4.35. That's really old; current 3.4
is .108. Where did you get this kernel?

Regards,
Peter Hurley

PS - Please stop top-posting. See how I had to reiterate your linux version...


>>> I think the generic USB driver ignores baud rate. Like Greg suggested, >>you need to
>>> use the proper driver for your hardware.
> 
> I did't find any other suitable driver inside Linux.
> I checked this device in windows in that usbser.sys is detecting(.inf
> file is attached with the mail).
> 
>  Could you suggest any available drivers for my device. Sorry I am
> very new to Linux drivers.
> I will post my USB device descriptor values below
> 
> [ 1291.908071] ## udev->descriptor.bLength  0x12
> [ 1291.908089] ## udev->descriptor.bDescriptorType  0x1
> [ 1291.908147] ## udev->descriptor.bcdUSB  0x200
> [ 1291.908165] ## udev->descriptor.bDeviceClass  0xef
> [ 1291.908181] ## udev->descriptor.bDeviceSubClass  0x2
> [ 1291.908196] ## udev->descriptor.bDeviceProtocol  0x1
> [ 1291.908211] ## udev->descriptor.bMaxPacketSize0  0x40
> [ 1291.908226] ## udev->descriptor.idVendor  0x45b
> [ 1291.908241] ## udev->descriptor.idProduct  0x218
> [ 1291.908255] ## udev->descriptor.bcdDevice  0x1
> [ 1291.908270] ## udev->descriptor.iManufacturer  0x0
> [ 1291.908284] ## udev->descriptor.iProduct  0x0
> [ 1291.908298] ## udev->descriptor.iSerialNumber  0x0
> [ 1291.908313] ## udev->descriptor.bNumConfigurations  0x1
> 
> Regards,
> Arun
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On Wed, Aug 5, 2015 at 9:31 PM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> wrote:
>> On 08/04/2015 11:57 PM, arun k wrote:
>>>> Ok, but does the sending device know how to process in-band software flow control
>>>> and is it set up to respond properly?
>>>
>>> I am not sure about this. I need to check this.
>>>
>>>> Also, I doubt software flow control is going to work @ 4Mbaud line rate.
>>>> If you're stuck using software flow control, start with a 115kbaud line rate
>>>> and see if that fixes your data loss problem
>>>
>>> I tried B115200 also but issue is still there.
>>
>> I think the generic USB driver ignores baud rate. Like Greg suggested, you need to
>> use the proper driver for your hardware.
>>
>> What is the output from 'lsusb -v' and please identify in that output which
>> device you are using.
>>
>>> I am using a USB device and that sending data at a rate of *409600 bytes/sec*. Is this data rate have any relation with issue.
>>
>> Yes. Also, can you test this on a newer kernel like 3.18?
>>
>> Regards,
>> Peter Hurley
>>
>>> On Wed, Aug 5, 2015 at 11:24 AM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx <mailto:peter@xxxxxxxxxxxxxxxxxx>> wrote:
>>>
>>>     On 08/04/2015 10:00 PM, arun k wrote:
>>>     > I enabled software flow control like below
>>>     >
>>>     > tty.c_iflag |= (IXON | IXOFF | IXANY);
>>>
>>>     Ok, but does the sending device know how to process in-band software flow control
>>>     and is it set up to respond properly?
>>>
>>>     Also, I doubt software flow control is going to work @ 4Mbaud line rate.
>>>     If you're stuck using software flow control, start with a 115kbaud line rate
>>>     and see if that fixes your data loss problem.
>>>
>>>     Regards,
>>>     Peter Hurley
>>>
>>>
>>>     > On Wed, Aug 5, 2015 at 12:59 AM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx <mailto:peter@xxxxxxxxxxxxxxxxxx>> wrote:
>>>     >> On 08/03/2015 10:47 PM, arun k wrote:
>>>     >>> Thank you for the reply
>>>     >>>
>>>     >>>>> The tty layer is limiting you, just keep reading in a loop until you
>>>     >>>>> run out of data, you should not ever expect to read a specific number of
>>>     >>>>> bytes from a tty device at a time, the read call will tell you the
>>>     >>>>> number that was read properly.
>>>     >>>
>>>     >>> I tried this method but in my case I found data loss. By changing any buffer size modification in driver side , can we fix this issue ?
>>>     >>
>>>     >> The data loss is probably occurring because you have all flow control disabled
>>>     >> and the line speed is too fast for no flow control.
>>>     >>
>>>     >> Regards,
>>>     >> Peter Hurley
>>>     >>
>>>     >>>>> Please don't use the "generic" driver, it's slow and not the best to
>>>     >>>>> use
>>>     >>>
>>>     >>> Could you tell me is generic driver is suitable for my application ( My usb device sending data at a rate of 409600 bytes/sec) , ?
>>>     >>> or do you have any other suggestion for me ?
>>>     >>>
>>>     >>> My Linux kernel  version is 3.4.35
>>>     >>>
>>>     >>> Regards,
>>>     >>> Arun
>>>     >>>
>>>     >>> On Tue, Aug 4, 2015 at 1:13 AM, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx <mailto:gregkh@xxxxxxxxxxxxxxxxxxx> <mailto:gregkh@xxxxxxxxxxxxxxxxxxx <mailto:gregkh@xxxxxxxxxxxxxxxxxxx>>> wrote:
>>>     >>>
>>>     >>>     On Mon, Aug 03, 2015 at 04:44:07PM +0900, arun k wrote:
>>>     >>>     > Hi ,
>>>     >>>     >
>>>     >>>     > I have a trouble with using usb serial generic device.
>>>     >>>     >  I am using USB - Generic Serial driver for communicating with my usb
>>>     >>>     > device and my embedded device.
>>>     >>>
>>>     >>>     Please don't use the "generic" driver, it's slow and not the best to
>>>     >>>     use.
>>>     >>>
>>>     >>>     > My usb device sending data at a rate of 409600 bytes/sec, and in host
>>>     >>>     > side application I tried to read 16384 bytes in one read. But the read
>>>     >>>     > size returning is always  4095
>>>     >>>
>>>     >>>     The tty layer is limiting you, just keep reading in a loop until you
>>>     >>>     run out of data, you should not ever expect to read a specific number of
>>>     >>>     bytes from a tty device at a time, the read call will tell you the
>>>     >>>     number that was read properly.
>>>     >>>
>>>     >>>     thanks,
>>>     >>>
>>>     >>>     greg k-h
>>>     >>>
>>>     >>>
>>>     >>
>>>
>>>
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux