Stephen Fry

"Education is the sum of what students teach each other in between lectures and seminars. " - Stephen Fry

Wednesday, 25 July 2012

Another Day, Another Andriod Phone - Pt 4.2

My current aim is to get Iperf running on an Android phone so that I can collect "accurate" network data to compare to the network data produced by Signpost Demo Application that I'm currently trying to test.

The problem is that I can't get the Iperf for Android application to run on any of the available android phones. I have also tried SSHing into the phone and running Iperf, this also did not work.

I need to get Iperf working on android to collect the data for comparison to data produced by the demo code. The back up plan will be to write my own application to collect the required network data, but I would like to have Iperf working so that I can test my own application.

If anyone has suggestions of tools to collect network data like bandwidth, latency, goodput and jitter, that work on linux and android using a client server architecture, then comment below.

So, I've got my hands on yet another android phone, I think this is phone number 6 or something like that. It is a HTC Magic, that is currently not rooted. I boot it up, get it going and download the Iperf for Android application and ...


.... it still will not work

So, I do some research and I come across another application that claims to also act as an Iperf cleint, this one is called Aperf. I install it on two different android phones, test and ...


.... it still will not work

Repeating the tests, changing Wi-Fi networks and finally it works, The following results are from the Iperf server

[ ID] Interval       Transfer     Bandwidth

[  4] local <server> port 5001 connected with <client_1> port 58204
[  4]  0.0- 8.9 sec  30.0 KBytes  27.6 Kbits/sec
[  5] local <server> port 5001 connected with <client_2> port 37831
[  5]  0.0- 6.0 sec  47.0 KBytes  64.3 Kbits/sec
[  4] local <server> port 5001 connected with <client_1> port 43876
[  4]  0.0- 6.6 sec   132 KBytes   164 Kbits/sec
[  5] local <server> port 5001 connected with <client_2> port 56253
[  5]  0.0- 6.6 sec   400 KBytes   496 Kbits/sec
[  4] local <server> port 5001 connected with <client_1> port 55373
[  4]  0.0- 6.5 sec   103 KBytes   131 Kbits/sec
[  5] local <server> port 5001 connected with <client_2> port 50778
[  5]  0.0- 8.6 sec   697 KBytes   662 Kbits/sec
[  4] local <server> port 5001 connected with <client_1> port 42511
[  4]  0.0- 5.1 sec  59.0 KBytes  94.3 Kbits/sec
[  5] local <server> port 5001 connected with <client_2> port 42474
[  5]  0.0- 5.9 sec   386 KBytes   539 Kbits/sec
[  4] local <server> port 5001 connected with <client_1> port 38663
[  4]  0.0- 8.6 sec  35.0 KBytes  33.3 Kbits/sec
[  5] local <server> port 5001 connected with <client_2> port 38036
[  5]  0.0- 8.2 sec   332 KBytes   331 Kbits/sec

The information above dose not show the complete picture. This data was collected from the server, in each case the client has only transmitted data for 5 seconds, this means that the bandwidth values above as incorrect. To calculate the correct bandwidth values I need to take amount of data transferred and divide by 5 seconds.

The client dose not seem to output any data except that required to calculate bandwidth. Using UDP instead of TCP dose not seem to allow me to collect any more information.

Ironically the network statistics collected by the Signpost diagnosis android app are latency, goodput and jitter but the only network statistics that I am able to collect is bandwidth.

I do not know where to go forward from here, I need accurate network statistics between a android client and Linux server so I can test the code. I could write my own application to collect the data, but then I will have the same problem again as I need accurate network statistics to check my application is working correctly

Any suggestions ??

No comments:

Post a Comment