IOIO data throughput rate and latency

255 views
Skip to first unread message

dain

unread,
May 10, 2011, 7:24:53 AM5/10/11
to ioio-users
Hey,

first of all congratulations for this project, great idea :)

The question I couldn`t find answer to with some Googling is the
detailed specs for data throughput of the board.

I have a few possible sound related ideas with it, but wondering if
the USB and processor could handle 24bit / 96KHz audio streamed with
good latency between the phone and the board?

Thanks in advance,
dain

Ytai

unread,
May 10, 2011, 2:28:35 PM5/10/11
to ioio-...@googlegroups.com
We have measured an effective throughput of about 300KB/sec.
Latency is normally in the range of 3-5ms one-way, although this depends on the communication load.
24bit = 3B * 96KHz * 2 ch ~= 600KB/sec, which seems above what IOIO currently supports, but perhaps there are some optimizations possible.
Other than that, you would probably need some firmware for your specific protocol.

dain - Daniel Demmel

unread,
May 10, 2011, 5:46:59 PM5/10/11
to ioio-...@googlegroups.com
Thanks much for the precise answer, in worst case 24/44.1 should still be fine then, which is decent enough quality!

3-5ms latency also sounds like a really good place to start from, even if it gets a bit more under heavy load it could still be comparable to latencies on the desktop.

Do you perhaps know the ballpark latency difference if it`s running around full 300KB/s?

> --
> You received this message because you are subscribed to the Google Groups "ioio-users" group.
> To post to this group, send email to ioio-...@googlegroups.com.
> To unsubscribe from this group, send email to ioio-users+...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/ioio-users?hl=en.

Ytai Ben-Tsvi

unread,
May 10, 2011, 5:53:51 PM5/10/11
to ioio-...@googlegroups.com, mis...@google.com
I don't remember exactly, perhaps Misha does (cc'ed)
Misha wrote the latency tests. What I can suggest is that you download the source code. The latency tester app one half that runs on the IOIO and another half that runs on the Android device, and it should give you some reference numbers. You can also play around with this test.
Only thing is that the developer docs are a little stale, so if you want to go down that route, let me know and I'll try to help.

Ytai.

Kev971

unread,
May 27, 2012, 10:59:18 AM5/27/12
to ioio-...@googlegroups.com, mis...@google.com
Hey,

I'm working on IOIO for my master project.

In order to use a real-time application, I really need to know the exact latency and throughput between the IOIO board and the device. I have tried with the Latency Tester but the code seems to be deprecated. For example, the function "createConnectionDynamically()" on line 275 and 280 has been removed from the class IOIOFactory. Nevertheless, I took the old source code and added it but the application doesn't work when I test.

What can I do to avoid this problem ?

Thank you in advance.

Le mercredi 11 mai 2011 07:23:51 UTC+9:30, Ytai a écrit :
I don't remember exactly, perhaps Misha does (cc'ed)
Misha wrote the latency tests. What I can suggest is that you download the source code. The latency tester app one half that runs on the IOIO and another half that runs on the Android device, and it should give you some reference numbers. You can also play around with this test.
Only thing is that the developer docs are a little stale, so if you want to go down that route, let me know and I'll try to help.

Ytai.

On Wed, May 11, 2011 at 12:46 AM, dain - Daniel Demmel <dain...@gmail.com> wrote:
Thanks much for the precise answer, in worst case 24/44.1 should still be fine then, which is decent enough quality!

3-5ms latency also sounds like a really good place to start from, even if it gets a bit more under heavy load it could still be comparable to latencies on the desktop.

Do you perhaps know the ballpark latency difference if it`s running around full 300KB/s?

On 10 May 2011, at 20:28, Ytai wrote:

> We have measured an effective throughput of about 300KB/sec.
> Latency is normally in the range of 3-5ms one-way, although this depends on the communication load.
> 24bit = 3B * 96KHz * 2 ch ~= 600KB/sec, which seems above what IOIO currently supports, but perhaps there are some optimizations possible.
> Other than that, you would probably need some firmware for your specific protocol.
>
> --
> You received this message because you are subscribed to the Google Groups "ioio-users" group.
> To post to this group, send email to ioio-...@googlegroups.com.
> To unsubscribe from this group, send email to ioio-users+unsubscribe@googlegroups.com.

> For more options, visit this group at http://groups.google.com/group/ioio-users?hl=en.

--
You received this message because you are subscribed to the Google Groups "ioio-users" group.
To post to this group, send email to ioio-...@googlegroups.com.
To unsubscribe from this group, send email to ioio-users+unsubscribe@googlegroups.com.

Misha Seltzer

unread,
May 27, 2012, 11:31:11 AM5/27/12
to Kev971, ioio-...@googlegroups.com
Hey,

Yes, So.. the code for the latency tester was written long time ago. actually during the development of the IOIO itself, thus i'm not surprised it has "rotten".
If you want to revive the test code - it'll be great, but meanwhile here are the results from the last time the code ran:
"""
Here are the results:
Upload (from IOIO to Android): 1.5 MB/s
Download (from Android to IOIO): 1.5 MB/s
Both ways (IOIO sends 2KB to Android, and waits for them back. Does it until total of 2MB are transfered there, and back): 0.5MB/s
Latency (round trip of a 1 byte): 5ms for my Nexus one, (3-4ms for emulator).
Latency error (I test latency 2000 times, the average is the latency): +-7ms for my Nexus one, (8-9ms for the emulator).
Fastest/Slowest round trip (on N1): 3ms/17ms
Percentiles (on N1) from slowest to fastest: (For the emulator it looks pretty much the same, but with 3-4 in the middle, and 4-5/2-3 on the edges.)
6(5%) 5(10%) 5(20%), 5(80%), 5(90%) 4(95%)

Conclusions:
1) We don't have to ever worry about throughput. 1.5MB/s is more than enough!
2) We do have to worry about latency, but not about it's stability. We can safely say that 5ms latency is what you can expect! (error-rate is too low).
"""
Hope it answers your question for now..
--
Misha

Ytai Ben-Tsvi

unread,
May 27, 2012, 6:42:59 PM5/27/12
to ioio-...@googlegroups.com, Kev971
IIRC, last I checked the figures were a bit lower than that. I'll probably revive the latency test soon, to use the latest infrastructure and will re-run the tests.
With OpenAccessory, you can expect <1ms latency with very low jitter.

To unsubscribe from this group, send email to ioio-users+...@googlegroups.com.

Kévin Tabar

unread,
May 27, 2012, 9:22:37 PM5/27/12
to Ytai Ben-Tsvi, ioio-...@googlegroups.com
Hey,

Given the short period to implement my application, I'll start by taking the Misha's results. But as soon as the new version of the tester is available, I'll use it. 

Thank you for your answers. 


2012/5/28 Ytai Ben-Tsvi <yta...@gmail.com>



--
Kévin Tabar


Ytai Ben-Tsvi

unread,
May 27, 2012, 11:54:44 PM5/27/12
to Kévin Tabar, ioio-...@googlegroups.com
Kevin, what are your requirements? I think Misha's throughput figures are a little optimistic and latency figures a bit pessimistic if you consider OpenAccessory as an option.
Reply all
Reply to author
Forward
0 new messages