You are here

Guidelines for Mobile network performance issue cause analysis



Hardware list

Mobile Phones
The mobile probe runs on rooted Android devices. It has been tested on Anrdoid 4.2.2 or later devices. Also the unmodified YouTube application may be used if we want to perform root cause analysis on YouTube videos.

Access Point/Router
The phones connect to the internet through a wireless access point, this should be a linux-based access-point where root access is possible. In our setup we use Netgear WNDR3800 running openWRT OS. 

Media/Content Server
Our approach can work with both YouTube and custom video servers. In case of a customised video server a linux-based machine that supports Apache/2.4.7 or higher is required. 

A linux-based machine that supports running mongoDB and the mPlane reference implementation is adequate. Enough storage should be provided to store the measurements (depending on the demonstration size). The Repository can be co-hosted with the media-server. 

A linux-based machine that supports running the mPlane reference implementation and Java (Weka) is adequate. The Reasoner can be co-hosted with the Repository and/or the media-server. 

A linux-based machine that supports a web-server is adequate. The visualization machine can be co-hosted with the other servers above.


Software list




Software dependency

  •     Mobile Probe: rooted Android device.
  •     Router Probe: AR71xx based router running OpenWRT with ip tool and Python 2.7 installed. If a router with different architecture is used, compatible Tsat and Python binaries should be provided.
  •     Server Probe: Linux OS with ip tool and Python 2.7 with pycurl library installed.
  •     All probes should have connectivity with the Repository.
  •     Video Server: Apache/2.4.7 or newer. All videos from should be previously downloaded in the server’s public directory.
  •     Repository: MongoDB and node.js with modules “express”, “zlib”, “util”, “events” installed.
  •     Reasoner: The dependencies for the fault simulation component can be found in The machine learning component requires Java 1.7 or later and Weka 3.6.13.


Software installation

  •     Install the Mobile Probe following the instructions in
  •     Install the Router Probe by extracting the router-probe.tar.gz in the router's local file system change to the directory with the extracted files and execute the provided install script (
  •     Install the Server Probe by extracting the server-probe.tar.gz in the server's local file system, change to the directory with the extracted files and execute the provided install script (
  •     The repository installation script (repository_node.js) needs to be run with the following command node repository_node.js.
  •     The reasoner script ( is controlled automatically and does not require installation.
  •     Install the reasoner as describd here (

Software configuration

  •     The global variable "REPO_URL" in the "" scripts which are included in the Mobile and Router Probes tarballs should be changed to point to the Repository URL or IP address.


  • specific configuration


  • specific configuration


Step-by-step walkthrough


Warmup: Launching the probes

  •     The mobile device should be connected to the router’s wireless network and a DSL or direct link to the video server should be available to provide access to the video content.
  •     Launch the Router/Server Probe as root by running ./ in both devices. After the dependency checks have finished the probes will start to register and send hardware and network metrics to the repository.
  •     Launch the Mobile Probe and select the “Video Server URL” option from the menu. Enter the URL or the IP address of the video server including the trailing “/”. If this is left empty, the default option is “”.

Trigger: Simulating a fault

Observe: Video session QoE and root cause analysis

  •     The reasoner automatically evaluates the QoE of the new video session and illustrates the video timestamp along with the estimated QoE and the predicted impairment.
  •     The reasoner's output can be seen with an HTTP GET to "http://<reasoner.IP>/sessions"