Iperf-ios - iPerf 3 library and app for iOS

Overview

iPerf iOS Build Status

Run an iPerf3 client on your iPhone or iPad, including reverse mode and multiple stream selection:

Screenshot

Download

Download on the App Store.

Why?

This UniFi forum thread explains there are quite a few iPerf 3 apps (like iPerf, HE.NET, Fleet and WifiPerfEndPoint) out there but:

  • none of them use a recent iPerf 3 codebase which includes a fix to make results more reliable
  • most of them are pretty crashy
  • few of them support server mode, which can be leveraged to query a bunch of iOS devices from a wired computer when testing across a wide array of clients

What you should expect from this new iPerf app:

  • tiny: The app is only 126 KB.
  • modern: It is based on iPerf 3.6.
  • stable: Albeit a new project, it does work, and the aim is to write tests for everything.
  • fast: No memory leaks, CPU mostly doing system calls instead of app code, and the bandwidth test is in a high priority background thread, with another thread for the UI.
  • simple: Get straight to iPerf parameters.
  • libre: Use, study. change and share
  • copyleft: with everyone, always.

Testing

Join the beta program and test the latest version before App Store release, by opening this TestFlight link. Leave feedback on the UniFi forum thread, as an issue on GitHub or over e-mail from within the TestFlight app.

The App Store release milestone tracks all issues blocking it.

Contributing

Pull requests and opened issues are welcomed heartily. Documenting issues is also needed, feel free to pick one up. Translations and app / icon design contributions are welcome too!

To upgrade iPerf, edit and run sync.sh to pull the latest changes from upstream into the app.

Travis CI is set up to build the app continuously and run tests.

Wishlist

These should eventually be tracked as issues:

  • See open issues.
  • Add a 'Cancel' button.
  • Graphs and progress bar.
  • Indefinite test duration, stop when confidence is high enough.
  • Nicer UI with localization.
  • Server mode with UPnP to allow external access.
  • Public iPerf3 servers.
  • Report lost packets and stability.
  • Scan LAN for iPerf servers.
  • Combined sending + reception test.
  • Latency test.
  • Switch unit from "Mbits/s" to "MB/s" when tapping on the number.
  • Ship to the App Store.
  • Public database of results by device.
  • Guide to run a server.
  • macOS version.
  • Parse iOS Wi-Fi logs to diagnose roaming and connectivity issues.
  • Suggest expected speed from device database (number of antennas, 2.4 GHz and 5 GHz tests).
  • Crash and error reporting.
  • UDP test.
Comments
  • sendfile crashes

    sendfile crashes

    Crashing with SIGSYS on r = sendfile(fromfd, tofd, offset, &sent, NULL, 0);, do older versions of iOS support sendfile? There may be a way to detect that.

    bug 
    opened by ndfred 4
  • UDP Failure

    UDP Failure

    Attemping to set the protocol to UDP via the method -

    set_protocol(test , 2);

    Sets all the test protocol items correctly for UDP (analysed through breakpoints). But socket writing always fails, and sometimes mentions No such File or directory exists?

    wontfix 
    opened by Farizzle 3
  • Unable to connect to host message when using IPv4 address

    Unable to connect to host message when using IPv4 address

    When using an ipv4 address as opposed to hostname I receive the message „unable to connect to server“. The resolvable hostname works fine the server has both an ipv4 and IPv6 address - the IPv6 address works too

    bug 
    opened by salamander-in-steinachtal 2
  • issue to run application in xcode

    issue to run application in xcode

    When i trying this code in xcode a code error IPFHelpViewController.h file is not found. how to resolve this error? and how to use c file in objective c?

    wontfix 
    opened by animeshagrawal25 2
  • Warning when presenting an error

    Warning when presenting an error

    This is what the logs look like:

    Warning: Attempt to present <UIAlertController: 0x7fb9aa818e00>  on <IPFTestRunnerViewController: 0x7fb9a9f10fa0> which is already presenting (null)`
    
    bug 
    opened by ndfred 2
  • Look into licenses

    Look into licenses

    Right now we only have the iperf license in the repo, look at it to see if it is compatible with App Store release and can cover the ObjC code as well, or pick another license.

    opened by ndfred 2
  • running test doesn't seem to do anything

    running test doesn't seem to do anything

    I am using an Ipad pro running 14.4.1, connecting to a server running on a mac.

    Transmit mode upload, streams 1, test duration 10s.

    I click start and I get "unknown error 114 running the test". I try again and get the same error. I try again and this time no error.. I just get "..." displayed below.

    I wait 10 seconds and nothing happens. I click "Stop", nothing happens.

    The server logs indicate it's connecting, but almost nothing is sent:

    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size:  128 KByte (default)
    ------------------------------------------------------------
    [  4] local 192.168.1.6 port 5001 connected with 192.168.1.123 port 52998 (peer 112.28467.27250-unk)
    [  5] local 192.168.1.6 port 5001 connected with 192.168.1.123 port 52999 (peer 98.30308.30839-unk)
    [  6] local 192.168.1.6 port 5001 connected with 192.168.1.123 port 53000
    [ ID] Interval       Transfer     Bandwidth
    [  4]  0.0-62.4 sec  37.0 Bytes  4.75 bits/sec
    [  5]  0.0-62.4 sec  37.0 Bytes  4.75 bits/sec
    [  6]  0.0-62.4 sec  37.0 Bytes  4.75 bits/sec
    [SUM]  0.0-62.4 sec   111 Bytes  14.2 bits/sec
    

    I also tried download, and I got error 114 6 times, and then the "..."

    opened by pfalstad 1
  • Error while integrating iperf 3.0 files

    Error while integrating iperf 3.0 files

    Screenshot 2020-10-22 at 2 41 49 PM Hi,

    I am integrating iperf in framework I am developing in objective c for iOS and macOS. After copying source files of iperf3.0 (c files), I am getting error on iOS/macOS system files like NSObject, AppKit.h etc. I am not sure what I am missing. But iperf files showing error for arm64 like in screenshot attached.

    Universal Framework Minimum Target: iOS: 11.0 macOS: 10.11

    Shared code for iOS and macOS framework developed mainly in Objective C

    wontfix 
    opened by ajsagar92 1
  • Add download link to App Store

    Add download link to App Store

    I saw a link from the iOS App Store to this Github page, but didn't see a link from this page to the iOS App Store. Not sure if there is any license issue from preventing this...

    opened by loganmarchione 1
  • Produce an icon

    Produce an icon

    Latest proposal:

    • take Apple's Wifi icon
    • render it using the olympic colors, one per stripe
    • alternatively render the full circle
    • in the app, fill the rings as the tests progress

    Look at the Tokyo 2020 logos for inspiration (see the color scheme too).

    enhancement 
    opened by ndfred 1
  • Allow interrupting tests

    Allow interrupting tests

    Right now you pick a test duration, hit start and wait until the results come back. I don't know if the protocol supports it, but starting the test and stopping it when you are happy with the results is a better user experience.

    enhancement 
    opened by ndfred 1
  • Feature: Switch between IPv4 and IPv6

    Feature: Switch between IPv4 and IPv6

    As I mostly use the app to compare the speeds of the mobile operators I use, it would be really time-saving to have a option to switch between a test based von IPv4 and IPv6 as a transport protocol. Of course this only makes sense as long as a Hostname with IPv4 and IPv6 address is used for the test. The CLI-based clients have a similar option while using the -4 and -6 flags and drop a error if the given server does not support IPv4 or IPv6 depending on the given flag.

    opened by MrXermon 0
  • Add Shortcuts actions to configure iperf, start and stop a test and to get the test results

    Add Shortcuts actions to configure iperf, start and stop a test and to get the test results

    It would be great to be able to use the Shortcuts app to control iperf. It would then be possible to run tests automatically. For example, you could run a test daily or you could run a test when you connect to a new network or based on some other trigger like that.

    opened by AngelEzquerra 0
  • Consider tweaking more options

    Consider tweaking more options

    A good iPerf testing article that goes into the different advanced options. Window size and UDP might be interesting to surface in the UI.

    Jitter recommendations:

    Ideally, jitter should be below 30ms. Packet loss should be no more than 1%, and network latency shouldn’t exceed 150 ms one-way (300 ms return).

    Test run with 20 Mbits/s (but unidirectional and single stream) to match a FaceTime connection:

    % iperf3 -uc 192.168.6.11 -b 20M
    Connecting to host 192.168.6.11, port 5201 [ 5] local 192.168.6.60 port 53073 connected to 192.168.6.11 port 5201 [ ID] Interval Transfer Bitrate Total Datagrams [ 5] 0.00-1.00 sec 2.38 MBytes 20.0 Mbits/sec 1726
    [ 5] 1.00-2.00 sec 2.38 MBytes 20.0 Mbits/sec 1726
    [ 5] 2.00-3.00 sec 2.38 MBytes 20.0 Mbits/sec 1727
    [ 5] 3.00-4.00 sec 2.38 MBytes 20.0 Mbits/sec 1726
    [ 5] 4.00-5.00 sec 2.38 MBytes 20.0 Mbits/sec 1727
    [ 5] 5.00-6.00 sec 2.38 MBytes 20.0 Mbits/sec 1726
    [ 5] 6.00-7.00 sec 2.38 MBytes 20.0 Mbits/sec 1727
    [ 5] 7.00-8.00 sec 2.38 MBytes 20.0 Mbits/sec 1726
    [ 5] 8.00-9.00 sec 2.38 MBytes 20.0 Mbits/sec 1727
    [ 5] 9.00-10.00 sec 2.38 MBytes 20.0 Mbits/sec 1726


    [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-10.00 sec 23.8 MBytes 20.0 Mbits/sec 0.000 ms 0/17264 (0%) sender [ 5] 0.00-10.00 sec 23.8 MBytes 20.0 Mbits/sec 0.210 ms 0/17264 (0%) receiver

    iperf Done.

    enhancement 
    opened by ndfred 0
  • Surface herror / perror when iPerf fails

    Surface herror / perror when iPerf fails

    Bugs like #46 and #47 lack diagnostic data that would help understand why tests fail or the app fails to connect to the server, let's see if we can surface herror / perror to give people full context

    enhancement 
    opened by ndfred 0
Owner
Frédéric Sagnes
Frédéric Sagnes
AppLove - View iOS app reviews in multiple selected territories with translation option.

App Love Note: Swift Version 2.2 currently, will update to Swift 3/XCode 8 after cocoapods are updated to Swift 3. Features View iOS Customer App Revi

Woodie Dovich 52 Nov 19, 2022
IOS - Unofficial app for Swift Evolution

EVOlution - iOS The goal of this project is for the version 1.0 was: bring to iOS the experience provided by Swift Evolution website. Now we are shift

EVOlution App 235 Dec 19, 2022
CodeBucket is the best way to browse and maintain your Bitbucket repositories on any iPhone, iPod Touch, and iPad device!

CodeBucket Description CodeBucket is the best way to browse and maintain your Bitbucket repositories on any iPhone, iPod Touch, and iPad device! Keep

Dillon Buchanan 196 Dec 22, 2022
A native Jellyfin client for Apple platforms (iOS, macOS and tvOS)

Jellyfin Swift (working title) is a native Swift app targeting all modern Apple devices (iOS, ipadOS, tvOS and macOS).

Julien Machiels 3 Jun 7, 2021
BaseConverter-iOS - The fast and easy way to convert numbers with tons of possibilities!

BaseConverter-iOS The fast and easy way to convert numbers with tons of possibilities! With BaseConverter, convert your numbers from and to: Decimal B

Groupe MINASTE 3 Feb 8, 2022
Dash-iOS - Dash gives your iPad and iPhone instant offline access to 200+ API documentation sets

Discontinued Dash for iOS was discontinued. Please check out Dash for macOS instead. Dash for iOS Dash gives your iPad and iPhone instant offline acce

Bogdan Popescu 7.1k Dec 29, 2022
Charter - A Swift mailing list client for iPhone and iPad

Due to costs and lack of interest, I’ve had to take down the Charter service. If you’re interested in running your own copy, get in touch and I can se

Matthew Palmer 526 Dec 24, 2022
DevTool - A simple UI and powerful Mac OS application, Such as JSON-Formatting tool, JSON-to-model tool, AppIcon generator, Network-Request tool...

?? ?? ?? A simple UI and powerful Mac OS application. It is a collection of tools commonly used in my development work. Such as JSON-Formatting tool, JSON-to-model tool, AppIcon generator, Network-Request tool...

渠晓友 3 Dec 21, 2022
Buglife-iOS - Awesome bug reporting for iOS apps

Buglife is an awesome bug reporting SDK & web platform for iOS apps. Here's how it works: User takes a screenshot, or stops screen recording User anno

Buglife 498 Dec 17, 2022
Awesome-ML - Discover, download, compile & launch different image processing & style transfer CoreML models on iOS.

⚠️ ⚠️ ⚠️ IMPORTANT: I'm no longer maintaining Awesome-ML. Awesome ML is an iOS app that is made to demonstrate different image processing CoreML model

eugene 171 Nov 8, 2022
RAMAnimatedTabBarController is a Swift UI module library for adding animation to iOS tabbar items and icons. iOS library made by @Ramotion

ANIMATED TAB BAR Swift UI module library for adding animation to iOS tabbar items and icons.

Ramotion 11k Jan 8, 2023
Numpy-like library in swift. (Multi-dimensional Array, ndarray, matrix and vector library)

Matft Matft is Numpy-like library in Swift. Function name and usage is similar to Numpy. Matft Feature & Usage Declaration MfArray MfType Subscription

null 80 Dec 21, 2022
Simple library to detect motion type (walking, running, automotive) and count users steps. This library will make motion detection much more easily.

SOMotionDetector Simple library to detect motion for iOS by arturdev . Based on location updates and acceleration. ###Requierments iOS > 6.0 Compatibl

Artur  Mkrtchyan 1.1k Nov 25, 2022
Apphud SDK is a lightweight open-source Swift library to manage auto-renewable subscriptions and other in-app purchases in your iOS app.

Apphud SDK Apphud SDK is a lightweight open-source Swift library to manage auto-renewable subscriptions and other in-app purchases in your iOS app. No

Apphud 143 Dec 16, 2022
FCLAuthSwift is a Swift library for the Flow Client Library (FCL) that enables Flow wallet authentication on iOS devices.

FCLAuthSwift is a Swift library for the Flow Client Library (FCL) that enables Flow wallet authentication on iOS devices. Demo The demo a

Zed 3 May 2, 2022
This library for animating text. Developed with SwiftUI. This library supports iOS/macOS.

AnimateText This library for animating text. Developed with SwiftUI. This library supports iOS/macOS. Screenshot AnimateText.mp4 Example https://fabul

jasu 123 Jan 2, 2023
SwiftCANLib is a library used to process Controller Area Network (CAN) frames utilizing the Linux kernel open source library SOCKETCAN.

SwiftCANLib SwiftCANLib is a library used to process Controller Area Network (CAN) frames utilizing the Linux kernel open source library SOCKETCAN. Th

Tim Wise 4 Oct 25, 2021
Cross-Platform, Protocol-Oriented Programming base library to complement the Swift Standard Library. (Pure Swift, Supports Linux)

SwiftFoundation Cross-Platform, Protocol-Oriented Programming base library to complement the Swift Standard Library. Goals Provide a cross-platform in

null 620 Oct 11, 2022
SwiftUI-Text-Animation-Library - Text animation library for SwiftUI

⚠️ This repository is under construction. SwiftUI Text Animation Library Make yo

null 28 Jan 8, 2023