How to increase transfer capacity

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 | Next >

How to increase transfer capacity

by Juergen Beisert-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi list,

this question might be off topic here, but perhaps someone can give me a hint
where to get the right information how to do it.

I'm using an FTDI FT245MB parallel to USB converter in my small home brewed
logic analyzer application. This device will be visible at my host as a
serial device. I can work with it in this way, receiving measured data and
sending control data. The FTDI245 is a USB full speed device with a 64 byte
FIFO at the USB side. AFAIK this device will be polled 1000 times a second,
so I can transfer up to 64000 chars per second. Is there any way to increase
this transfer capacity to 200,000 or 300,000 chars a second, e.g. to force
the host controller to poll it more than only 1000 times a second (if there
is no other USB device than my FT245MB connected)? Is there any mechanism in
the kernel or libusb?

Any idea is welcome.

Thanks in advance,
Juergen

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Peter Stuge-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Juergen Beisert wrote:
> Is there any way to increase this transfer capacity to 200,000 or
> 300,000 chars a second, e.g. to force the host controller to poll
> it more than only 1000 times a second (if there is no other USB
> device than my FT245MB connected)?

No.


> Is there any mechanism in the kernel or libusb?

Software can do nothing here, this is a hardware limit. Suggest you
get a better USB chip.


//Peter

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Michael Plante :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I think you can get 19x that, because that's how many 64-byte bulk packets
occur in each ms frame.  However, there are some caveats with FTDI related
to the latency timer and how much data the device on the other side sends
(they have some app notes on this, and there's usually a "send immediate"
pin).  I'm not sure about that particular FTDI chip, but you should note
that on at least some of them, only 62 of the 64 bytes are "user" data.  You
may also not get that much since libftdi currently uses libusb 0.1.

Michael



-----Original Message-----
From: Juergen Beisert [mailto:juergen@...]
Sent: Friday, October 16, 2009 10:19 AM
To: libusb-devel@...
Subject: [Libusb-devel] How to increase transfer capacity


Hi list,

this question might be off topic here, but perhaps someone can give me a
hint
where to get the right information how to do it.

I'm using an FTDI FT245MB parallel to USB converter in my small home brewed
logic analyzer application. This device will be visible at my host as a
serial device. I can work with it in this way, receiving measured data and
sending control data. The FTDI245 is a USB full speed device with a 64 byte
FIFO at the USB side. AFAIK this device will be polled 1000 times a second,
so I can transfer up to 64000 chars per second. Is there any way to increase
this transfer capacity to 200,000 or 300,000 chars a second, e.g. to force
the host controller to poll it more than only 1000 times a second (if there
is no other USB device than my FT245MB connected)? Is there any mechanism in
the kernel or libusb?

Any idea is welcome.

Thanks in advance,
Juergen



------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Alan Stern :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 16 Oct 2009, Peter Stuge wrote:

> Juergen Beisert wrote:
> > Is there any way to increase this transfer capacity to 200,000 or
> > 300,000 chars a second, e.g. to force the host controller to poll
> > it more than only 1000 times a second (if there is no other USB
> > device than my FT245MB connected)?
>
> No.
>
>
> > Is there any mechanism in the kernel or libusb?
>
> Software can do nothing here, this is a hardware limit. Suggest you
> get a better USB chip.

These answers are not necessarily correct.  It depends on the type of
transfer used by the device.

I'm not familiar with how the FT245MB works.  If it uses interrupt
transfers then there is no way to send or receive more than one packet
per frame.

But if it uses bulk transfers then it is possible to send or receive up
to 19 packets per frame, depending on the device's capabilities..

Alan Stern



------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Jan Wilmans :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hi,

I know the FT245 uses bulk transfers and depending on the type (BM or
R) has a 384 or 256 byte buffer.
I have never done measurement, but I think it should at least be
possible to get a rate of 1000x256 bytes per second.

I know on windows the usb polling rate can be changed but I'm not sure
to what usb devices this applies
(see also http://www.codinghorror.com/blog/archives/000832.html)

It might be that on windows the usb polling rate defaults to 250ms for
mouses only, i'm not sure.

Anyway, as said anything below 1ms will be a problem because of
hardware limitations.

On a final note, I think the latency timer of the FT245 can be set to
1ms (or maybe 2ms was the minimal setting)
_but_ if the buffer is full the device not wait at all and send the
buffer right away.

Greetings,

Jan


2009/10/16 Alan Stern <stern@...>:

> On Fri, 16 Oct 2009, Peter Stuge wrote:
>
>> Juergen Beisert wrote:
>> > Is there any way to increase this transfer capacity to 200,000 or
>> > 300,000 chars a second, e.g. to force the host controller to poll
>> > it more than only 1000 times a second (if there is no other USB
>> > device than my FT245MB connected)?
>>
>> No.
>>
>>
>> > Is there any mechanism in the kernel or libusb?
>>
>> Software can do nothing here, this is a hardware limit. Suggest you
>> get a better USB chip.
>
> These answers are not necessarily correct.  It depends on the type of
> transfer used by the device.
>
> I'm not familiar with how the FT245MB works.  If it uses interrupt
> transfers then there is no way to send or receive more than one packet
> per frame.
>
> But if it uses bulk transfers then it is possible to send or receive up
> to 19 packets per frame, depending on the device's capabilities..
>
> Alan Stern
>
>
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry(R) Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
> http://p.sf.net/sfu/devconference
> _______________________________________________
> Libusb-devel mailing list
> Libusb-devel@...
> https://lists.sourceforge.net/lists/listinfo/libusb-devel
>



--
Met vriendelijke groeten,

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Juergen Beisert-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Alan,

On Freitag, 16. Oktober 2009, Alan Stern wrote:

> On Fri, 16 Oct 2009, Peter Stuge wrote:
> > Juergen Beisert wrote:
> > > Is there any way to increase this transfer capacity to 200,000 or
> > > 300,000 chars a second, e.g. to force the host controller to poll
> > > it more than only 1000 times a second (if there is no other USB
> > > device than my FT245MB connected)?
> >
> > No.
> >
> > > Is there any mechanism in the kernel or libusb?
> >
> > Software can do nothing here, this is a hardware limit. Suggest you
> > get a better USB chip.
>
> These answers are not necessarily correct.  It depends on the type of
> transfer used by the device.
>
> I'm not familiar with how the FT245MB works.  If it uses interrupt
> transfers then there is no way to send or receive more than one packet
> per frame.
>
> But if it uses bulk transfers then it is possible to send or receive up
> to 19 packets per frame, depending on the device's capabilities..

I don't know how the kernel driver handles data transfers. If I connect it to
my host, the kernel states:

[...]
usb 4-1: new full speed USB device using uhci_hcd and address 2
usb 4-1: configuration #1 chosen from 1 choice
usbcore: registered new driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbcore: registered new driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device
ftdi_sio 4-1:1.0: FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected FT232BM
usb 4-1: FTDI USB Serial Device converter now attached to ttyUSB0
usbcore: registered new driver ftdi_sio
drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver

This device occures as:

   /dev/ttyUSB0

A "lsusb -v" gives me:

[...]
Bus 004 Device 002: ID 0403:6001 Future Technology Devices International, Ltd 8-bit FIFO
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0403 Future Technology Devices International, Ltd
  idProduct          0x6001 8-bit FIFO
  bcdDevice            4.00
  iManufacturer           1 JBE
  iProduct                2 Logic Scanner
  iSerial                 3 01-01
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              2 Logic Scanner
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)
[...]

Regards,
Juergen

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Michael Plante :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

>> I know on windows the usb polling rate can be changed but I'm not sure
>> to what usb devices this applies
>> (see also http://www.codinghorror.com/blog/archives/000832.html)
>>
>> It might be that on windows the usb polling rate defaults to 250ms for
>> mouses only, i'm not sure.

That web page (well, I didn't read the comments) talks about Hz, not ms,
listing 125, 250, 500, and 1000 Hz.  That corresponds to a minimum of 1ms
(1000 Hz).


>> On a final note, I think the latency timer of the FT245 can be set to
>> 1ms (or maybe 2ms was the minimal setting)
>> _but_ if the buffer is full the device not wait at all and send the
>> buffer right away.

Yes, though there's also a buffer on the host side, and you have to get the
FTDI to think the entire send is done, unless your app is requesting only
that much data.  Wrt the latency timer, I've never had reliability with 1ms;
I wouldn't go below 3ms.  Maybe you can get better results?

Also, are you looking for throughput or low latency?



Michael



------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Peter Stuge-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Jan Wilmans wrote:
> > But if it uses bulk transfers then it is possible to send or receive up
> > to 19 packets per frame, depending on the device's capabilities..
>
> I know the FT245 uses bulk transfers and depending on the type (BM
> or R) has a 384 or 256 byte buffer.

..

> >> > Is there any way to increase this transfer capacity to 200,000
> >> > or 300,000 chars a second,

So this is possible..


> >> > e.g. to force the host controller to poll it more than only
> >> > 1000 times a second (if there is no other USB device than my
> >> > FT245MB connected)?
> >>
> >> No.

..but the frame rate will not increase, and depending on the speed
and width of the logic you want to be able to analyze, you may need
larger buffers still.


//Peter

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Alan Stern :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 16 Oct 2009, Juergen Beisert wrote:

> I don't know how the kernel driver handles data transfers. If I connect it to
> my host, the kernel states:
>
> [...]

> A "lsusb -v" gives me:
>
> [...]
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0

The two "Transfer Type" lines indicate that the device does use bulk
transfers.  However it may have limitations of its own that prevent it
from transferring more than one packet per frame.

Have you tried using it at a faster rate?

If you want to find out what's happening during a test, you can use
usbmon (see Documetation/usb/usbmon.txt in the kernel source).

Alan Stern



------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Juergen Beisert-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Freitag, 16. Oktober 2009, Michael Plante wrote:

> >> I know on windows the usb polling rate can be changed but I'm not sure
> >> to what usb devices this applies
> >> (see also http://www.codinghorror.com/blog/archives/000832.html)
> >>
> >> It might be that on windows the usb polling rate defaults to 250ms for
> >> mouses only, i'm not sure.
>
> That web page (well, I didn't read the comments) talks about Hz, not ms,
> listing 125, 250, 500, and 1000 Hz.  That corresponds to a minimum of 1ms
> (1000 Hz).
>
> >> On a final note, I think the latency timer of the FT245 can be set to
> >> 1ms (or maybe 2ms was the minimal setting)
> >> _but_ if the buffer is full the device not wait at all and send the
> >> buffer right away.
>
> Yes, though there's also a buffer on the host side, and you have to get the
> FTDI to think the entire send is done, unless your app is requesting only
> that much data.  Wrt the latency timer, I've never had reliability with
> 1ms; I wouldn't go below 3ms.  Maybe you can get better results?
>
> Also, are you looking for throughput or low latency?

Both. :-) I tried with "echo 1 > /sys/class/tty/ttyUSB?/device/latency_timer"
to avoid any skip of a transfer if the 64 byte FIFO is not already full. But
with this setting it also saturates to 64000 bytes per second, due to the
USB. That's why I'm asking, if there is a way to transfer more than one
packet per 1ms frame. But currently I do not understand how to trigger up to
19 packets per frame (that means the USB host sends 19 requests per frame to
the device if there is some data to read, right)? To do so, do I need a
special kernel driver or special libusb programming or...?

Juergen



------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Michael Plante :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

>> I tried with "echo 1 > /sys/class/tty/ttyUSB?/device/latency_timer"
>> to avoid any skip of a transfer if the 64 byte FIFO is not already full.

I'm not familiar with that option.  Is this project using ftdi-sio?  I had
been assuming otherwise...  There is a separate mailing list for that driver
in particular, and I don't think it uses libusb.


>> that means the USB host sends 19 requests per frame to
>> the device if there is some data to read, right

I don't think it can know if there's data to read until it sends the
request.  If you have a request that has not been scheduled, it will try to
schedule time.  USB is completely polled, so if the host doesn't look for
data, it never gets any.  If it looks and there isn't any, it doesn't get
any.


>> do I need a special kernel driver

If you're using libusb, I don't think so, but are you using libusb?


Michael




------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Peter Stuge-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Juergen Beisert wrote:
> how to trigger up to 19 packets per frame (that means the USB host
> sends 19 requests per frame to the device if there is some data to
> read, right)? To do so, do I need a special kernel driver or
> special libusb programming or...?

Make sure that there always are (preferably several) pending USB read
requests.

Note that libusb is exclusive to /dev/ttyUSB0. The former means the
driver is in userspace, the latter comes from a kernel driver.

You'll need to investigate programming the device more directly
rather than relying on usb-serial.

There's at least one library for ftdi, but AFAIU it is not in very
good shape.

Once you've made sure that there are always pending URBs there is not
much more to do on the host. You need to look to the hardware then.


//Peter

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Juergen Beisert-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Freitag, 16. Oktober 2009, Alan Stern wrote:

> On Fri, 16 Oct 2009, Juergen Beisert wrote:
> > I don't know how the kernel driver handles data transfers. If I connect
> > it to my host, the kernel states:
> >
> > [...]
> >
> > A "lsusb -v" gives me:
> >
> > [...]
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x81  EP 1 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x02  EP 2 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               0
>
> The two "Transfer Type" lines indicate that the device does use bulk
> transfers.  However it may have limitations of its own that prevent it
> from transferring more than one packet per frame.
>
> Have you tried using it at a faster rate?

Please tell me how I can do so, and I will try.

The FTDI FT245BM can be controlled via an external EEPROM. With this EEPROM I
can setup if the endpoints should be of type "isochronous". Could this
setting improve anything?

Thanks
Juergen

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Peter Stuge-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Juergen Beisert wrote:
> > Have you tried using it at a faster rate?
>
> Please tell me how I can do so, and I will try.

See other message. Make sure there are always URBs wanting to read
data.


> The FTDI FT245BM can be controlled via an external EEPROM. With
> this EEPROM I can setup if the endpoints should be of type
> "isochronous". Could this setting improve anything?

Isochronous has reliable latency, but not guaranteed delivery. It
does seem like a better fit for sampling data, but on the other hand
samples could be lost. (Not without the driver noticing though.)


//Peter

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Michael Plante :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

>> The FTDI FT245BM can be controlled via an external EEPROM. With this
EEPROM I
>> can setup if the endpoints should be of type "isochronous". Could this
>> setting improve anything?

Probably not, depending on your application.  Isochronous will speed things
up only if the bus is heavily utilized (starving bulk transfers), but is not
reliable.

Michael


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Juergen Beisert-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Freitag, 16. Oktober 2009, Michael Plante wrote:

> >> I tried with "echo 1 > /sys/class/tty/ttyUSB?/device/latency_timer"
> >> to avoid any skip of a transfer if the 64 byte FIFO is not already full.
>
> I'm not familiar with that option.  Is this project using ftdi-sio?  I had
> been assuming otherwise...  There is a separate mailing list for that
> driver in particular, and I don't think it uses libusb.
>
> >> that means the USB host sends 19 requests per frame to
> >> the device if there is some data to read, right
>
> I don't think it can know if there's data to read until it sends the
> request.  If you have a request that has not been scheduled, it will try to
> schedule time.  USB is completely polled, so if the host doesn't look for
> data, it never gets any.  If it looks and there isn't any, it doesn't get
> any.
>
> >> do I need a special kernel driver
>
> If you're using libusb, I don't think so, but are you using libusb?

Not yet. Currently I'm using the kernel driver that provides
the "/dev/ttyUSB?" device node. I'm asking to get an idea what the best way
is to improve the transfer capacitiy. As I understand now, with the libusb it
should be possible.

Thank you for the help
Juergen

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Juergen Beisert-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Freitag, 16. Oktober 2009, Peter Stuge wrote:

> Juergen Beisert wrote:
> > how to trigger up to 19 packets per frame (that means the USB host
> > sends 19 requests per frame to the device if there is some data to
> > read, right)? To do so, do I need a special kernel driver or
> > special libusb programming or...?
>
> Make sure that there always are (preferably several) pending USB read
> requests.
>
> Note that libusb is exclusive to /dev/ttyUSB0. The former means the
> driver is in userspace, the latter comes from a kernel driver.
>
> You'll need to investigate programming the device more directly
> rather than relying on usb-serial.
>
> There's at least one library for ftdi, but AFAIU it is not in very
> good shape.
>
> Once you've made sure that there are always pending URBs there is not
> much more to do on the host. You need to look to the hardware then.

That simply means more than one pending URB per frame means more than one data
transfer per frame? Sounds too easy. But it also sounds like a good point to
start...

Thank you very much.
Juergen

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Alan Stern :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 16 Oct 2009, Juergen Beisert wrote:

> > Have you tried using it at a faster rate?
>
> Please tell me how I can do so, and I will try.

Set the baud rate to a high value (larger than 640000) and connect to a
device that sends data as fast as possible.

> The FTDI FT245BM can be controlled via an external EEPROM. With this EEPROM I
> can setup if the endpoints should be of type "isochronous". Could this
> setting improve anything?

As the other people have mentioned, this would not be a good idea.

To work at higher speeds, you will have to stop using the kernel driver
and write your own custom libusb-based driver instead.  The kernel
driver does not use multiple asynchronous URBs, so it can't transfer
more than one packet per frame.

Alan Stern


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Michael Plante :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

>> > If you're using libusb, I don't think so, but are you using libusb?
>>
>> Not yet. Currently I'm using the kernel driver that provides
>> the "/dev/ttyUSB?" device node. I'm asking to get an idea what the best
way
>> is to improve the transfer capacitiy. As I understand now, with the
libusb it
>> should be possible.

I have not tried to get high BW through ttyUSB, so I couldn't tell you if
it's possible through that driver, but yes, it should be possible using the
libftdi/libusb-0.1 combination.  If you plan to use the asynchronous
configure option for libftdi (Linux only), don't use libusb-compat.  Steer
clear of the ftdi-official d2xx drivers, as they're buggy (Windows and Linux
versions) for all but the simplest situations.  If the hardware is still not
finalized, there are people here who strongly prefer other vendors' USB
chips, and they have more experience with USB than I do.

If you do use libftdi, you might consider subscribing here:

http://www.intra2net.com/en/developer/libftdi/mailinglist.php

Michael


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel

Re: How to increase transfer capacity

by Tim Roberts :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Juergen Beisert wrote:
> On Freitag, 16. Oktober 2009, Peter Stuge wrote:
>  
>> Make sure that there always are (preferably several) pending USB read
>> requests.
>>    
> That simply means more than one pending URB per frame means more than one data
> transfer per frame? Sounds too easy. But it also sounds like a good point to
> start...
>  

That's exactly right.  USB is a scheduled bus.  The host controller
driver lays out all of the transfers for an entire frame in advance,
then submits that layout to the hardware for execution.  If you have 5
bulk requests submitted when he's laying out the next frame, and there
is sufficient room available after handling isochronous and interrupt
pipes, then your 5 requests will all be scheduled during that frame.

--
Tim Roberts, timr@...
Providenza & Boekelheide, Inc.


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Libusb-devel mailing list
Libusb-devel@...
https://lists.sourceforge.net/lists/listinfo/libusb-devel
< Prev | 1 - 2 | Next >