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

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

 



Hi,

I am stuck with the above issue,
I have some doubts regarding USB - Generic driver
1. Could you please explain me why USB - Generic driver is slow ?
2. Now I am try to study USB - Generic driver implementation , I am
confused with the function usb_serial_generic_read_bulk_callback() ,
could you please tell me from where this function is calling ?
3. If you have any detailed doc regarding the implementation of USB -
Generic serial driver, Please send to me,

Regards,
Arun



On Thu, Aug 6, 2015 at 3:42 PM, arun k <arunkarunakaran08@xxxxxxxxx> 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 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.
>
>>> 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